首页 > 其他分享 >002GitLab集成Jenkins构建pipeline流水线任务

002GitLab集成Jenkins构建pipeline流水线任务

时间:2023-02-13 00:55:45浏览次数:44  
标签:触发 pipeline 仓库 GitLab token build Jenkins 002GitLab

CI持续集成(Continuous Integration),CD持续部署(Continuous Deployment)

Jenkins是一个优秀的持续集成和持续部署平台,有丰富的插件支持,可以满足各种个性化build场景。

GitLab可以自主选择触发条件,如push/merge/发表评论等,都可以触发jenkins执行build。

整个架构的原理就是GitLab和Jenkins互相配置对方的api,然后就可以在执行相关操作的时候通知到对方。

GitLab主要是在系统里配置jenkins的api。

jenkins不仅要在系统里配置GitLab的api,Pipeline流水线脚本也要进行配置,才能正确通知到GitLab。Jenkins主要会把两种事件通知给GitLab,一种是创建build的任务事件,一种是更新任务状态的事件。

需要安装的插件

  1. gitlab-hook
  2. pipeline
  3. git
  4. blue ocean
  5. blueocean-i18n(没有此i18n国际化插件,打开blue ocean网页会卡住)

Jenkins配置触发条件

触发条件

Build when a change is pushed to GitLa此选项需要安装gitlab-hook插件。后面的url是hook地址,用于提供给git仓库,在满足触发条件的时候,通知jenkins执行此build构建。

其中Comment (regex) for triggering a build是说在git仓库,发送“build-all”或"build-test"关键字,也会触发执行此build构建。

点击Advanced…可以生成token。

这里的url和token是jenkins的api,可以提供给GtiLab使用,在代码合并/发表commit/push代码等操作时,通知Jenkins执行build操作。

发表评论触发正则检测,符合条件,会触发构建,正则内容可以是多个,使用“|”连接,如“(/build-all|/build-test)

编写Jenkins流水线脚本

Pipeline流水线脚本可以直接填写代码内容,也可以是放在Git代码仓库里文件,Jenkins会拉取仓库,然后读取指定的文件内容。

Definition选项Pipeline script表示流水线使用脚本

直接的流水线脚本

Definition选项Pipeline script from SCM表示从代码仓库读取脚本内容,Script Path是批脚本的相对路径(包含文件名的相对路径),这里直接填写文件名Jenkinsfile,也可以使用其它的名字。

Definition选项Pipeline script from SCM表示流水线使用代码仓库中的脚本,如Git仓库,这里SCM为None,表示没有安装仓库支持插件,安装后选项才可用,如下图所示。

Pipeline script from SCM

Credentials填写此仓库的鉴权信息,可以是用户名密码也可以是ssh共享密钥登录。

GitLab项目填写集成信息

指的是Jenkins提供的api,把jenkins的api告诉GitLab,这样GitLab才能通知Jenkins去执行build操作。

GitLab → Settings → Integration

Url和Secret Token填写前面步骤“Jenkins配置触发条件”里的url和token。下面是触发条件trigger condition,表示在什么情况下触发Jenkins执行build操作。

生成GitLab站点Access Tokens

这个是GitLab的api接口的token,可以提供给Jenkins,这样Jenkins就可以把Pipeline任务的状态及时通知给GitLab

GitLab → User Settings → Access Tokens → Persion Access Tokens

点击Create personal access token会生成一个32位的字符串,此字符串只显示一次,要复制并备份才可以,否则丢掉后就找不到了。

Jenkins配置GitLab信息

在Jenkins填写GitLab仓库的地址,可以添加多个GitLab仓库地址,每个连接地址都有一个唯一标识的名字,如下图里的“test”

Jenkins Home → Manage Jenkins → System Configuration → Configure System → GitLab

配置GitLab

Connection name里的“test”,需要与测试脚本“Jenkinsfile”里配置gitLabConnection('test')一致。

GitLab host URL填写GitLab的首页地址。

Credentials选择Gitlab API token,token就是上一个步骤“生成GitLab站点Access Tokens”里生成的token。

测试脚本Jenkinsfile

#!/usr/bin/groovy

pipeline{
    agent any
    post {
      failure {
        updateGitlabCommitStatus name: 'getcode', state: 'failed'
        updateGitlabCommitStatus name: 'package', state: 'failed'
        updateGitlabCommitStatus name: 'deploy', state: 'failed'
      }
      success {
        updateGitlabCommitStatus name: 'getcode', state: 'success'
        updateGitlabCommitStatus name: 'package', state: 'success'
        updateGitlabCommitStatus name: 'deploy', state: 'success'
      }
    }
    options {
      gitLabConnection('test')
      gitlabBuilds(builds: ['getcode', 'package', 'deploy'])
    }
    stages{
        stage("getcode"){
           steps{
               echo "get code from scm"
           }
        }
        stage("package"){
            steps{
                echo "packge code"
            }
        }
        stage("deploy"){
            steps{
                echo "deploy packge to node1"
            }
        }
    }
}

关于脚本里的stages和steps,请参考相关资料。

构建完成视图

Jenkins视图

gitlab视图

 

 

Reference: http://www.haosan.com/www/doc/view/?doc_id=2799

标签:触发,pipeline,仓库,GitLab,token,build,Jenkins,002GitLab
From: https://www.cnblogs.com/itcomputer/p/17115094.html

相关文章

  • Jenkins-declarative-pipeline
    声明式流水线示例:官方文档defremotepipeline{agentanystages{stage('RemoteServer'){steps{script......
  • Scrapy 框架的 pipelines 参数详解
    目录pipelines的使用一个例子pipelines常用的函数pipelines的使用在pipelines.py中创建pipelines的类。(也可用默认存在的类)classPipelinesTest:defp......
  • jenkins学习笔记之四:jenkins常用pipline DSL方法
    一、Json数据格式化(readJSON)#建议使用defresponse=readJSONtext:"${scanResult}"println(scanResult)//以下为原生方法。不建议使用importgroovy.json.*......
  • jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
    一、添加AnsiColor插件二、查看插件语法1.打开任意pipline项目配置,找到流水线语法,并点击跳转连接,选择插件,查看帮助三、修改sharelibrary脚本,优化打印方法packag......
  • 修复 KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。简......
  • 修复 KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。......
  • jenkins pipline(script)
    二、脚本式Script特点:1.最外层有node{}包裹2.可直接使用groovy语句如何创建最基本的PIpeline直接在JenkinsWebUI网页界面中输入脚本通过创建一个jenkinsfile可以检入项目......
  • jenkins操作mysql
    1、安装mysql所需插件【系统管理】-【插件管理】-【可选插件】处下载安装database与MySQLDatabasePlugin插件。若是无法连接外网,也可通过【系统管理】-【插件管理......
  • mac上的Jenkins安装与使用
    一、Jenkins安装1、输入安装命令:brewinstalljenkins报如下错误:于是乎网上找答案:并输入了命令 brewinstallgettext   ......
  • jenkins变量配置
             ......