3天学会Jenkins_11_gitlab or github代码提交后自动构建2
- 2019 年 12 月 23 日
- 筆記
转载注明出处
上一节“gitlab or github代码提交后自动构建1”中简单使用了Pipeline script
的方式去构建Pipeline流程,这一节使用Pipeline script from SCM
的方式去实现自动构建,即将Jenkinsfile与源码一同进行版本管理。
1 准备
根据上一节“gitlab or github代码提交后自动构建1”中安装好Gitlab插件并配置好Webhook,最后我们在Gitlab项目仓库根目录中新建Jenkinsfile
文件,这次演示Jenkinsfile文件主要做的功能就是编译和执行一个shell脚本。
同样的也是新建一个Pipeline项目,其他设置保持默认,需要配置的有:
- Build Triggers
- Build when a change is pushed to GitLab(保持与上一节一致,配置好Webhook)
- Pipeline
^(?!origin/master$|origin/develop$).*
【配置除了master和develop分支外所有分支】*/${gitlabSourceBranch}
【利用Gitlab插件环境变量,匹配所触发hook的提交分支】- 选择
Pipeline script from SCM
- SCM 选择Git
- 配置好仓库地址和认证方式
- Branches to build(这里需要注意配置,因为我们可以配置成编译多个分支处理或者单个分支)
- Additional Behaviours 无需添加
- Lightweight checkout 去掉勾选
⚠️这里出现一个很奇怪的问题,尽管
Branches to build
里配置了除master和develop分支外build所有分支,但是总是无法获取后面最新提交的代码,勾选或者不勾选Lightweight checkout
也没啥用,最后还是依靠Gitlab插件的环境变量gitlabSourceBranch
来解决的。
2 Jenkinsfile
将Jenkinsfile
放入项目根目录,然后另外新建auto_test.sh
脚本文件。当提交代码到gitlab远程仓库时,会通过配置的hook自动触发Pipeline构建,执行Jenkensfile
文件。
pipeline { agent any stages { stage('Build') { steps { sh 'bash auto_test.sh' } } } }
auto_test.sh:
#!/bin/bash test() { echo "start to test" # do something... } test
自此就配置完成,在自动执行脚本里可以做你任何想要做的事情,后面进一步可以对Jenkinsfile
进行编辑,包括测试、发布等。
3 参考
- https://github.com/jenkinsci/gitlab-plugin#defined-variables
- https://stackoverflow.com/questions/25774895/jenkins-git-plugin-not-pulling-latest-changes-before-building-job