阅读 329

jenkins+gitlab+webhook 的自动化CICD

摘要:本文主要介绍基于jenkins+gitlab+webhook的自动化CICD,推荐使用Jenkinsfile来做流水线配置。

一、插件安装

  • Generic Webhook Trigger(推荐使用该方式进行配置,下文将以该插件进行配置)

  • GitLab Hook Plugin

  • GitLab Plugin

  • Authentication Tokens API Plugin

  • description setter(该插件是描述每次的构建所用)

二、基础项目配置

jenkinsfile基础代码可以采用代码生成器来生成,后续只需要自己进行微调,代码生成器如下

image.png

新建一个流水线项目,打开配置该项目

image.png

然后复制如下的jenkinsfile文件内容

pipeline {
  agent any
  triggers {
    GenericTrigger(
     genericVariables: [
        [key: 'branch', value: '$.ref'],
       [key: 'git_http_url', value: '$.repository.git_http_url'], 
       [key: 'commit_message', value: '$.commits[0].message'],
       [key: 'commit_author_name', value: '$.commits[0].author.name'],
       [key: 'commit_author_email', value: '$.commits[0].author.email']
     ],
     causeString: 'Triggered on $ref',
     token: '123456',
     printContributedVariables: true,
     printPostContent: true,
     silentResponse: false
    )
  }
  stages {
    stage('Init') {
      steps {
          script {
              branchName = branch.substring("refs/heads/".length())
          }
      }
    }
    stage('Build') {
      steps {
          script {
              sh "echo Build"
          }
      }
    }
    stage('Deploy') {
      steps {
          script {
              sh "echo Deploy"
          }
      }
    }
  }
}复制代码

中间具体的步骤就按照项目类型来进行使用 GenericTrigger的作用就是把gitlab传过来的参数中拿取我们想要的参数放到环境变量中,后续可以来使用

如果不想每次提交都进行构建,我们可以指定构建的正则匹配,稍微修改一下GenericTrigger,增加了这两个参数,我要提交的message中包含了jenkins才进行构建

regexpFilterExpression: '^.*jenkins.*?$', 
     regexpFilterText: '$.commit_message'复制代码

gitlab配置

image.png

配置上面的URL即可,配置完成后还可以进行推送测试

三、SpringBoot项目测试环境Jenkinsfile配置

pipeline {
    agent any
    environment {
        APP_CODE = ''
        APP_VERSION = ''
    }
    parameters {
        string(name: 'APP_CODE', defaultValue: '', description: 'APP编码')
        string(name: 'APP_VERSION', defaultValue: '', description: 'APP版本')
    }
    triggers {
        GenericTrigger(
            genericVariables: [
                [key: 'branch', value: '$.ref'],
                [key: 'git_http_url', value: '$.repository.git_http_url'],
                [key: 'git_ssh_url', value: '$.repository.git_ssh_url'],
                [key: 'commit_message', value: '$.commits[0].message'],
                [key: 'commit_author_name', value: '$.commits[0].author.name'],
                [key: 'commit_author_email', value: '$.commits[0].author.email']
                ],
            causeString: 'Triggered on $ref',
            token: '123456',
            printContributedVariables: true,
            printPostContent: true,
            silentResponse: false
        )
    }
    post {
        always {
            cleanWs()
        }
    }
    stages {
        stage('Init') {
            steps {
                script {
                    sh "echo Init"
                    branchName = branch.substring("refs/heads/".length())
                }
            }
        }
        stage('Build') {
            steps {
                script {
                    sh "echo Build"
                    checkout(
                        [
                            $class: 'GitSCM', branches: [[name: branchName]
                        ],
                        doGenerateSubmoduleConfigurations: false,
                        extensions: [],
                        submoduleCfg: [],
                        userRemoteConfigs: [[credentialsId: '', url: '${git_ssh_url}']]]
                    )
                    sh "/maven/bin/mvn clean package -Dmaven.test.skip=true"
                    // docker打包
                }
            }
        }
        stage('Deploy') {
            steps {
                script {
                    sh "echo Deploy"
                    // 可以进行ssh上传或者docker或者k8s一件部署,看个人内网需求
                }
            }
        }
    }
}


作者:昵称为空C
链接:https://juejin.cn/post/7023198325000110094


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐