美文网首页
Gitlab触发Jenkins自动执行

Gitlab触发Jenkins自动执行

作者: 养猫的老鼠 | 来源:发表于2019-09-29 16:39 被阅读0次

背景:

需要能够在每次提交到Gitlab仓库后,触发Jenkins自动编译与测试

前提:

  1. 已经在Jenkins上安装Git,Gitlab plugin。
  2. 已经在Gitlab上创建的项目,并配置了Jenkinsfile。

步骤:

  1. 在Jenkins服务器上生成SSH公钥和私钥,并将私钥添加至Jenkins Credentials,将公钥添加至Gitlab SSH Keys

  2. 在Gitlab上生成Access Token(具体权限根据需求做调整),并将Token添加至Jenkins Credentials


    Gitlab上生成Token
    添加Token至Jenkins
  3. 在Manage Jenkins->Configure System下配置Gitlab。

    Jenkins中配置Gitlab Token
    注意事项
  • Enable authentication 选项不能打勾,如果打勾需要在Jenkins里创建一个专用于此的账号,或者在Jenkins的项目配置里创建Secret Token并在创建Gitlab Token时添加进去。因为目前我没有那个需求,所以这里我选择了不打勾。
  • 添加后务必点击Test Connection进行连接测试,测试成功再进入下一步。这里格外需要注意的是,如果Jenkins和Gitlab装在同一个OS,共享同一个IP(用端口区分),需要以root权限登录Gitlab,并在/admin/application_settings/network(浏览器中访问)中选择Allow requests to the local network from web hooks and services
    Outbound requests
  1. 在Jenkins下创建项目,配置trigger和pipeline
    Build Trigger
    Pipeline
    注意事项
  • 如果Jenkins和Gitlab装在同一个OS,共享同一个IP(用端口区分),这里的repository URL应该使用docker container内部IP(可以通过docker inspect查看)
  • Name需要填写为repository的名字
  • Refspec需要填写为+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
  • Branch需要填写为origin/{gitlabBranch},这里我写的是master
  1. 在Gitlab下配置Webhooks
    Webhooks
    在具体项目的setting->integrations中将上一步在trigger中产生的Gitlab Webhook URL填写在此处的URL(如果有创建SecretToken也一并填写)
    webhook test
    注意事项
  • 如果Jenkins和Gitlab装在同一个OS,共享同一个IP(用端口区分),需要在防火墙中增加允许172.17网段可以访问的设置firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.27.0.0/16 accept', firewall-cmd --reload
    测试Webhooks是否正常工作
    至此,我们已经完成了所有的配置项。
  1. 验证下能否正常触发Jenkins产生Job
    编写Helloworld.c,push到Gitlab后,Jenkins产生Job,并输出结果。验证OK


    验证

参考文档

Continuous Integration with Jenkins and GitLab
Webhooks and insecure internal web services
Web hook fails when Jenkins Anonymous user does not have job/build permission
Docker - No route to host

相关文章

网友评论

      本文标题:Gitlab触发Jenkins自动执行

      本文链接:https://www.haomeiwen.com/subject/jwyructx.html