Как добавить/обновить тег git с локальной машины, используя ansible playbook?

Я использую следующую ansible playbook для развертывания своих приложений, и я хотел бы чтобы добавить tagged роль, поэтому я может автоматически добавлять/обновлять тег, чтобы пометить текущую фиксацию как развернутую.

Пытаться

Моя текущая попытка выглядит следующим образом: Как переместить тег в ветке git в другую фиксацию?:

---
- name: Removes the tag in local repository.
  shell: git tag -d {{git_deploy_tag}}
  tags: [tagging]

- name: Removes the tag in remote repository.
  shell: git push origin :refs/tags/{{git_deploy_tag}}
  tags: [tagging]

- name: Adds the tag to different commit (HEAD).
  shell: git tag {{git_deploy_tag}} HEAD
  tags: [tagging]

- name: Pushes the changes to the remote repository.
  shell: git push origin {{git_branch}} --tags
  tags: [tagging]

Проблема

Эта роль запускается на удаленном хосте, который не имеет доступа к репозиторию git, и я намерен оставить его таковым. Мне не удалось запустить роль на моем локальном компьютере после выполнить команду на хосте Ansible.

Вопрос

Как запустить роль tagged локально (другие роли должны выполняться удаленно). Сценарий Fabric имеет local()< /а> метод


person Édouard Lopez    schedule 30.09.2015    source источник
comment
Данный ответ работает для вас? Если это так, пожалуйста, примите это.   -  person tedder42    schedule 25.10.2015
comment
@tedder42 нет, я не смог заставить это работать, я обновлю, когда у меня будет время снова поработать над этой задачей   -  person Édouard Lopez    schedule 26.10.2015
comment
Я думаю, что важно выпускать помеченное программное обеспечение, но мое текущее мнение (и установка) заключается в том, что лучше пометить выпуск после успешного тестирования в Staging (вне Ansible) и заставить Ansible отказаться от выпуска непомеченного программного обеспечения (посмотрите на git описать для этого )   -  person Danimal    schedule 29.07.2016


Ответы (2)


Добавьте свой локальный хост в инвентарь ansible и разделите свою книгу воспроизведения на несколько игр, что вы хотите запускать сначала локально, а что вы хотите запускать удаленно.

То, что следует, только в качестве примера, но может работать в качестве основы для вас. Также имейте в виду, что ansible запускает задачи параллельно, есть возможность выбрать, сколько параллельных задач запускать, вам нужно выполнять одну задачу за раз.

---
- hosts: local

tasks:
  - name: Removes the tag in local repository.
    shell: git tag -d {{git_deploy_tag}}
    tags: [tagging]

- hosts: remote

tasks:
  - name: Removes the tag in remote repository.
    shell: git push origin :refs/tags/{{git_deploy_tag}}
    tags: [tagging]
person E. Celis    schedule 30.09.2015

Следующее работает для меня для задачи git в Ansible 1.9/2.0

- name: Checkout a single file from project directory (into a tar archive)
  connection: local
  local_action:
    command git archive
        --remote={{ local_git_repo }}
        HEAD
        knownGoodSet.cfg
        -o /tmp/knownGoodSet.tar
  sudo: no

Конечно, у вас будет другая команда git, но я считаю, что вам нужно все следующее, чтобы заставить ее работать:

  • connection: local
  • local_action: command ... вместо shell: ...
  • sudo: no
person Danimal    schedule 17.03.2016