1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  8. 文档管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

Jenkins when 条件判断

文章内容
  1. Jenkinsfile
  2. 截图

Jenkins 可使用 when 进行条件判断,决定是否执行整个阶段,实现多种场景:

  • 合并请求时:检查代码规范
  • 代码合并后:构建制品、部署
  • git tag: 构建制品、部署

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('合并请求时:检查代码规范') {
      when {
        changeRequest()
      }
      steps {
        script {
          sh 'npm run lint'
        }
      }
    }
    stage('无论何时:单元测试') {
      steps {
        sh 'npm run test'
      }
    }
    stage('无论何时:编译') {
      steps {
        sh 'npm run build'
      }
    }
    stage('代码合并后或 git tag:构建 Docker 镜像') {
      when {
        anyOf {
          branch 'main';
          tag '*'
        }
      }
      steps {
        script {
          if (env.TAG_NAME ==~ /.*/ ) {
            DOCKER_IMAGE_VERSION = "${env.TAG_NAME}"
          } else {
            DOCKER_IMAGE_VERSION = "${env.BRANCH_NAME.replace('/', '-')}-${env.GIT_COMMIT_SHORT}"
          }
          // 注意:创建项目时链接标识不要使用下划线,而是连字符,比如 My Project 的标识应为 my-project
          // 请修改 build/my-api 为你的制品库名称和镜像名称
          CODING_DOCKER_IMAGE_NAME = "${env.PROJECT_NAME.toLowerCase()}/build/my-api"
          // 本项目内的制品库已内置环境变量 CODING_ARTIFACTS_CREDENTIALS_ID,无需手动设置
          docker.withRegistry("https://${env.CCI_CURRENT_TEAM}-docker.pkg.coding.net", "${env.CODING_ARTIFACTS_CREDENTIALS_ID}") {
            docker.build("${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}").push()
          }
        }
      }
    }
    stage('代码合并后或 git tag:部署') {
      when {
        anyOf {
          branch 'main';
          tag '*'
        }
      }
      steps {
        sh 'coscmd upload -r ./dist /'
      }
    }
  }
}

截图


上一篇Jenkins Dockerfile 保存镜像
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?