by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

如何用Gogs觸發Jenkins進行Pipline的測試與部署.
http://{USER}:{API_TOKEN}@{JENKINS_URL}/job/{JOB}/build?token={AUTHENTICATION_TOKEN}

我們可由,右上「使用者名稱」=>「設定」=>「API Token」鈕,取得
User ID及API Token。


另外Token設定,可在Build Triggers的tab下.


上方的三個資訊,即可組合出觸發的網址囉。
所以,在Gogs管理Git鉤子,可以如下設定:(請用https網址,底下是示意圖)

git的post-receive的hook會在使用者push時,被觸發。


提外話,所以post-receive的hook觸發後要進行的動作,依不同的環境,可以很多樣。
例如,在docker swarm的模式,掛載相同的資料夾,可能類似這樣的設定:

下方可以想成,進入工作目錄的資料夾,不理會/sites/www的任何變更,強制更新為repo的版本。
#!/bin/sh
GIT_WORK_TREE=/sites/www git checkout -f

或者是再push -f,強制更新遠端的主機的repo,遠端主機的post-recieve再進行更新到production的動作。
#!/bin/bash
git push -f dlaravel_source:/source/api master

或者採用rsync的方式更新,就看大家的想力囉。

我們回頭來看看Jenkins的pipline部份,在Laravel的環境上,設定是相當簡單的。
關於Pipline可以是類似這樣的方式下載...


為何 git@gogs:devin/proj1.git 能下載repo呢,因為我在jenkins的.ssh/config(SSH連線組態設定)中加入了gogs的名稱。
Host gogs
Hostname 192.168.100.2
User git
IdentityFile=~/.ssh/id_rsa
Port 10022


測試結果如下,當我由client端push變更時,就會...觸發pipline檢測囉.


以下都是使用docker-compose環境建置的

Gogs的docker-compose版本:
https://github.com/DevinY/gogs
關於Gogs的文章:(用docker-compose快速建立私有的git服務)
https://www.ccc.tc/article/setup-your-private-git-hosting-with-gogs

這是我使用的docker-compose版本: (本文php已更新至PHP 7.2.6)
https://github.com/DevinY/jenkins

如果您想了解Pipeline的設定,請參考我的另一篇文章:
https://www.ccc.tc/article/laravel-automation-and-testing-with-jenkins-pipeline

Tags: jenkins

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!