// 所有脚本命令包含在pipeline{}中 pipeline { // 指定任务在哪个节点执行(Jenkins支持分布式) agent any // 配置全局环境,指定变量名=变量值信息 // environment{ // host = '172.17.1.22' // } options{ disableConcurrentBuilds() } parameters { booleanParam(name: 'auto_run_docker_nginx_build_job', defaultValue: false, description: '自动运行docker构建任务') booleanParam(name: 'auto_run_docker_nginx_pull_job', defaultValue: false, description: '自动运行docker发布任务') } triggers { GenericTrigger( genericVariables: [ [key: 'ref', value: '$.ref'] ], causeString: 'Triggered on $ref', token: 'android-cloud-h5', tokenCredentialId: '', silentResponse: false, printPostContent: true, printContributedVariables: true, regexpFilterExpression: 'refs/heads/' + env.BRANCH_NAME, regexpFilterText: '$ref' ) } // 存放所有任务的合集 stages { // 实现任务的具体流程 stage('初始化构建环境') { steps { echo "env.ref: ${env.ref}" script { if (env.ref) { params.auto_run_docker_nginx_build_job = true params.auto_run_docker_nginx_pull_job = true } } echo "自动运行docker构建任务: ${params.auto_run_docker_nginx_build_job}" echo "自动运行docker发布任务: ${params.auto_run_docker_nginx_pull_job}" // XXX: 此处需注意类型 // params.auto_run_docker_nginx_build_job === false // env.auto_run_docker_nginx_build_job === "false" // echo "params.auto_run_docker_nginx_pull_job: ${params.auto_run_docker_nginx_pull_job}" // echo 'env.BRANCH_NAME: ' + env.BRANCH_NAME // echo 'env.BUILD_NUMBER: ' + env.BUILD_NUMBER // echo 'env.BUILD_ID: ' + env.BUILD_ID // echo 'env.BUILD_DISPLAY_NAME: ' + env.BUILD_DISPLAY_NAME // echo 'env.JOB_NAME: ' + env.JOB_NAME // echo 'env.JOB_BASE_NAME: ' + env.JOB_BASE_NAME // echo 'env.BUILD_TAG: ' + env.BUILD_TAG nodejs('v16') { sh ''' node -v npm -v npm install ''' } } } stage('构建项目') { steps { script { // if (env.TAG_NAME) { // nodejs('v16') { // sh 'npm run build:prod' // } // } else if (env.BRANCH_NAME == 'master') { nodejs('v16') { sh 'npm run build:prod' } } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) { nodejs('v16') { sh 'npm run build:uat' } } else { nodejs('v16') { sh 'npm run build:test' } } } } } stage('构建docker镜像') { when { allOf { expression { return params.auto_run_docker_nginx_build_job } anyOf { branch "develop" // branch 'uat' // branch "master" // branch "release/*" // expression { BRANCH_NAME ==~ /^(release\/.+)$/ } } } } environment { BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test" } steps { echo '开始构建docker镜像' script { if (env.BRANCH_NAME == "master") { env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/prod" } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) { env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/uat" } else { env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test" } } echo "build job: ${env.BUILD_DOCKER_JOB}" build job: env.BUILD_DOCKER_JOB, parameters: [string(name: 'version', value: env.BUILD_TAG), extendedChoice(name: 'service', value: 'manage_H5'), booleanParam(name: 'auto_run_docker_nginx_pull_job', value: false), string(name: 'manage_H5_workspace', value: env.WORKSPACE)] } } stage('发布docker镜像') { when { allOf { expression { return params.auto_run_docker_nginx_build_job } expression { return params.auto_run_docker_nginx_pull_job } anyOf { branch 'develop' // branch 'uat' // branch 'master' // expression { BRANCH_NAME ==~ /^(release\/.+)$/ } } } } environment { PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test' } steps { echo '开始发布docker镜像' script { if ( env.BRANCH_NAME == 'master' ) { // env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test' } else if ( env.BRANCH_NAME == 'uat' ) { env.PULL_DOCKER_JOB = 'cloud_publish_docker_pre' } else { env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test' } } echo "build job: ${env.PULL_DOCKER_JOB}" build job: env.PULL_DOCKER_JOB, parameters: [extendedChoice(name: 'service', value: 'cloud-nginx'), string(name: 'version', value: env.BUILD_TAG), string(name: 'replicas', value: '3'), string(name: 'memory', value: '2G'), string(name: 'cpu', value: '2')] } } } }