小编Mik*_*ert的帖子

Jenkins声明性管道有条件的后期行动

我正在使用Jenkins声明性管道,并希望根据构建状态执行一些后期构建操作.

更准确地说,我想在构建状态发生变化时发送电子邮件(从成功到失败,或成功到不稳定或成功失败).

这是我的管道:

pipeline {
    agent none
    stages {
        stage('test') {
            agent any
            steps {                
                sh './tests.sh'
            }
        }
    }
    post {
        changed {
            // Send different emails depending on build status
            // Success       -> anything else
            // Anything else -> Success
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

jenkins jenkins-pipeline

7
推荐指数
1
解决办法
8863
查看次数

Apache Airflow - 如何在使用 TriggerDagRunOperator 触发的流中检索操作员外部的 dag_run 数据

我设置了两个 DAG,我们称第一个为 Orchestrator,第二个为 Worker。Orchestrator 的工作是从 API 检索列表,并针对此列表中的每个元素,使用一些参数触发工作 DAG。

我将两个工作流程分开的原因是我希望能够仅重播失败的“工作人员”工作流程(如果一个失败,我不想重播所有工作人员实例)。

我能够使事情正常进行,但现在我发现监控有多么困难,因为我的 task_id 对所有人来说都是相同的,所以我决定根据“协调器”工作流程从 API 检索的值来使用动态 task_id。

但是,我无法从运算符外部的 dag_run 对象检索值。基本上,我希望这个能够工作:

with models.DAG('specific_workflow', schedule_interval=None, default_args=default_dag_args) as dag:
    name = context['dag_run'].name
    hello_world = BashOperator(task_id='hello_{}'.format(name), bash_command="echo Hello {{ dag_run.conf.name }}", dag=dag)
    bye = BashOperator(task_id='bye_{}'.format(name), bash_command="echo Goodbye {{ dag_run.conf.name }}", dag=dag)

    hello_world >> bye
Run Code Online (Sandbox Code Playgroud)

但我无法定义这个“上下文”对象。但是,我可以从操作符(例如 PythonOperator 和 BashOperator)访问它。

是否可以在操作符之外检索 dag_run 对象?

airflow google-cloud-composer

5
推荐指数
1
解决办法
7403
查看次数