项目
博客
归档
资源链接
关于我
项目
博客
归档
资源链接
关于我
七、【Pipeline流水线】jenkins cli、如何将构建状态发送到GitLab、配置webhook触发自动构建、多分支流水线
2025-05-17
·
·
原创
·
·
本文共 306个字,预计阅读需要 2分钟。
### jenkins cli - jenkins cli地址:http://10.0.7.101:32000/manage/cli/ - 运行job java -jar jenkins-cli.jar -s http://10.0.7.101:32000/ -auth test:123 build t1 -p build_branch=pre - 此时会有各种命令,执行该命令需要在服务器安装java,然后在服务器中去执行该命令 ### 如何将构建状态发送到GitLab - gitlab:账户头像->偏好设置->访问令牌,如果不设置时间就是永久不过期 - jenkins:1、安装GitLab插件: `GitLab Plugin` 2、管理Jenkins->系统配置 ->全局凭证 ->GitLab API token:设置名称:gitlab_n,链接地址:xx - 流水线配置:更新流水线配置 ```groovy pipeline { agent any post { failure { updateGitlabCommitStatus name: 'build', state: 'failed' } success { updateGitlabCommitStatus name: 'build', state: 'success' } aborted { updateGitlabCommitStatus name: 'build', state: 'canceled' } } options { gitLabConnection('gitlab_n') } triggers { gitlab(triggerOnPush:true, triggerOnMergeRequest:true,branvhFilterType: 'All') } stages { stage("build") { steps { updateGitlabCommitStatus name: 'build', state: 'running' echo "hello world" } } } ... } ``` - 构建完成之后,在gitlab中有一个“已通过”的标签,点击它,他就跳到了流水线这边,点击build就会跳到蓝海项目这里,对于的构建发分支才有该标签,其他的没有 ### 配置webhook触发自动构建 - 在gitlab提交项目后,自动触发构建,减少人工手动构建 - 安装插件Generic Webhook Trigger - 配置Jenkins: 项目下 ->Webhooks -> URL: http://JENKINS_URL/generic-webhook-trigger/invoke?token=xx,触发来源:推送事件:正则表达式:test|main ,触发两个分支,取消SSL验证 - 配置webhook:点击流水线项目-> 配置 ->构建触发器:Generic Webhook Trigger,不是按照这种方式,是流水线语法生成:流水线语法 ->Declarative Directive Generator ->triggers:Triggers(倒数第2个) : token:xx, Post content parameters: Variable: branch_name,Expression:$.ref,JSONPath,打印:Print post content/Print contributed variables ```groovy #!groovy pipeline { agent any parameters { choice choices: ['refs/heads/pre', 'refs/heads/main', 'refs/heads/test'], name: 'branch_name' string defaultValue: 'http://10.0.7.30/jenkins/jenkinsfile.git', name: 'giturl' } triggers { GenericTrigger( causeString: 'Generic Cause', genericVariables: [[defaultValue: '', key: 'branch_name', regexpFilter: '', value: '$.ref'], [defaultValue: '', key: 'giturl', regexpFilter: '', value: '$.project.git_http_url']], printContributedVariables: true, printPostContent: true, regexpFilterExpression: '', regexpFilterText: '', token: 'abc123', tokenCredentialId: '' ) } stages { stage('Stage 1') { steps { cleanWs() script { branch = branch_name - 'refs/heads/' //print "$branch" checkout changelog: false, poll: false, scm: scmGit( branches: [[name: "${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab', url: "${giturl}"]]) sh "cat README.md" } } } } } ``` ### 多分支流水线 - 通过自动扫描仓库被匹配到的分支自动创建流水线 - 被扫描到的分支第一次创建的时候会自动运行一次流水线 - 配置多分支扫描:新建项目-选择多分支流水线