파이프라인 편집기
- GitLab 13.8에서 소개됨.
- GitLab 13.10에서 기능 플래그가 제거됨.
파이프라인 편집기는 귀하의 저장소 루트에 있는 .gitlab-ci.yml
파일의 GitLab CI/CD 구성을 편집하는 주요 장소입니다. 편집기에 액세스하려면 빌드 > 파이프라인 편집기로 이동하세요.
파이프라인 편집기 페이지에서 다음을 수행할 수 있습니다:
- 작업 대상 브랜치 선택
- 파일 편집 중 구성 구문을 검증하기
-
include
키워드로 추가된 구성을 검증하는 더 깊은 린트 수행 -
include
키워드로 추가된 CI/CD 구성 목록 보기(#view-included-cicd-configuration). - 현재 구성의 시각화 보기
-
include
로 추가된 구성을 포함하여 전체 구성 보기 - 특정 브랜치에 대한 변경 내용 커밋하기
GitLab 13.9 및 이전 버전에서는 편집기를 사용하려면 이미 프로젝트의 기본 브랜치에 .gitlab-ci.yml 파일을 가져야 했습니다.
CI 구성 검증
파이프라인 구성을 편집하는 동안 지속적으로 GitLab CI/CD 파이프라인 스키마에 대해 검증됩니다. CI YAML 구성의 구문을 확인하고 기본적인 논리적 검증을 실시합니다.
이 검증의 결과는 편집기 페이지 상단에 표시됩니다. 구성이 잘못된 경우 문제를 해결하는 데 도움이 되는 설명이 표시됩니다:
CI 구성 린트
변경 사항을 커밋하기 전에 GitLab CI/CD 구성의 유효성을 테스트하려면 CI 린트 도구를 사용할 수 있습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인 편집기를 선택합니다.
- 린트 탭을 선택합니다.
이 도구는 구문 및 논리적 오류를 확인하지만 편집기의 자동 검증과 달리 자세히 확인합니다.
결과는 실시간으로 업데이트됩니다. 구성에 대한 모든 변경 사항이 CI 린트에 반영됩니다. 그것은 기존 CI Lint 도구와 동일한 결과를 표시합니다.
CI/CD 파이프라인 시뮬레이션
- GitLab 15.3에서 소개됨.
파이프라인 구문 및 논리 문제를 찾으려면 검증 탭에서 GitLab CI/CD 파이프라인을 시뮬레이션할 수 있습니다. 파이프라인 시뮬레이션을 통해 부정확한 rules
및 needs
작업 종속성과 같은 문제를 찾을 수 있으며 CI 린트 도구의 시뮬레이션과 유사합니다.
포함된 CI/CD 구성 보기
- GitLab 15.0에 epic으로 소개됨, 기본적으로 파이프라인 편집기 파일 트리라는 플래그로 제공됨. 기본적으로 비활성화됨.
- GitLab 15.1에서 기능 플래그가 제거됨.
파이프라인 편집기에서 include
키워드로 추가된 구성을 검토할 수 있습니다. 오른쪽 상단에서 파일 트리()를 선택하여 포함된 모든 구성 파일 목록을 볼 수 있습니다. 선택한 파일은 검토를 위해 새 탭에서 열립니다.
CI 구성 시각화
- GitLab 13.5에서 소개됨.
- GitLab 13.7에서 빌드 > 파이프라인 편집기로 이동됨.
- GitLab 13.12에서 기능 플래그가 제거됨.
프로젝트에서 .gitlab-ci.yml
구성의 시각화를 보려면 빌드 > 파이프라인 편집기로 이동하고 시각화 탭을 선택하세요. 시각화는 모든 단계와 작업을 표시합니다. needs
관계는 작업을 연결하는 선으로 표시되어 실행 계층을 보여줍니다:
작업 위로 마우스를 올려놓으면 needs
관계가 강조됩니다:
구성에 needs
관계가 없으면 이전 단계가 성공적으로 완료될 때 각 작업이 종속되므로 선이 그려지지 않습니다.
전체 구성 보기
- GitLab 13.9에 도입되었습니다. (도입됨)
- GitLab 13.12에서 기능 플래그가 제거되었습니다.
- GitLab 16.0에서 병합된 YAML 탭이 전체 구성으로 이름이 변경되었습니다.
모든 결합된 파일로 완전히 확장된 CI/CD 구성을 보려면 파이프라인 에디터의 전체 구성 탭으로 이동하십시오. 이 탭은 다음을 표시하는 확장된 구성을 표시합니다.
-
include
로 가져온 구성이보기로 복사됩니다. -
extends
를 사용하는 작업은 작업으로 병합 된 확장된 구성이 표시됩니다. - YAML anchors가 연결된 구성으로 대체됩니다.
- YAML
!reference
태그도 연결된 구성으로 대체됩니다.
!reference
태그를 사용하면 확장된 뷰에서 줄의 시작에 여러 하이픈(-
)이 표시될 수 있습니다. 이 동작은 예상된 것이며 추가 하이픈은 작업 실행에 영향을주지 않습니다. 예를 들어, 이 구성과 완전히 확장된 버전은 모두 유효합니다.
-
.gitlab-ci.yml
파일:
.python-req:
script:
- pip install pyflakes
.rule-01:
rules:
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/
when: manual
allow_failure: true
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
.rule-02:
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
allow_failure: true
lint-python:
image: python:latest
script:
- !reference [.python-req, script]
- pyflakes python/
rules:
- !reference [.rule-01, rules]
- !reference [.rule-02, rules]
- 전체 구성 탭에서 확장된 구성:
".python-req":
script:
- pip install pyflakes
".rule-01":
rules:
- if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/"
when: manual
allow_failure: true
- if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
".rule-02":
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
allow_failure: true
lint-python:
image: python:latest
script:
- - pip install pyflakes # <- 추가적인 하이픈은 작업 실행에 영향을주지 않습니다.
- pyflakes python/
rules:
- - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/" # <- 추가적인 하이픈은 작업 실행에 영향을주지 않습니다.
when: manual
allow_failure: true
- if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" # <- 추가적인 하이픈 없이 이전 규칙과 맞춰져 있습니다.
- - if: $CI_COMMIT_BRANCH == "main" # <- 추가적인 하이픈은 작업 실행에 영향을주지 않습니다.
when: manual
allow_failure: true
CI 구성 변경 커밋하기
에디터의 각 탭 하단에 커밋 양식이 나타나므로 언제든지 변경 사항을 커밋할 수 있습니다.
변경 사항을 만족할 때, 설명적인 커밋 메시지를 추가하고 브랜치를 입력하십시오. 브랜치 필드는 프로젝트의 기본 브랜치로 기본 설정됩니다.
새 브랜치 이름을 입력하면 이 변경으로 새로운 병합 요청 시작 확인란이 나타납니다. 변경 사항을 커밋한 후 새로운 병합 요청을 시작하려면 선택하십시오.
문제 해결
구성 유효성 검사 현재 사용 불가
메시지
이 메시지는 파이프라인 에디터에서 구문 유효성을 검사하는 중 문제가 발생한 것입니다. 다음 상황에 발생할 수 있습니다.
- GitLab이 구문의 유효성을 검사하는 서비스와 통신할 수 없을 때, 다음 섹션에서 정보가 제대로 표시되지 않을 수 있습니다.
- 편집 탭의 구문 상태(유효 또는 무효).
- 시각화 탭.
- 린팅 탭.
- 전체 구성 탭.
여전히 CI/CD 구성을 작업하고 수정한 변경 사항을 문제없이 커밋할 수 있습니다. 서비스가 다시 사용 가능하게되면 구문 유효성 검사가 즉시 표시됩니다.
-
include
를 사용하고 있지만, 포함된 구성 파일이 루프를 만드는 경우. 예를 들어,.gitlab-ci.yml
에file1.yml
을 포함하고,file1.yml
에는file2.yml
를 포함하고,file2.yml
에file1.yml
를 포함하여file1.yml
과file2.yml
간에 루프를 만드는 경우입니다.루프를 제거하고 문제를 해결하기 위해
include
라인 중 하나를 제거하십시오.