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

需要登入才可留言!