커밋 메시지에 특정 문자열이 포함되어 있으면 특정 작업을 수행 할 수 있습니다.
8233 단어 CircleCICircleCI2.1
소개
이 기사에서는 CircleCI에서 "커밋 메시지에 특정 문자열이 포함되어 있으면 특정 작업을 수행하고 싶다"는 경우를 구현하는 방법을 소개합니다. 결론은
circleci-agent step halt
명령을 사용하여 비교적 간단합니다.이번에는 CircleCI 2.1에서 동작 확인을 실시하고 있습니다.
실현하고 싶은 일
이전에는 iOS 프로젝트에서 다음 규칙으로 워크 플로를 정의했습니다.
Unit test
를 실행한다 Unit test
이외에 UI test
및 App Store Connect へのデプロイ
를 실행합니다 이 외에도 새로운 규칙을 추가했습니다.
Unit test
다음에 UI test
를 실행합니다.정의한 워크플로의 전체 이미지
그림 : master 브랜치 이외의 Workflow
그림: master 브랜치 Workflow
yaml의 전체 이미지
※ 각 작업내에서 하고 있는 처리(호출하고 있는 commands)에 대해서는 생략해 예시합니다.
version: 2.1
jobs:
unit_test:
<<: *defaults
steps:
- unit-test
run_ui_test_as_needed:
<<: *defaults
steps:
- checkout
- run:
name: Decide whether to run ui-test, depending on the content of the commit message.
command: |
COMMIT_MESSAGE=$(git log -1 HEAD --pretty=format:%s)
TRIGGER_MATCH_PATTERN="^.*kick-ui-test.*$"
if [[ ${COMMIT_MESSAGE} =~ ${TRIGGER_MATCH_PATTERN} ]]; then
echo "Continue to run ui_test, as the commit message contains kick-ui-test."
else
echo "Since the commit message does not include kick-ui-test, this job will be successfully terminated."
circleci-agent step halt
fi
- ui_test
ui_test:
<<: *defaults
steps:
- ui_test
deploy_appstore:
<<: *defaults
steps:
- deploy
workflows:
build-workflow:
jobs:
- unit_test
- run_ui_test_as_needed:
requires:
- unit_test
filters:
branches:
ignore:
- master
- ui_test:
filters:
branches:
only:
- master
- deploy_appstore:
requires:
- unit_test
- ui_test
filters:
branches:
only:
- master
run_ui_test_as_needed 작업 정보
이 작업에서 "커밋 메시지에 "kick-ui-test"가 포함되어 있으면
Unit test
다음에 UI test
를 실행한다"라는 제어를 실현하고 있습니다.run_ui_test_as_needed:
<<: *defaults
steps:
- checkout
- run:
name: Decide whether to run ui-test, depending on the content of the commit message.
command: |
COMMIT_MESSAGE=$(git log -1 HEAD --pretty=format:%s)
TRIGGER_MATCH_PATTERN="^.*kick-ui-test.*$"
if [[ ${COMMIT_MESSAGE} =~ ${TRIGGER_MATCH_PATTERN} ]]; then
echo "Continue to run ui_test, as the commit message contains kick-ui-test."
else
echo "Since the commit message does not include kick-ui-test, this job will be successfully terminated."
circleci-agent step halt
fi
- ui_test
주로 shell script 로 다음의 처리를 실시하고 있습니다.
kick-ui-test
)을 정의 1.
에서 얻은 커밋 메시지에 특정 문자열이 포함되어 있는지 확인echo
하는 것만으로, 다음 단계로 진행한다 ui_test
실행 3.2에서 작업을 성공적으로 종료하려면
circleci-agent step halt
명령을 사용합니다. 이 명령은 작업을 실패하지 않고 종료할 수 있으며 작업을 조건부로 실행해야 하는 이번 사례에 유용합니다.Ending a Job from within a step | CircleCI
사이고에게
이번에는, master 브랜치 이외(기능의 실장 도중 등)에서도 간편하게
ui_test
를 실행하고 싶은 경우가 있어, run_ui_test_as_needed
job 를 추가했습니다.CircleCI 2.0 부터 다음 작업을 계속하기 전에 수동 승인 작업을 기다리는 제어 가 가능하게 되었습니다만, 구조상, 수동으로 승인하는 수고가 발생하기 때문에, 이번과 같이 커밋하는 시점에서 특정 작업의 실행을 제어할 수 있으면 편리하다고 느꼈습니다.
참고
Reference
이 문제에 관하여(커밋 메시지에 특정 문자열이 포함되어 있으면 특정 작업을 수행 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rkonno/items/935242274d40f1efe4ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)