首页 > 解决方案 > 有没有办法从 gitlab AutoDevOps 中排除特定分支?

问题描述

我试图production从 AutoDevOps 中的 gitlab 管道中排除特定分支,但是我看不出能够找出正确的语法。这是我所拥有的:

build:
  stage: build
  image: docker:19.03.1
  variables:
    DOCKER_TLS_CERTDIR: ""
  services:
    - docker:19.03.8-dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  script:
    - |
      if [[ -z "$CI_COMMIT_TAG" ]]; then
        export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG}
        export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_SHA}
      else
        export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE}
        export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_TAG}
      fi
    # make and git needed to run makefiles
    - apk add --update make
    - apk add --update git
    - make ci-build
    - make ensure_project publish_artifact
  rules:
    # don't build on production - that is just a marker branch in git
    - if: '$CI_COMMIT_BRANCH != "production"'
    - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH'

但是,管道仍在运行production。我究竟做错了什么?

标签: gitlab-ci

解决方案


你可以试试除了而不是规则

except:
  - production

Gitlab CI/CD 流水线配置


推荐阅读