温馨提示:环境搭建:Jenkins、gitlab、两者之间打通;钉钉机器人创建都已省略自己问度娘文章很多(整个打包过程全自动,开发人员只需要提交代码就可以自动构建)。
架构图:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
第三步:编写构建脚本,所有分支、环境都用一套脚本打包简化重复工作。
#!groovy
pipeline {
//代理
agent any
//环境变量
environment {
REPOSITORY="git@xxxxxxxxxxxxxxxxxxxxxxxx.git" //git地址
PROJECT_NAME = "front-xxxxxxxxxxx" //测试服务名
PROJECT_NAME_DEV = "xxxx" //开发服务名
PROJECT_NAME_PRE = "xxxx" //开发服务名
PROJECT_NAME_PROD = "xxxx" //开发服务名
BRANCH_DEV= "xxxx" //开发分支名
BRANCH_TEST = "xxxx" //测试分支
BRANCH_PRE = "xxxx" //演示分支
BRANCH_PROD = "xxxx" //生产分支
NAMESPACE_DEV = "xxxxx" //开发命名空间
NAMESPACE_TEST = "xxxxx" //测试命名空间
NAMESPACE_PRE = "xxxx" //演示命名空间
NAMESPACE_PROD = "xxxx" //生产命名空间
IMAGE_TAG = "${sh(script:'date +%Y%m%d%H%M%S', returnStdout: true).trim()}" //镜像的tag值
IMAGE_REGISTRY = "xxxxxxxx" //镜像仓库地址
IMAGE_PROJECT = "xxxxxxx" //镜像项目地址
IMAGE_NAME = "${IMAGE_REGISTRY}/${IMAGE_PROJECT}/${PROJECT_NAME}:${IMAGE_TAG}" //镜像名称
JENKINSURL = "http://xxxxxxxxxxx/job/" //jenkins任务回调地址
BRANCH_NAME = "${params.gitbranch}" //判断变量
}
//参数化构建
parameters {
gitParameter branch: '',
branchFilter: 'origin/(.*)',
defaultValue: 'CICDxxxxx',
description: '请选择git分支',
name: 'gitbranch',
quickFilterEnabled: false,
selectedValue: 'NONE',
sortMode: 'DESCENDING_SMART',
tagFilter: '*',
type: 'PT_BRANCH',
useRepository: 'git@xxxxxxxgit'
}
stages {
stage('拉取代码') {
parallel {
//手动构建
stage('手动构建') {
when {
not{
environment name: 'BRANCH_NAME', value: 'CICDxxxxx'
}
}
environment {
BRANCH_NAME = "${params.gitbranch}" //项目的命名空间
}