官方文档:https://github.com/jenkinsci/gitlab-plugin#defined-variables

一、GitLab到Jenkins身份验证

默认情况下,该插件将要求为从GitLab到Jenkins的连接设置身份验证,以防止未经授权的人员触发工作。

配置全局认证:

1.1配置一个job获取到对应token值

image-20200722105119183

1.2将token值写入到gitlab中

Integrations Settings

image-20200722105140839

二、Jenkins到GitLab身份验证

请注意:此身份验证配置仅用于访问GitLab API以将构建状态发送到GitLab。它不用于克隆git repos。克隆的凭据(通常是SSH凭据)应在git插件中单独配置。

2.1gitlab用户token

点击左上角用户–settings–Account

选择Private token

2.2打开jenkins系统设置–configure system

img

三、demo

//需要安装插件ssh agent,Blue Ocean
def timeform() {
    script {
        return sh(script : 'date "+%Y-%m-%d---%H:%M:%S"', returnStdout: true).trim()
    }
}

def time() {
    script {
        return sh(script : 'date +%s', returnStdout: true).trim()
    }
}

def releae_tag() {
    script {
        return sh(script : 'echo {gitlabSourceBranch##*/}', returnStdout: true).trim()
    }
}
def message(){
    script {
        sh '''
            displaysecs() {
                local T=1
                local D=((T/60/60/24))
                local H=((T/60/60%24))
                local M=((T/60%60))
                local S=((T%60))
                (( D>0 )) && printf '%d,days'D
                (( H>0 )) && printf '%d,hours'H
                (( M>0 )) && printf '%d,minutes'M
                (( D>0 ||H > 0 || M>0 )) && printf 'and,'
                printf '%d,seconds\n'S
            }
            runtime=(displaysecs(({eDate}-{sDate})))
            curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=65cb8fdd-bba7-4517-b270-aca1c0d60a820' \
            -H 'Content-Type: application/json' \
            -d '
            {
                "msgtype": "text",
                "text": {
                    "content": "XONE测试环境(192.168.0.216) xc-front-xone tag:'releae_tag' 更新完毕
打包任务开始时间:'{startDate}'
打包任务结束时间:'{endDate}'
打包任务总耗时间:'{runtime}' ",
                #"mentioned_list":["XiangYouSong"],
                }
            }'
        '''
    }
}

def devgit(){
  script{
      checkout([class: 'GitSCM',
      branches: [[name: "{env.gitlabSourceBranch}"]],
      doGenerateSubmoduleConfigurations: false,
      extensions: [[class: 'SubmoduleOption',
      disableSubmodules: false,
      parentCredentials: true,
      reference: '',
      trackingSubmodules: true],
      [class: 'RelativeTargetDirectory',
      relativeTargetDir: project]],
      submoduleCfg: [],
      userRemoteConfigs: [[credentialsId: git_key,
      url: git_url]]])
  }
}

def front_build(){
    script {
        dir("{env.WORKSPACE}/{env.project}") {
            sh '''
                pwd
                #rm -f .gitignore
                yarn install
                if [[ ? != '0' ]];then
                    echo "yarn install fail"
                    exit 1;
                else
                    echo "yarn install succeed"
                fi
                #yarn run build:all
                #if [[? != '0' ]];then
                #    echo "yarn build fail"
                #    exit 1;
                #else
                #    echo "yarn build succeed"
                #fi
            '''
        }
    }
}

def server_update(){
  dir("{env.WORKSPACE}/{env.project}"){
    sh '''
      code_seq=`date '+%Y%m%d%H%M%S'`
      code_directory=/data/code/xc-front-xone
      [ -f /etc/profile ] && source /etc/profile
      [ -f /root/.bashrc ] && source /root/.bashrc
      #[ ! -d /data/xc-front-xone ] && mkdir -p /data/xc-front-xone && cp -r dist/* /data/xc-front-xone/

      function front_update() {
        [ ! -d {code_directory} ] && mkdir -p{code_directory}
        [ -d build-all ] && cp -r build-all {code_directory}/xc-front-xone_{code_seq}
        [ -d /data/xc-front-xone ] && rm -rf /data/xc-front-xone
        ln -s {code_directory}/xc-front-xone_{code_seq} /data/xc-front-xone
      }

      front_update
    '''
  }
}

pipeline {
  agent {
      node {
          label 'master'
      }
  }
  environment {
      sDate=time()
      startDate=timeform()
      releae_tag=releae_tag()
      git_url='http://192.168.0.38/ops/ops-document.git'
      git_key='4de8aade-b757-4581-8e0f-4b8c8ef95a36'
      // dev_tag="{release_tag}"
      // release_tag={env.gitlabSourceBranch}
  }

  stages {
    stage('清除工作空间') {
      steps {
          script{
              deleteDir()
          }
      }
    }
    stage('拉取xc-front-xone仓库代码') {
      environment {
        project='xc-front-xone'
        // dev_tag="$release_tag"
      }
      steps {
        devgit()
      }
    }
    stage('xc-front-xone编译') {
      environment {
        project='xc-front-xone'
      }
      steps {
        front_build()
      }
    }
    // stage('发布更新') {
    //   environment {
    //     project='xc-front-xone'
    //   }
    //   steps {
    //     server_update()
    //   }
    // }
    stage('xone测试环境xc-front-xone编译更新状态通知') {
        environment {
            eDate=time()
            endDate=timeform()
        }
        steps {
            message()
            // echo 'aaaa'
        }
    }
  }
}
最后修改日期: 2023年12月16日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。