// 所有脚本命令包含在pipeline{}中 pipeline { // 指定任务在哪个节点执行(Jenkins支持分布式) agent any // 配置全局环境,指定变量名=变量值信息 // environment{ // host = '172.17.1.22' // } environment { // docker的包名 // DOCKER_VERSION = env.BUILD_TAG.replace("%2F","-") DOCKER_VERSION = "" // 空版本号,由下游任务自动生成 } 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 "DOCKER_VERSION: ${env.DOCKER_VERSION}" echo "env.ref: ${env.ref}" script { if (env.ref) { echo "任务来源git Webhooks开启自动构建并发布docker" env.auto_run_docker_nginx_build_job = "true" env.auto_run_docker_nginx_pull_job = "true" } } echo "自动运行docker构建任务: ${env.auto_run_docker_nginx_build_job}" echo "自动运行docker发布任务: ${env.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 { env.auto_run_docker_nginx_build_job == "true" } anyOf { branch "develop" branch "release/*" branch "master" // branch 'uat' // expression { BRANCH_NAME ==~ /^(release\/.+)$/ } } } } environment { // 构建docker的任务名 BUILD_DOCKER_JOB = """${sh( returnStdout: true, script: """ if [[ "$BRANCH_NAME" == "master" ]];then echo "cloud_build_docker_nginx/prod" elif [[ "$BRANCH_NAME" =~ ^release\\/.* ]];then echo "cloud_build_docker_nginx/uat" else echo "cloud_build_docker_nginx/test" fi """ ).trim()}""" } steps { echo '开始构建docker镜像' echo "DOCKER_VERSION: ${env.DOCKER_VERSION}" echo "build job: ${env.BUILD_DOCKER_JOB}" build job: env.BUILD_DOCKER_JOB, parameters: [string(name: 'version', value: env.DOCKER_VERSION), extendedChoice(name: 'service', value: 'manage_H5'), booleanParam(name: 'auto_run_docker_nginx_pull_job', value: env.auto_run_docker_nginx_pull_job == "true"), string(name: 'manage_H5_workspace', value: env.WORKSPACE)] } } // stage('发布docker镜像') { // when { // allOf { // expression { env.auto_run_docker_nginx_build_job == "true" } // expression { env.auto_run_docker_nginx_pull_job == "true" } // anyOf { // branch 'develop' // branch "release/*" // // branch 'master' // // branch 'uat' // // expression { BRANCH_NAME ==~ /^(release\/.+)$/ } // } // } // } // environment { // // 发布docker的任务名 // PULL_DOCKER_JOB = """${sh( // returnStdout: true, // script: """ // if [[ "$BRANCH_NAME" == "master" ]];then // echo "" // elif [[ "$BRANCH_NAME" =~ ^release\\/.* ]];then // echo "cloud_publish_docker_pre" // else // echo "cloud_publish_docker_powerful_test" // fi // """ // ).trim()}""" // } // steps { // echo '开始发布docker镜像' // 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.DOCKER_VERSION), string(name: 'replicas', value: '3'), string(name: 'memory', value: '2G'), string(name: 'cpu', value: '2')] // } // } } }