Conn_id не определен в Airflow JenkinsJobTriggerOperator - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь запустить работу в Дженкинсе, используя метку «Воздушный поток». Я попробовал следующее,

dag = DAG("test_jenkins", default_args=default_args, schedule_interval=None)

job_trigger = JenkinsJobTriggerOperator(
    dag=dag,
    task_id="trigger_job",
    job_name="generate-code-trigger",
    jenkins_connection_id="http://localhost:8080/"  # The connection must be configured first
)

def grab_artifact_from_jenkins(**context):
hook = JenkinsHook("http://localhost:8080/")
jenkins_server = hook.get_jenkins_server()
url = context['task_instance'].xcom_pull(task_ids='trigger_job')
url = url + "code-generator/pom.xml"  # Or any other artifact name
request = Request(url)
response = jenkins_server.jenkins_open(request)
return response  # We store the artifact content in a xcom variable for later use

artifact_grabber = PythonOperator(
    task_id='artifact_grabber',
    provide_context=True,
    python_callable=grab_artifact_from_jenkins,
    dag=dag)

artifact_grabber.set_upstream(job_trigger)

Но это дает мне ошибку,

The conn_id `http://localhost:8080/` isn't defined

Я впервые использую JenkinsJobTriggerOperator. Также нет никаких полезных примеров вокруг. Как я могу избежать этой ошибки.

1 Ответ

1 голос
/ 09 марта 2020

У вас неправильное представление о jenkins_connection_id.

jenkins_connection_id="http://localhost:8080/"  # The connection must be configured first

Сначала необходимо создать правильное соединение с сервером jenkins через интерфейс воздушного потока. То, что вы сейчас настроили, это пример строки. Это должно выглядеть примерно так:

jenkins_connection_id="the_connection_id_name_which_you_gave_through_the_ui" 

Подробности можно прочитать здесь: https://airflow.apache.org/docs/stable/howto/connection/index.html

...