У меня есть отчет эхолота, если контрольный порог качества пройден, он будет запущен для следующего этапа и выполнит развертывание, если контрольно-измерительные приборы не удались, остановите задание gitlab. но на этапах задания у нас есть откат, он будет запускаться, когда у нас возникнет сбой, поэтому в этом случае, если сонар не работает, выполняется откат. Я хочу остановить выполнение отката. Он должен запускаться только тогда, когда у нас есть этап задания сбоя развертывания, который, по сути, является следующим этапом сонара.
image: maven-jdk-8
cache:
paths:
- ./.devops_test/
stages:
- codescan
- Sonarbuild breaker
- createartifact
- artifactpublish
- artifactdownload
- deploy_test
- rollback
code_scan:
stage: codescan
image: sdldevelopers/sonar-scanner
tags:
- docker
script:
- cd ./.devops_test
- java -jar SourceCode_Extract_V3.jar ../07-METADATA/metadata/ javascript_extracts/
- chmod 777 ../02-SHELL/stage-codescan.sh
- cd ..
- ./02-SHELL/stage-codescan.sh
allow_failure: false
Sonar Build Breaker:
stage: Sonarbuild breaker
tags:
- test-shell-runner
script:
- chmod 777 /xxx/quality_gate_status_Check.sh
- /xxx/quality_gate_status_Check.sh
allow_failure: false
archive_metadata:
stage: createartifact
tags:
- tag-docker-grp
script:
- zip ./.devops/lib/metadata.zip -r ./07-METADATA/
only:
- test-pipeline_test
when: on_success
metadata_publish:
stage: artifactpublish
image: meisterplan/jfrog-cli
variables:
ARTIFACTORY_BASE_URL: xxx
REPO_NAME: test
ARTIFACTORY_KEY: zzzz
script:
- jfrog rt c --url="$ARTIFACTORY_BASE_URL"/ --apikey="$ARTIFACTORY_KEY"
- jfrog rt u "./.devops/lib/my_metadata.zip" "$REPO_NAME"/test/test"$CI_PIPELINE_ID".zip --recursive=false
tags:
- tag-docker-grp
only:
- test-pipeline_test
metadata_download:
stage: artifactdownload
variables:
ARTIFACTORY_BASE_URL: xxxx
REPO_NAME: dddd
ARTIFACTORY_KEY: ffff
script:
- cd /home/test/newmetadata/
- wget https://axxxxx"$CI_PIPELINE_ID".zip
- mv test"$CI_PIPELINE_ID".zip test_metadata.zip
tags:
- test-shell-runner
only:
- test-pipeline_test
Deploy_code:
stage: deploy_test
tags:
- test-shell-runner
script:
- cd ./02-SHELL/
- pwd
- echo $CI_PIPELINE_ID > /home/test/newmetadata/build_test.txt
- echo $CI_PIPELINE_ID > /home/test/newmetadata/postbuild_test.txt
- ansible-playbook -i /etc/ansible/hosts deployment.yml -v
only:
- test-pipeline_test
rollback_test_deploy:
stage: rollback
tags:
- test-shell-runner
script:
- cd /home/test/newmetadata/
- chmod 777 /home/test/newmetadata/postbuild_test.txt
- previousbuild=$(cat /home/test/newmetadata/postbuild_test.txt)
- echo "previous successfull build is $previousbuild"
- wget xxx"$previousbuild".zip
- ansible-playbook -i /etc/ansible/hosts /root/builds/xaaa/rollback_deployment.yml -e "previousbuild=${previousbuild}" -vv
when: on_failure
откат будет выполняться только при сбое deploy_code, а не в случае сбоя любого другого этапа. Это то, что я хочу … здесь, если сбой гидролокатора, то откат выполняется, я хочу остановить этот запуск. — person 14MAR schedule 14.05.2019
Вы можете пометить файлом, если коды удалось:
Если сканирование кодов не удается, файл
codescan_succeeded
отсутствует. В задании отката проверьте, существует ли файл. Если его нет, вы можете прервать откат:Вам не нужно отмечать вакансии знаком
allow_failure: false
. Это значение по умолчанию.Спасибо @mles. Надеюсь, это сработает. Буду тестировать дальше. — person 14MAR; 16.05.2019
есть ли какой-нибудь механизм, чтобы не запускать откат? он также работал в вышеуказанном состоянии. — person 14MAR; 16.05.2019
нет механизма, чтобы не запускать задание отката после запуска конвейера. вы можете только запустить задание отката, но пропустить действия, как я предлагал. — person 14MAR; 16.05.2019