YAML anchors
bitbucket-pipelines.yml 파일에 반복되는 섹션이있는 경우 YAML anchor를 사용하는 것이 좋습니다. 노력을 줄이고 대량 업데이트를 쉽게 할 수 있습니다.
Anchors 및 aliases
여기에는 두 부분이 있습니다.
코드 블럭을 정의하는 anchor
'&'
다른 곳에서 해당 코드 블럭을 참조하는 데 사용되는 aliases
'*'
따라서 아래의 예제에서 & build-test
를 사용하여 재사용 할 부분이있는 step 엔터티를 정의하고, 이를 재사용하려면 aliases * build-test
를 사용합니다.
definitions:
steps:
- step: &build-test
name: Build and test
script:
- mvn package
artifacts:
- target/**
pipelines:
branches:
develop:
- step: *build-test
master:
- step: *build-test
YAML 앵커 및 별칭에는 ' [ ', ' ] ', ' { ', ' } '및 ' , '문자가 포함될 수 없습니다 .
값 재정의
일부만 변경하여 본질적으로 동일한 코드 블록을 원한다면 어떻게 될까요?
' << :
' 문자와 함께 재정의를 사용하여 값을 더 추가하거나 기존 값을 재정의 할 수 있습니다.
위의 예를 기반으로 step의 name
값을 재정의 할 수 있습니다.
pipelines:
branches:
develop:
- step: *build-test
master:
- step:
<<: *build-test
name: Testing on Master
파이프라인 결과 페이지에서 step 이름은 develop
브랜치에서 실행 된 파이프라인에 대해서는 build and test
로 표시되고 master
브랜치에서 실행 된 파이프라인에 대해서는 Testing on Master
로 표시됩니다.
통합 예제
위의 기술을 사용하면 구성을 만드는 데 필요한 노력을 줄이고 변경 사항이 발생할 때 유지 관리 할 수 있습니다.
모든 YAML과 마찬가지로 들여쓰기가 올바른지 확인하는 것이 중요합니다. 이는 Anchor를 사용할 때 까다롭습니다.
다음은 재정의와 여러 Anchor를 함께 사용하는 방법을 보여주는 조금 더 긴 예제입니다.
definitions:
steps:
- step: &build-test
name: Build and test
script:
- mvn package
artifacts:
- target/**
- step: &deploy
name: Deploy
deployment: test
script:
- ./deploy.sh target/my-app.jar
pipelines:
branches:
develop:
- step: *build-test
- step: *deploy
master:
- step: *build-test
- step:
<<: *deploy
deployment: production
trigger: manual