YAML 기능 중에 anchor 라는 것이 있다.
html 상의 anchor 과는 약간 궤를 달리 한다.
아래와 같은 구조가 있다고 가정하자.
person:
name: &name KTH_self
age: 29
isMale: false
hobby:
- scuba
- swimming
- squash
friends:
- name: Sunhee
age: 19
- name: Jiyeon
age: 19
stuff: [iphone, ipad]
self: *name
&name 이라는 앵커와 KTH 라는 값을 선언한다.
아래쪽 self 에서 * 와 함께 바로 사용할 수 있다.
JSON 변환
{
"person": {
"name": "KTH_self",
"age": 29,
"isMale": false,
"hobby": [
"scuba",
"swimming",
"squash"
],
"friends": [
{
"name": "Sunhee",
"age": 19
},
{
"name": "Jiyeon",
"age": 19
}
],
"stuff": [
"iphone",
"ipad"
],
"self": "KTH_self"
}
}
이렇게 보면 별것 아닌 것 같지만 다수의 복잡한 YAML 을 정의시 중복 코드와 오류를 방지 할수 있다.
다음을 보자
person_base: &base # 앵커 선언
city: seoul
country: korea
person:
<<: *base # <<: *앵커이름
name: &name KTH_self
age: 29
isMale: false
hobby:
- scuba
- swimming
- squash
friends:
- name: Sunhee
age: 19
- name: Jiyeon
age: 19
stuff: [iphone, ipad]
self: *name
person2:
<<: *base # <<: *앵커이름
name: &name kimtaehoon
age: 39
isMale: true
hobby:
- tennis
- swimming
friends:
- name: Sunhee
age: 29
- name: Jiyeon
age: 29
stuff: [macbook]
self: *name
to JSON
{
"person_base": {
"city": "seoul",
"country": "korea"
},
"person": {
"city": "seoul",
"country": "korea",
"name": "KTH_self",
"age": 29,
"isMale": false,
"hobby": [
"scuba",
"swimming",
"squash"
],
"friends": [
{
"name": "Sunhee",
"age": 19
},
{
"name": "Jiyeon",
"age": 19
}
],
"stuff": [
"iphone",
"ipad"
],
"self": "KTH_self"
},
"person2": {
"city": "seoul",
"country": "korea",
"name": "kimtaehoon",
"age": 39,
"isMale": true,
"hobby": [
"tennis",
"swimming"
],
"friends": [
{
"name": "Sunhee",
"age": 29
},
{
"name": "Jiyeon",
"age": 29
}
],
"stuff": [
"macbook"
],
"self": "kimtaehoon"
}
}
특정 Object 속성(이 경우엔 person_base) 을 모두 머지한 형태로 구성할 수 있다.
여러 요소의 공통된 속성을 선언하는데 요긴하게 사용할 수 있을 것으로 보인다.
특히나 파이프라인의 공통 요소들을 위 형태로 정의할 수 있다.
'코드 > CI-CD-Docker' 카테고리의 다른 글
[Docker] Docker hub 에 푸시하기 (0) | 2024.09.12 |
---|---|
[CI/CD] anchor 를 사용하여 YAML template 만들기 (0) | 2024.07.31 |
[CI/CD] YAML 기본 (0) | 2024.07.30 |
[CI/CD] Gitlab stop action (0) | 2024.07.29 |
[Docker] Container 및 image에 이름, 태그 지정하기 (0) | 2024.07.16 |