실제 서비스에서 YAML 운용하다보면 많아지는 코드 속에 중복되는 부분이 많이 발생한다.
그런 부분을 template 을 통해 효율적으로 관리 할수 있다.
다음과 같은 부분이 있다고 가정한다.
deploy to stage:
stage: deploy staging
cache: {}
environment:
name: staging
url: http://$STAGING_URL
before_script:
- corepack enable
- SHELL="$(which bash)" pnpm setup
- source /root/.bashrc
- pnpm add -g surge
allow_failure: false
only:
- master
script:
- surge --project $VITEPRESS_DOC_ROOT --domain $STAGING_URL
except:
- schedules
deploy to production:
stage: deploy production
cache: {}
environment:
name: production
url: http://$PRODUCTION_URL
before_script:
- corepack enable
- SHELL="$(which bash)" pnpm setup
- source /root/.bashrc
- pnpm add -g surge
allow_failure: false
only:
- master
script:
- surge --project $VITEPRESS_DOC_ROOT --domain $PRODUCTION_URL
except:
- schedules
아래와 같이 변경할수 있다
.deploy_template: &deploy # . (dot) 으로 시작하는 job 은 실제로 실행되지 않는다. &deploy 앵커 선언
only:
- master
cache: {}
environment:
url: $DOMAIN # $DOMAIN 이라는 변수를 선언.
name: 'template' # 임의 환경 이름
before_script:
- corepack enable
- SHELL="$(which bash)" pnpm setup
- source /root/.bashrc
- pnpm add -g surge
script:
- surge --project $VITEPRESS_DOC_ROOT --domain $DOMAIN
except:
- schedules
allow_failure: false
deploy to stage:
<<: *deploy # 앵커를 가져와 머지한다.
stage: deploy staging
environment:
name: staging
variables:
DOMAIN: $STAGING_URL # template 에서 사용할 변수 선언
deploy to production:
<<: *deploy
stage: deploy production
environment:
name: production
variables:
DOMAIN: $PRODUCTION_URL #template 에서 사용할 변수 선언
template 의 environment 중 name 은 임의 환경명을 선언 했다
name 을 적지 않으면 ci lint 유효성에는 문제 없으나 에디터에서 오류 보고를 한다.
임의 이름을 적어도 template 이 실제 사용되는 곳에서는 덮어씀으로 정상 동작하는 것 같다.
이렇게 공통부분을 앵커로 템플릿화함으로써 조금 더 관리가 용이해진다.
'코드 > CI-CD-Docker' 카테고리의 다른 글
[Docker] Image pull (0) | 2024.09.13 |
---|---|
[Docker] Docker hub 에 푸시하기 (0) | 2024.09.12 |
[CI/CD] YAML Anchor (0) | 2024.07.30 |
[CI/CD] YAML 기본 (0) | 2024.07.30 |
[CI/CD] Gitlab stop action (0) | 2024.07.29 |