官方文档:https://github.com/jenkinsci/gitlab-plugin#defined-variables
一、GitLab到Jenkins身份验证
默认情况下,该插件将要求为从GitLab到Jenkins的连接设置身份验证,以防止未经授权的人员触发工作。
配置全局认证:
1.1配置一个job获取到对应token值
1.2将token值写入到gitlab中
Integrations Settings
二、Jenkins到GitLab身份验证
请注意:此身份验证配置仅用于访问GitLab API以将构建状态发送到GitLab。它不用于克隆git repos。克隆的凭据(通常是SSH凭据)应在git插件中单独配置。
2.1gitlab用户token
点击左上角用户–settings–Account
选择Private token
2.2打开jenkins系统设置–configure system
三、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'
}
}
}
}
留言