如何使用 Ansible 将本地 git 存储库中的代码部署到远程服务器

Anj*_*was 4 git ansible

我正在使用 Ansible 2.5。我需要将代码从本地(控制器)git 存储库部署到远程服务器。

我正在尝试使用带有 git 模块的 Ansible-playbook,它只能将代码从本地存储库部署到另一个本地路径或将远程存储库部署到另一个远程路径。它基于主机配置。

- git:
    repo: /home/pi/Desktop/kk/Vue-Example/
    dest: /home/pi/Desktop/bb
Run Code Online (Sandbox Code Playgroud)

这里repo将是本地(控制器-机器)git 存储库路径,dest并将是远程机器位置。

bit*_*ant 5

这也正是我想要的工作流程 - 从我知道我可以依赖的本地 git 存储库中提取文件。就我而言,我使用特定的提交 ID(经过充分测试的版本)而不是分支名称。如果你想要这个,只需用提交 ID 替换下面的“master”。

- tasks:
    - name: Make temp directory
      tempfile:
        state: directory
      register: temp_git_archive
      delegate_to: localhost
      become: no
      changed_when: False
    - name: Extract latest git commit on branch master
      shell: git archive master |tar --extract --directory={{ temp_git_archive.path }}
      args:
        chdir: /home/pi/Desktop/kk/Vue-Example/  # YOUR LOCAL GIT REPO
      delegate_to: localhost
      become: no
      changed_when: False
    - name: Copy to remote
      copy:
        src: "{{ temp_git_archive.path }}"
        dest: /home/pi/Desktop/bb  # YOUR DESTINATION DIRECTORY
    - name: Delete temp directory
      file:
        path: "{{ temp_git_archive.path }}"
        state: absent
      when: temp_git_archive.path is defined
      delegate_to: localhost
      become: no
      changed_when: False
Run Code Online (Sandbox Code Playgroud)

可以使用 Ansible 'git' 和 'unarchive' 模块代替上面的 'shell' 模块,但我更喜欢一步完成。