上传至Gogs
Gogs是一个十分轻量的git仓库,具体怎么安装见官网,这边我们可以在gogs上设置git钩子,也就是针对git事件的回调函数。我们选择的是post-receive事件,也就是代码git push完毕后执行的回调函数:
脚本里执行jenkins的api去构建流水线
Jenkins流水线
因为调用jenkins的api需要携带token,所以我们需要在流水线中开启触发远程构建,然后生成用户的token(在用户的配置中)
然后jenkins的build api就能使用了,也就是上述git钩子的脚本用的api
# <job_token_name>:远程构建的token名
curl -X POST --data-urlencode token=<job_token_name> -u <username>:<user_token> <jenkins_url>/job/<pipeline_name>/build
然后编写流水线脚本
pipeline {
agent any
stages {
# 拉取代码
stage('Git拉取') {
steps {
echo '======start to pull code======'
sh 'git clone http://13110514277:185123456@172.17.0.2:3000/13110514277/MyWeb.git'
}
}
# 静态检查
stage('CheckStyle') {
steps {
echo '======start to static scan code======'
sh "java -cp /var/lib/jenkins/code_check/checkstyle/checkstyle-8.45-all.jar com.puppycrawl.tools.checkstyle.Main -c /var/lib/jenkins/code_check/checkstyle/google_checkstyle.xml -f xml -o checkstyle_result.xml ${WORKSPACE}"
echo '======start to export report======'
recordIssues(tools: [checkStyle(pattern: 'checkstyle_result.xml', reportEncoding: 'UTF-8')])
}
}
# 部署,这步我没写
stage('Deploy') {
steps {
echo '======start to deploy this application======'
sh "echo 'wait to write the shell'"
}
}
}
post {
# 清理工作空间
always {
echo '======start to clean workspace======'
sh "rm -rf *"
}
}
}
至此,整个流程就建立完成了
评论区