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"'
这样您就可以同时拥有相同的功能,而不同的部分则在各自的工作中分开。这减少了维护工作,因为您只有一个地方需要更改它。
我们正在从 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"'
这样您就可以同时拥有相同的功能,而不同的部分则在各自的工作中分开。这减少了维护工作,因为您只有一个地方需要更改它。