将 `git remote add usptream` 添加到存储库但使用 Ansible
Add `git remote add usptream` to repositories but using Ansible
我有一个 Ansible 2.9.27,我正在尝试为我之前使用 Ansible 克隆的 git 存储库添加上游远程。假设已经克隆的存储库位于 /home/user/Documents/github/
目录中,我想为它们添加上游远程(每个存储库 git remote add upstream
)。
任务看起来像这样:
- name: Add remote upstream to github projects
# TODO: how to add remote with git module?
command: git remote add upstream git@github.com:{{ git_user }}/{{ item }}.git
changed_when: false
args:
chdir: /home/user/Documents/github/{{ item }}
loop: "{{ github_repos }}"
问题是 ansible-lint 不喜欢使用 command
而不是 git
模块:
WARNING Listing 1 violation(s) that are fatal
command-instead-of-module: git used in place of git module
tasks/github.yaml:15 Task/Handler: Add remote upstream to github projects
我需要做什么才能使用 git
模块为这些存储库添加远程上游?
由于 git
module 尚未(还...)负责您想要实现的目标,因此这是对 command
.
的非常合法的使用
在这种情况下,可以silence the specific rule in ansible lint for that specific task。
更进一步,您的 changed_when: false
子句看起来有点像一种快速而肮脏的修复方法,可以使 no-changed-when
规则静音,并且可以与 failed_when
子句结合使用得到增强检测遥控器已经存在的情况。
以下是我如何编写该任务以实现幂等、记录并传递所有需要的 lint 规则:
- name: Add remote upstream to github projects
# Git module does not know how to add remotes (yet...)
# Using command and silencing corresponding ansible-lint rule
# noqa command-instead-of-module
command:
cmd: git remote add upstream git@github.com:{{ git_user }}/{{ item }}.git
chdir: /home/user/Documents/github/{{ item }}
register: add_result
changed_when: add_result.rc == 0
failed_when:
- add_result.rc != 0
- add_result.stderr | default('') is not search("remote .* already exists")
loop: "{{ github_repos }}"
我有一个 Ansible 2.9.27,我正在尝试为我之前使用 Ansible 克隆的 git 存储库添加上游远程。假设已经克隆的存储库位于 /home/user/Documents/github/
目录中,我想为它们添加上游远程(每个存储库 git remote add upstream
)。
任务看起来像这样:
- name: Add remote upstream to github projects
# TODO: how to add remote with git module?
command: git remote add upstream git@github.com:{{ git_user }}/{{ item }}.git
changed_when: false
args:
chdir: /home/user/Documents/github/{{ item }}
loop: "{{ github_repos }}"
问题是 ansible-lint 不喜欢使用 command
而不是 git
模块:
WARNING Listing 1 violation(s) that are fatal
command-instead-of-module: git used in place of git module
tasks/github.yaml:15 Task/Handler: Add remote upstream to github projects
我需要做什么才能使用 git
模块为这些存储库添加远程上游?
由于 git
module 尚未(还...)负责您想要实现的目标,因此这是对 command
.
在这种情况下,可以silence the specific rule in ansible lint for that specific task。
更进一步,您的 changed_when: false
子句看起来有点像一种快速而肮脏的修复方法,可以使 no-changed-when
规则静音,并且可以与 failed_when
子句结合使用得到增强检测遥控器已经存在的情况。
以下是我如何编写该任务以实现幂等、记录并传递所有需要的 lint 规则:
- name: Add remote upstream to github projects
# Git module does not know how to add remotes (yet...)
# Using command and silencing corresponding ansible-lint rule
# noqa command-instead-of-module
command:
cmd: git remote add upstream git@github.com:{{ git_user }}/{{ item }}.git
chdir: /home/user/Documents/github/{{ item }}
register: add_result
changed_when: add_result.rc == 0
failed_when:
- add_result.rc != 0
- add_result.stderr | default('') is not search("remote .* already exists")
loop: "{{ github_repos }}"