123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- // 所有脚本命令包含在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')]
- // }
- // }
- }
- }
|