我正在爲capistrano 3寫一個任務,我需要獲取當前提交的sha1。我怎麼讀?有沒有一個變量呢?Capistrano得到git commit sha1
我在某些文件中看到了fetch(:sha1)
,但這對我不起作用。
我部署到一個碼頭工人的容器,我需要標記與當前SHA1圖像(理想情況下,跳過部署如果已經有對應於當前SHA1的圖像)
我正在爲capistrano 3寫一個任務,我需要獲取當前提交的sha1。我怎麼讀?有沒有一個變量呢?Capistrano得到git commit sha1
我在某些文件中看到了fetch(:sha1)
,但這對我不起作用。
我部署到一個碼頭工人的容器,我需要標記與當前SHA1圖像(理想情況下,跳過部署如果已經有對應於當前SHA1的圖像)
Capistrano的創建一個文件在包含git修訂版的已部署文件夾中。在查看創建該文件的任務時,我們可以看到它如何獲得修訂:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L224
因此,它從fetch(:current_revision)
獲取修訂。
在GIT特定的任務,我們可以看到它被設置:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/scm/tasks/git.rake#L62
作爲一個方面說明,Capistrano的可能是不適合你正在嘗試做的最好工具。 Capistrano對重複部署到同一臺服務器很有用。 Docker實質上是構建一個已經包含代碼的可部署容器。看到這裏回答更多細節:https://stackoverflow.com/a/39459945/3042016
Capistrano的3使用的插件系統使用的版本管理器應用程序(GIT,SVN等)
的current_revision
被委派到版本管理工具插件,我不「不懂如何訪問它...
同時骯髒的解決辦法是
set :current_revision, (lambda do
`git rev-list --max-count=1 #{fetch(:branch)}`
end)
但我在等待一個很好的解決方案,反而會,設法調用從右邊的任務SCM pl ugin
謝謝。我確實看到了這些答案,但我相信我的流程與他們的流程有一點不同。我首先在卡皮斯特拉諾之外建立一個沒有應用程序的「基本形象」。然後我部署到一個容器,從這個圖像與帽子開始。進一步的部署也對同一個容器進行加速,即。重複部署到同一個容器。 每個新部署我還提交了一個新映像,我可以將它推送並部署到我的ECS羣集。聽起來像Capistrano的合理使用? –
呵呵。我從來沒有聽說過這個工作流程。我不是Docker的專家/用戶,所以我不能評論它是否是「正確」的做法。 –
雖然'fetch(:current_revision)'回答你的問題嗎? –