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