首页 > 解决方案 > 当任何一项任务发生更改时,包含循环的任务中的 changed_when 应该为真

问题描述

我正在尝试使用以下任务在 jenkins 中安装插件。它可以正常工作,但我希望任务在安装任何新插件时重新启动 jenkins(即,当任何单个项目任务时changed)。

插件.txt

git
ssh
ruby
jquery

现在,如果我运行以下任务,输出类似于

[Changed]
[OK]
[Changed]
[OK]

最后不调用重新启动詹金斯的处理程序。即使我[Changed]在输出中有一个,我也希望调用处理程序。这里,[Changed] 表示安装了新插件,[OK] 表示插件已经存在。

我曾尝试在线查找此任务的逻辑,但到目前为止还没有运气。

- name: Install Jenkins plugins.
  vars:
    jenkins_plugins: "{{ lookup('file', 'roles/jenkins-docker/templates/plugins.txt') }}"
  get_url:
    dest: "{{ jenkins_data_dir }}/plugins/{{ item | mandatory }}.jpi"
    url: "https://updates.jenkins-ci.org/latest/{{ item }}.hpi"
    owner: jenkins
    group: jenkins
    mode: 0644
    validate_certs: no
  register: result
#  changed_when:
#    - '"changed:" in result.stdout'
  loop: "{{ lookup('file', 'roles/jenkins-docker/templates/plugins.txt').splitlines() }}"
  notify: restart docker-compose-jenkins
  tags:
    - jenkins
    - jenkins-setup-plugins

标签: ansibleansible-2.x

解决方案


推荐阅读