gitlab - 运行 仅用于非主分支的管道

gitlab - run pipeline for a non-master branch only

我们正在从 Bitbucket 迁移到 Gitlab,我的任务是迁移管道配置。

我被要求查看的一件事是配置管道配置文件,以便某些操作仅在非主分支中执行。

例如在 master 分支中我们要执行以下操作:

script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA

但在任何非 master 分支中,我们要执行以下操作:

script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA
    - aws lambda update-function-code --region $AWS_DEFAULT_REGION --function-name function1 --image-uri xxxxxx.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/function1:$CI_COMMIT_SHA

我正在努力寻找任何可以实现此目的的代码示例,有什么想法吗?

尝试使用这样的规则:

  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA

  rules:
    - if: '$CI_COMMIT_BRANCH == "master"' 

  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA
    - aws lambda update-function-code --region $AWS_DEFAULT_REGION --function-name function1 --image-uri xxxxxx.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/function1:$CI_COMMIT_SHA

  rules:
    - if: '$CI_COMMIT_BRANCH != "master"' 

@tobie van der Merwe 的回答是正确的,它会起作用。我只想指出,您可能想做一些不同的事情,以减少重复并使概述更容易。

docker-build:
  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA

push to aws:
  needs: ["docker-build"]
  script:
    - aws lambda update-function-code --region $AWS_DEFAULT_REGION --function-name function1 --image-uri xxxxxx.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/function1:$CI_COMMIT_SHA
  rules:
    - if: '$CI_COMMIT_BRANCH != "master"' 

这样您就可以同时拥有相同的功能,而不同的部分则在各自的工作中分开。这减少了维护工作,因为您只有一个地方需要更改它。