InfoGrab DocsInfoGrab Docs

CI/CD 파이프라인 수정 플로우

요약

CI/CD 파이프라인 수정 플로우는 GitLab CI/CD 파이프라인의 문제를 진단하고 수정을 제안합니다. 오류 메시지, 실패한 job 출력 및 종료 코드를 포함한 파이프라인 로그. 실패를 야기했을 수 있는 머지 리퀘스트 변경사항.

히스토리
  • GitLab 18.4에서 duo_workflow_in_ciai_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 기능인 근본 원인 분석과는 별개의 경험입니다.

사전 요구사항#

머지 리퀘스트에서 파이프라인 수정#

히스토리
  • GitLab Duo Agentic Chat 대화에서 플로우 사용이 GitLab 19.2에서 agentic_foundational_flow_tool이라는 기능 플래그와 함께 도입됨. 기본적으로 활성화됨.
Note

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

머지 리퀘스트에서 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에 피드백을 남겨주세요.

CI/CD 파이프라인 수정 플로우

GitLab v19.2
Tier: [Free](/19.2/subscriptions/gitlab_credits/#for-the-free-tier), Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

CI/CD 파이프라인 수정 플로우는 GitLab CI/CD 파이프라인의 문제를 진단하고 수정을 제안합니다. 오류 메시지, 실패한 job 출력 및 종료 코드를 포함한 파이프라인 로그. 실패를 야기했을 수 있는 머지 리퀘스트 변경사항.

히스토리
  • GitLab 18.4에서 duo_workflow_in_ciai_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 기능인 근본 원인 분석과는 별개의 경험입니다.

사전 요구사항#

머지 리퀘스트에서 파이프라인 수정#

히스토리
  • GitLab Duo Agentic Chat 대화에서 플로우 사용이 GitLab 19.2에서 agentic_foundational_flow_tool이라는 기능 플래그와 함께 도입됨. 기본적으로 활성화됨.
Note

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

머지 리퀘스트에서 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에 피드백을 남겨주세요.