CircleCI Orb 테스트를 자동화합시다.
Orb 테스트를 작성하는 기사이므로 Orb는 이미 작성한 전제로 작성합니다.
circleci/[email protected]
에서 동작 확인되었습니다.h tps : // / rc ぇ시. 이 m/오 rbs/레기 스트리/오 rb/시 rcゔぇ시온 = 9.0.0
이전 준비
CircleCI의 Personal API Tokens
Orb를 게시하기 위해 CircleCI API Token을 내고 환경 변수
CIRCLE_TOKEN
로 설정합니다. 프로젝트별로 Token을 발행하는 것이 번거롭기 때문에, Contexts에 세트 해 두면 편리합니다.그건 그렇고, 프로젝트의 API Token에서는 움직이지 않았습니다.
테스트 작성
테스트를
.circleci/config.yml
에 씁니다.circleci/orb-tools
에 편리한 Job이 갖추어져 있으므로, 이것을 활용해 써 갑니다.h tps : // / rc ぇ시. 코 m / rbs / 레기 스트리 / rb / shi rc ぇ시 / rb 및 ols
거친 흐름으로는
orb-tools/pack
) dev:alpha
로 Orb Registry에 publish ( orb-tools/publish-dev
) run-integration-tests
Pipeline Parameter를 true
로 하여 orb의 테스트가 쓰여진 workflow를 kick한다 ( orb-tools/trigger-integration-tests-workflow
) orb-tools/test-in-builds
) 요점은 테스트하고 싶은 orb publish와 실제 테스트는 workflow가 분리되어 있고 publish 후 테스트의 workflow가 kick하고 있다는 것입니다.
workflow가 로드된 시점에서 orb를 읽어들여지고 있기 때문에, workflow 실행중에 덧쓰기해도, 그
dev:alpha
(은)는 전회 Publish한 것을 사용해 버립니다.version: 2.1
orbs:
orb-tools: circleci/[email protected]
# For test
<orb-name>-alpha: <namespace/orb-name>@dev:alpha
# https://circleci.com/docs/2.0/pipeline-variables/
parameters:
run-integration-tests:
type: boolean
default: false
dev-orb-version:
type: string
default: "dev:alpha"
workflows:
version: 2
dev:
# これを書かないと無限ループする
unless: << pipeline.parameters.run-integration-tests >>
jobs:
- orb-tools/pack:
name: pack-dev
- orb-tools/publish-dev:
name: publish-dev
# Contextsを使う場合
# もしくは環境変数`CIRCLE_TOKEN`が設定がされていればOK
context: orb-publishing
requires: [pack-dev]
orb-name: <namespace/orb-name>
publish-token-variable: CIRCLE_TOKEN
validate: true
checkout: false
attach-workspace: true
# このjob内で pipeline.parameters.run-integration-tests がtrueに変わる
- orb-tools/trigger-integration-workflow:
name: trigger-integration-workflow-dev
# Contextsを使う場合
# もしくは環境変数`CIRCLE_TOKEN`が設定がされていればOK
context: orb-publishing
requires: [publish-dev]
integration_dev:
when: << pipeline.parameters.run-integration-tests >>
jobs:
- orb-tools/pack:
name: pack-integration_dev
- orb-tools/test-in-builds:
name: test-in-builds-integration_dev
requires: [pack-integration_dev]
orb-name: <orb-name>-alpha
attach-workspace: true
test-steps:
- run: echo "ここにテストを書く"
개인의 취향이 나오는 곳을 조금만 보충해 두면,
workflow중에서 orb를 사용한 job에 일부러
name
를 붙이고 있는 것은, job명이 중복했을 때에 orb-tools/pack-1
라든지 나오는 것이 싫기 때문입니다. name
로 고유한 job명을 붙여 두는 것으로, 외형이 깨끗이 하고(아직 이것을 하지 않아 피해를 입은 적은 없지만) GitHub의 「Require status checks to pass before merging」의 브런치의 설정이 어긋나는 걱정도 없기 때문에 안심합니다.참고
orb-tools
의 구현은 매우 참고가 됩니다.htps : // 기주 b. 이 m/시 rc ㎇ 푸 bぃc/오 rb와 ls오 rb/bぉb/에 302710073 또는 365243bf990b 3dfb66573843 아1/. 시 rc㎇시 / 곤후 g. yml
↑를 참고로 스스로 만들어 본 orb입니다.
htps : // 기주 b. 코 m / 사와다 쇼타 / 엔 vsu bst-rb
Reference
이 문제에 관하여(CircleCI Orb 테스트를 자동화합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sawadashota/items/007497215c2ffd817d9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)