如果我合并兩個分支。它顯示,
Merge blocked: merge conflicts must be resolved
如果我給出解決沖突
ENTRYPOINT ["java","-Dspring.profiles.active=**development**","-jar","/app/integration-service.jar"]
ENTRYPOINT ["java","-Dspring.profiles.active=**stage**","-jar","/app/integration-service.jar"]
kind: Deployment
metadata:
name: integration-app
namespace: stellacenter-**dev**
namespace: stellacenter-**stage-uat**
labels:
app: integration-app
spec:
kind: Service
metadata:
name: integration-service
namespace: stellacenter-**dev**
namespace: stellacenter-**stage-uat**
spec:
type: NodePort
selector:
這是在 GitLab 中使用我們的方法并提交到源分支并完成它的簡單方法,但我想在合并時自動解決沖突而不是手動。有什么可以添加類似規則的東西嗎?怎么辦。請幫我解決。我附上了我正在使用的 yaml 腳本。
services:
- docker:19.03.11-dind
workflow:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "developer" || $CI_COMMIT_BRANCH == "stage"|| ($CI_COMMIT_BRANCH =~ (/^([A-Z]([0-9][-_])?)?SPRINT(([-_][A-Z][0-9])?) /i))
when: always
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH != "developer" || $CI_COMMIT_BRANCH == "stage"|| ($CI_COMMIT_BRANCH !~ (/^([A-Z]([0-9][-_])?)?SPRINT(([-_][A-Z][0-9])?) /i))
when: never
stages:
- build
- Publish
- deploy
cache:
paths:
- .m2/repository
- target
build_jar:
image: maven:3.8.3-jdk-11
stage: build
script:
- mvn clean install package -DskipTests=true
artifacts:
paths:
- target/*.jar
docker_build:
stage: Publish
image: docker:19.03.11
services:
- docker:19.03.11-dind
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
deploy_dev:
stage: deploy
image: stellacenter/aws-helm-kubectl
before_script:
- aws configure set aws_access_key_id ${DEV_AWS_ACCESS_KEY_ID}
- aws configure set aws_secret_access_key ${DEV_AWS_SECRET_ACCESS_KEY}
- aws configure set region ${DEV_AWS_DEFAULT_REGION}
script:
- sed -i "s/<VERSION>/${CI_COMMIT_SHORT_SHA}/g" appointment-service.yml
- mkdir -p $HOME/.kube
- cp $KUBE_CONFIG_DEV $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
- export KUBECONFIG=$HOME/.kube/config
- kubectl apply -f appointment-service.yml
uj5u.com熱心網友回復:
在合并或 MR 管道期間沒有自動執行此操作的方法。也沒有辦法檢測使用rules:或類似的沖突。您將需要手動修復沖突。
如果您有一種方法(例如腳本)可以通過一系列可重復的命令可靠地解決沖突,那么您可以使用 CICD 作業自動執行該操作。
例如,您可以使用$CI_OPEN_MERGE_REQUESTSor$CI_MERGE_REQUEST_IID找到打開的合并請求,然后使用合并請求 API確定是否存在沖突,如果存在沖突,則采取一些措施來修復沖突,然后將修復推送到源分支.
例子:
fix-conflicts:
stage: .pre # run before all other stages
rules:
- if: '$CI_MERGE_REQUEST_IID'
script:
# use the MR API to detect if there is a conflict. You implement this script.
# if no conflicts exist (nonzero script exit) - exit 0 for the job
- ./does-mr-conflict-exist.sh $CI_MERGE_REQUEST_IID || exit 0
# you implement this script to fix the conflict
- ./fix-conflicts.sh
- git push -u origin "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
- exit 1 # optional - stop the pipeline (a new one will be created from push)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462096.html
標籤:混帐 github GitLab gitlab-ci gitlab-ci-runner
上一篇:在gitlab中合并分支后如何保留未更改的分支檔案?
下一篇:動態值上的字典keyError
