CI/CD 파이프라인 수정 플로우
GitLab v19.2Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
CI/CD 파이프라인 수정 플로우는 GitLab CI/CD 파이프라인의 문제를 진단하고 수정을 제안합니다. 오류 메시지, 실패한 job 출력 및 종료 코드를 포함한 파이프라인 로그. 실패를 야기했을 수 있는 머지 리퀘스트 변경사항.
히스토리
- GitLab 18.4에서
duo_workflow_in_ci및ai_duo_agent_fix_pipeline_button이라는 플래그와 함께 실험으로 도입됨.duo_workflow_in_ci는 기본적으로 활성화되어 있음.ai_duo_agent_fix_pipeline_button은 기본적으로 비활성화되어 있음. 이 플래그는 인스턴스 또는 프로젝트에 대해 활성화하거나 비활성화할 수 있음. - GitLab 18.5에서 GitLab.com 및 GitLab Self-Managed에서 활성화됨.
- GitLab 18.5에서 기능 플래그
ai_duo_agent_fix_pipeline_button이 기본적으로 활성화됨. - GitLab 18.8에서 일반적으로 사용 가능해짐. 기능 플래그
ai_duo_agent_fix_pipeline_button이 제거됨. 기능 플래그duo_workflow_in_ci는 GitLab 18.9에서 제거됨. - GitLab 18.10에서 GitLab Credits가 있는 GitLab.com Free 티어에서 사용 가능.
- 머지 리퀘스트와 연결된 파이프라인 수정이 GitLab 19.1에서
fix_pipeline_next라는 기능 플래그와 함께 코드 제안으로 적용되도록 변경됨. GitLab.com에서 일부 사용자에게 활성화됨. - GitLab 19.2에서 일반적으로 사용 가능해짐. 기능 플래그
fix_pipeline_next제거됨.
CI/CD 파이프라인 수정 플로우는 GitLab CI/CD 파이프라인의 문제를 진단하고 수정을 제안합니다. 실패를 진단하기 위해 플로우는 다음을 검사합니다:
-
오류 메시지, 실패한 job 출력 및 종료 코드를 포함한 파이프라인 로그.
-
실패를 야기했을 수 있는 머지 리퀘스트 변경사항.
-
구문, 린팅 또는 임포트 오류를 식별하기 위한 리포지터리 내용.
-
명령 실패, 누락된 실행 파일 또는 권한 문제를 포함한 스크립트 오류.
플로우가 수정을 적용하는 방법은 파이프라인 컨텍스트에 따라 다릅니다:
-
파이프라인이 머지 리퀘스트와 연결된 경우, 플로우는 소스 브랜치에 인라인 코드 제안을 적용합니다. 머지 리퀘스트에서 직접 제안을 검토하고 적용할 수 있습니다. 수정에 현재 머지 리퀘스트 diff 외부의 파일 변경이 필요한 경우, 플로우는 대신 새 머지 리퀘스트를 생성합니다.
-
파이프라인이 머지 리퀘스트와 연결되지 않은 경우, 플로우는 수정 사항이 포함된 새 머지 리퀘스트를 생성합니다.
경우에 따라 플로우는 수정을 시도하는 대신 실패와 가능한 다음 단계를 설명하는 코멘트를 게시합니다. 이는 파이프라인이 머지 리퀘스트와 연결된 경우에 발생하며, 예를 들면 다음과 같습니다:
-
신뢰할 수 있는 수정을 결정하기에 충분한 컨텍스트가 없는 경우.
-
실패가 보안에 민감하여 사람이 검토해야 하는 경우.
-
실패 범주가 플로우로 조치할 수 없는 경우.
세션이 시작되고 완료되면, 플로우는 세션 링크와 함께 시스템 노트를 머지 리퀘스트에 게시합니다. 이 플로우는 GitLab UI에서만 사용할 수 있습니다.
이 플로우는 GitLab Duo Agent Platform을 사용하고 실패한 파이프라인을 자동으로 수정하려는 경우 권장되는 방법입니다. 이는 단일 job 실패를 트러블슈팅하는 GitLab Duo Chat 기능인 근본 원인 분석과는 별개의 경험입니다.
사전 요구사항#
-
최상위 그룹에 대해 기반 플로우 허용 및 CI/CD 파이프라인 수정을 켭니다.
-
프로젝트에서 Developer, Maintainer, 또는 Owner 권한이 있어야 합니다.
-
기존에 실패한 파이프라인이 있어야 합니다.
-
프로젝트에 대해 직접 러너를 구성하거나 GitLab 호스팅 러너를 켭니다.
머지 리퀘스트에서 파이프라인 수정#
히스토리
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.
머지 리퀘스트에서 CI/CD 파이프라인을 수정하려면:
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
왼쪽 사이드바에서 코드 > 머지 리퀘스트를 선택하고 머지 리퀘스트를 엽니다.
다음 방법 중 하나를 사용하여 파이프라인을 수정합니다:
개요 탭을 선택하고 실패한 파이프라인 아래에서 Duo로 파이프라인 수정을 선택합니다.
-
파이프라인 탭을 선택하고 오른쪽 열에서 Duo로 파이프라인 수정 ( tanuki-ai )을 선택합니다.
-
GitLab Duo 사이드바에서 새 Agentic Chat 대화 또는 기존 Agentic Chat 대화를 엽니다. Agentic Chat에 파이프라인을 수정하도록 요청합니다.
진행 상황을 모니터링하려면 왼쪽 사이드바에서 AI > 세션을 선택합니다.
Agentic Chat을 사용 중인 경우 다음을 수행할 수도 있습니다:
Chat 대화에서 진행 상황을 확인합니다.
- 대화에서 에이전트 세션 보기를 선택합니다.
세션이 완료되면 플로우가 머지 리퀘스트에 코드 제안을 추가하거나, 가능한 다음 단계가 코멘트에 설명됩니다.
다른 CI/CD 파이프라인 수정#
머지 리퀘스트와 연결되지 않은 CI/CD 파이프라인을 수정하려면:
-
빌드 > 파이프라인을 선택합니다.
-
실패한 파이프라인을 선택합니다.
-
오른쪽 상단에서 Duo로 파이프라인 수정을 선택합니다.
-
진행 상황을 모니터링하려면 AI > 세션을 선택합니다.
AGENTS.md를 사용하여 플로우 맞춤 설정#
플로우는 리포지터리의 AGENTS.md 파일에서 리포지터리별 지침을 읽습니다.
AGENTS.md를 사용하여 다음과 같은 동작을 맞춤 설정할 수 있습니다:
-
플로우가 커밋하는 변경 사항에 대한 커밋 메시지 형식.
-
플로우가 생성하는 머지 리퀘스트에 대한 레이블 및 설명과 같은 머지 리퀘스트 메타데이터.
-
특정 유형의 실패를 분류하고 처리하는 방법.
예시:
## Fix pipeline merge requests
When opening a merge request as part of the Fix Pipeline flow (the title contains [FixPipeline]),
apply labels based on the following failed pipeline scenarios:
- Pipeline failed on merge_request: apply "pipeline::tier-1". This runs the cheaper tier-1
pipeline instead of the full default pipeline.
- Pipeline failed on the default_branch (main): apply both "pipeline::expedited" and
"main:broken". Do not apply pipeline::tier-1 in this case.
- Pipeline failed on other branches: apply "pipeline::tier-1". Same treatment as the
merge_request case.
알려진 이슈#
-
AI gateway는 job 로그의 마지막 150 KiB만 처리합니다. job에서 광범위한 출력이 생성되는 경우, 플로우가 로그 앞부분에 나타나는 관련 실패 정보를 캡처하지 못할 수 있습니다. 해결 방법은 다음 섹션을 참조하세요.
-
플로우가 샌드박스 런타임 환경에서 패키지 설치를 항상 검증할 수 있는 것은 아닙니다. 종속성이 누락된 경우 기본 플로우 이미지를 맞춤 설정할 수 있습니다. 기본 Docker 이미지 변경을 참조하세요.
-
AGENTS.md의 리포지터리 지침은 플로우의 동작에 영향을 미치지만 모든 경우에 준수되는 것은 보장되지 않습니다.
트러블슈팅#
CI/CD 파이프라인 수정 플로우를 사용할 때 다음과 같은 이슈가 발생할 수 있습니다.
플로우가 실패의 근본 원인을 식별할 수 없음#
플로우가 파이프라인 실패의 근본 원인을 식별하지 못할 수 있습니다.
이 이슈는 job 로그가 150 KiB를 초과할 때 발생합니다. AI gateway는 마지막 150 KiB만 처리하므로, 로그 앞부분에 나타나는 관련 실패 정보가 캡처되지 않을 수 있습니다.
이 이슈를 해결하려면 다음을 시도합니다:
-
디버그 로깅 및 진행 표시기를 제거하여 상세한 출력을 줄입니다.
-
셸 리디렉션(
> /dev/null)을 사용하여 중요하지 않은 출력을 리디렉션합니다. -
스크립트 끝에 주요 오류 메시지를 에코하는 요약 단계를 추가합니다.
-
after_script를 사용하여 메인 스크립트가 완료된 후 진단 정보를 출력합니다. -
장황한 job을 더 간결한 로그가 있는 작고 집중적인 job으로 분할합니다.
피드백 제공#
팀은 CI/CD 파이프라인 수정 플로우를 적극적으로 개선하고 있습니다. 이슈를 보고하거나 개선을 제안하려면 피드백 이슈 601991에 피드백을 남겨주세요.