我正在使用Jenkins执行下面的YAML(ansible(文件。我想只在task2成功执行/输出之后执行task3,而task2只在task1之后执行,我的YAML文件如下。如何为此添加依赖项?
例如application.yml
-name: task1
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname"
register: executeapp1
-name: task2
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
register: executeapp2
-name: task3
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
register: executeapp3
有一个处理程序的例子(我不知道你在接下来的步骤中是否需要寄存器,所以我让它们在这里。
tasks:
- name: task1
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname"
notify: task2
register: executeapp1
handlers:
- name: task2
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
notify: task3
register: executeapp2
- name: task3
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
register: executeapp3
只有当任务的退出状态为"0"时,Notify才会起作用;"已更改";因此它将仅在任务1工作时执行通知。
你也可以用更糟糕的方式使用时:
-name: task1
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname"
register: executeapp1
-name: task2
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
register: executeapp2
when: task1 is changed
-name: task3
win_command: "C:WindowsMicrosoft.NETFRAMEWORKV3.9.3013MSBuild.exe" "E:ApplicationFolderApp.xml" -target:Execute /p:ApplicationName="appname1"
register: executeapp3
when: task2 is changed