Git

如何正確自動化 git push 到伺服器

  • November 9, 2018

我正在將我們的 ansible 文件遷移到我們的內部 gitlab 伺服器,並且對保持 ansible 角色目錄與 gitlab 項目同步的各種方法有些困惑。最終目標是讓我的團隊通過 gitlab 上的 Web IDE 添加/編輯文件,送出更改並將這些更改推送到 ansible (awx) 伺服器。這樣,團隊中的 Windows 人員不必登錄命令行並執行拉取操作。我可以想到幾種不同的方法來實現這一點,但對不同的 gitlab 功能有些困惑。

1)我一直在看repo mirroring,特別是在gitlab上push mirror。看起來要使它工作,它需要是一個裸倉庫。當我在 ansible 伺服器上創建一個裸倉庫時,我沒有看到要包含在 URL 中的 repo.git 文件。聽起來這不是鏡像的目的,但我想知道它是否是一個可行的解決方案。

  1. Web hooks,我一直在看post-receive web hook,但不明白如何應用它。伺服器正在執行 AWX(Ansible Web GUI),我不想設置另一個 Web 伺服器來監聽 Web 掛鉤。除非我誤解了網路掛鉤的工作原理。

  2. Cron - 設置一個 cronjob 以每分鐘拉一次。我知道這會起作用,但它充其量只是 hacky。如果可能的話,我更喜歡使用 git 工具和功能。

我了解自動推送到生產環境的風險,儘管在這種情況下,我們沒有在 AWX 上執行關鍵操作,因此風險很低。我在其中任何一個方面都走在正確的軌道上嗎?

看看GitLab 的 CI/CD 功能;這些是在每次更改儲存庫(即git pushWeb IDE 的每次或每次送出)後執行多個腳本操作的預期方式。

一個簡單的 CI 管道可以執行類似於ansible-lint語法檢查的東西,然後scp對 AWX 伺服器執行操作。

第一次設置可能看起來相當複雜,因為您必須設置一個 GitLab Runner,它是實際執行 CI 腳本的組件。對於您的案例,只需在 GitLab 伺服器/VM 上安裝執行程序。

引用自:https://serverfault.com/questions/939323