This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned on this page are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed @pedropombeiro @vshushlin @grzesiek 2023-01-25

CI 인사이트

요약

Fleet Metrics의 일환으로, 파이프라인을 모니터링하고 파이프라인 속도, 일반 작업 실패 등에 대한 결과를 요약하여 사용자가 파이프라인을 모니터링하고 요약 결과를 확인할 수 있는 CI 인사이트 전용 섹션을 갖고자 합니다. 이는 결국 사용자가 CI/CD의 문제를 최적화하고 해결하는 데 도움이 되는 가치 있는 조치를 제공할 것입니다.

동기

우리는 CI/CD Analytics 페이지를 가지고 있습니다. 이 페이지에는 파이프라인에 대한 매우 기본적인 분석 정보가 있습니다. 이 정보 대부분은 시간에 따른 파이프라인 수와 관련이 있으며, 이는 고객에게 실질적인 가치를 제공하지 않습니다. 프로젝트는 시간이 지남에 따라 파이프라인 수가 항상 증가하기 때문에 총 파이프라인 수는 별다른 중요성이 없습니다.

현재 페이지

이 페이지는 실질적인 인사이트가 부족하여, 파이프라인의 속도 저하나 실패를 이해하기 어렵게 만들고 매뉴얼한 작업이 되어버립니다. 우리는 사용자가 워크플로우를 최적화하는 데 도움을 주고 매뉴얼한 데이터 쿼리 및 수동 데이터 구문 분석, 또는 인사이트나 필요한 조치를 찾기 위해 수십 페이지를 탐색하는 데 연관된 모든 수고를 피할 수 있는 중앙 집중식 장소를 마련하고자 합니다.

우리는 프로젝트 파이프라인에 관련된 대량의 데이터를 처리하게 될 것이며, 이는 AI 도구를 사용하여 작업 실패, 파이프라인 지연 및 불안정한 테스트에 대한 인사이트를 제공하는 잠재력이 있습니다. AI가 우리의 제품 로드맵에서 중요한 역할을 차지하고 있으며 Verify에는 해당 분야에서 약속하는 선두자가 없으므로, 이 페이지가 이러한 새로운 추가 기능의 중심이 될 수 있습니다.

  • 새로운 파이프라인 분석 대시보드 페이지 제공
  • 정보를 신속하게 파악할 수 있는 훌륭한 데이터 시각화
  • 사용자가 원하는 정보를 가져올 수 있는 유연한 쿼리 지원

  • 페이지에 제시된 정보를 기반으로 명확한 조치 가능한 항목 제공
  • 파이프라인 기간별 지속 시간 및 가장 느린 작업과 같은 기본 정보 표시
  • CI/CD Analytics의 접근성과 인기 향상 (즉, 더 많은 페이지 조회)

비목표

저희는 GitLab 프로젝트의 파이프라인 속도를 개선하길 원하지 않습니다. 이 기능은 이를 달성하는 데 도움이 될 수 있지만, 이것이 이 청사진의 직접적인 목적은 아닙니다.

또한 첫 번째 반복에서 AI를 갖고자 하지 않고, 가능한 한 많은 정보를 사용 가능하고 이해하기 쉽도록 하는 데 집중해야 합니다.

제안

CI/CD Analytics 페이지를 개선하여 사용자가 쉽게 자신의 파이프라인을 문제 해결할 수 있는 의미 있는 데이터를 포함하도록 합니다. 주요 개선 사항 목록은 다음과 같습니다:

전반적인 통계

현재 “전반적인 통계”는 시각적 공간을 너무 많이 차지하지 않으면서도 이 정보를 사용할 수 있게 하기 위해 더 작은 글ꔷ로 한 줄 헤더가 될 것입니다. 파이프라인 차트의 경우, 각 막대의 스택이 상태를 나타내고 각 막대가 (일, 월, 년 단위로) 몇 개의 파이프라인이 실행되었는지와 이러한 파이프라인의 어느 정도가 실패하거나 성공했는지를 추적할 수 있는 쌓인 막대 플롯으로 대체될 것입니다.

파이프라인 지속 시간 그래프

특정 유형(MR 파이프라인, 특정 브랜치의 파이프라인 등), 실행 횟수, 상태(성공, 실패 등)에 맞게 사용자 정의할 수 있는 새로운 파이프라인 지속 시간 그래프가 만들어질 것이며, 현재 최근 30개 커밋에 대한 파이프라인 지속 시간 차트를 대체할 것입니다. 기존 차트는 저장소에서 최근 30개의 커밋을 확인하므로 결과가 그다지 가치 있지 않습니다.

또한 마스터 브랜치의 마지막 x개의 파이프라인을 검사하고 실패한 작업을 확인하는 “마스터가 망가졌습니까?” 빠른 옵션을 추가할 것입니다. 여러 번 실패한 작업과 마스터 브랜치의 지난 x개의 파이프라인에서 가장 느린 작업도 추가합니다. 이 모든 것은 사용자가 파이프라인 데이터를 쿼리하여 무엇을 개선해야 하는지 또는 CI/CD 구성에서 어떤 문제를 마주쳤는지 알아내는 데 도움을 주기 위한 노력을 지원하기 위한 것입니다.

가시성

이 기능의 가시성을 높이기 위해 파이프라인 페이지에 링크를 추가할 것입니다. “파이프라인 실행” 주 버튼과 함께 새로운 옵션을 추가할 수 있습니다.

마스터 브랜치 끊김 여부

마스터 브랜치의 마지막 x개의 파이프라인을 스캔하고 실패한 작업을 확인하는 “마스터가 망가졌습니까?” 빠른 옵션을 추가할 것입니다. 여러 번 실패한 작업이 있는 경우 해당 목록을 표시하고 해당 목록에서 인시던트를 생성할 수 있는 옵션을 제공할 것입니다.

색 구성표

파이프라인 상태에 대한 현재 색 구성표를 재고하도록 하고, 파이프라인/작업 상태에 대해 사용자가 익숙한 색상과 실제로 일치하지 않는 기본 시각화 색상을 사용하고 있습니다. 여기에는 더 관련성 있고 더 나은 시각화를 통해 데이터를 더 잘 이해할 수 있도록 도와주는 기회가 있습니다.

라우팅

데이터 시각화에 대해 이야기할 때 ‘차트’라는 용어는 정말로 제한적이며 이 페이지가 단순히 좋은 차트가 아니라 정보를 얻는 방법인 ‘파이프라인 분석’으로 바꿀 것입니다. 그리고 탭에 대한 쿼리 매개변수를 제거하고 대신 퍼스트 클래스 라우팅을 지원하도록 변경할 것입니다.

마스터 브랜치 끊김 여부

마스터 브랜치의 마지막 x개의 파이프라인을 스캔하고 실패한 작업을 확인하는 “마스터가 망가졌습니까?” 빠른 옵션을 추가할 것입니다. 여러 번 실패한 작업이 있는 경우 해당 목록을 표시하고 해당 목록에서 인시던트를 생성할 수 있는 옵션을 제공할 것입니다.

색 구성표

파이프라인 상태에 대한 현재 색 구성표를 재고하도록 하고, 파이프라인/작업 상태에 대해 사용자가 익숙한 색상과 실제로 일치하지 않는 기본 시각화 색상을 사용하고 있습니다. 여기에는 더 관련성 있고 더 나은 시각화를 통해 데이터를 더 잘 이해할 수 있도록 도와주는 기회가 있습니다.

라우팅

데이터 시각화에 대해 이야기할 때 ‘차트’라는 용어는 정말로 제한적이며 이 페이지가 단순히 좋은 차트가 아니라 정보를 얻는 방법인 ‘파이프라인 분석’으로 바꿀 것입니다. 그리고 탭에 대한 쿼리 매개변수를 제거하고 대신 퍼스트 클래스 라우팅을 지원하도록 변경할 것입니다.

설계 및 구현 세부 정보

집계 된 데이터를 위한 새 API

이 기능은 클라이언트에서 작업 및 파이프라인 인사이트를 집계하고 제공할 새 데이터 세트가 있는 것에 의존합니다.

MVC로 gitlab.com에 대한 ClickHouse에서 데이터를 집계하기 시작할 것입니다. 우리는 데이터를 백엔드에서 동적으로 집계할 것입니다. 지금까지 ClickHouse가 그런 일에 아주 능숙했습니다.

우리는 집계 된 데이터를 어디에도 저장하지 않을 것입니다 (아마도 ClickHouse에 재료 뷰가 있겠지만, 더 복잡한 것은 없을 것입니다). 그러면 이 기능이 인기를 얻는다면 ClickHouse 없이도 이러한 기능을 다른 환경으로 가져올 수 있는 방법을 탐색할 수 있을 것입니다.

이렇게 함으로써 빠르게 진행하고 실제 사용자들에게 우리의 아이디어를 테스트하고 피드백을 받을 수 있을 것입니다.

기능 플래그

이 새로운 분석 페이지를 개발하려면 새로운 페이지를 ‘ci_insights’ 피처 플래그 뒤에 숨길 것이며, 이전 또는 새로운 분석 페이지를 조건부로 렌더링할 것입니다. 아마도 컨트롤러의 플래그를 추가하여 렌더링할 경로를 결정할 수도 있을 것입니다: 플래그가 있는 경우 새로운 /analytic을 렌더링하고 그렇지 않은 경우 /charts를 렌더링할 것입니다.

페이지 뷰에 대한 분석 추가

이 페이지가 얼마나 자주 보이는지에 대한 정보를 얻을 수 있도록 해야 합니다. 이 정보가 없는 경우 이 페이지의 가시성을 알기 위해 일부를 구현하도록 해야합니다. 이 섹션의 변경 사항은 뷰 카운트를 증가시키고 이를 성공의 척도로 추적하려고 합니다.

라우팅

페이지를 위한 새로운 경로와 설정을 위한 일부 리다이렉트를 계획 중입니다. 라우팅 제안에 대해 더 읽으려면 관련 이슈를 참조하세요.

파이프라인 기간 그래프

사용자가 다양한 기준으로 파이프라인에 대한 데이터를 쿼리할 수 있는 방법이 필요합니다. 특히, finished 범위 또는 success 또는 failed 상태로만 파이프라인을 쿼리할 수 있습니다. 또한, ref에 대한 범위를 지정할 수 있으므로 사용자는 주 브랜치 또는 CI/CD 변경을 도입한 브랜치를 테스트할 수 있습니다. 우리는 파이프라인 속도에 대한 브랜치 비교를 원합니다.

보다 정확한 데이터를 얻기 위해 요청된 파이프라인 수를 증가시키고 싶습니다. 우리는 graphQL에서 100개의 항목 제한이 있고 성능 저하가 상당히 빨리 발생할 것으로 예상됩니다. 더 정확한 데이터 시각화를 위해 어떻게 더 많은 데이터 세트를 얻을 수 있는지 정의해야 합니다.

작업 인사이트

현재 여러 파이프라인에서 하나의 작업을 쿼리하는 방법이 없으므로 다음과 같이 보일 수 있는 쿼리를 수행하는 것을 방지합니다:

query getJob($projectPath: ID!, $jobName: String!){
  project(fullPath:$projectPath){
    job(name: $jobName, last: 100){
      nodes{
        id
        duration
      }
    }
  }
}

작업 분석을 위한 새로운 통합 테이블을 만들 계획이 있으며 아직이 API가 어떻게 보일지 정의되지 않았습니다. 아직 API 정의에 커밋하지 않았지만, 아마도 아래와 같이 대략적으로 보일 작업 분석을위한 통합 방법이 필요합니다:

get_jobs(project_id:, job_name: nil, stage: nil, stage_index: nil, *etc)
# >
[{id: 1, duration: 134, status: 'failed'}, *etc] 

get_jobs_statistics(project_id, job_name:, *etc)
# >
[{time_bucket: '2024-01-01:00:00:00', avg_duration: 234, count: 123, statuses_count: {success: 123, failed: 45, cancelled: 45}}]

차트 개선

새로운 색 구성표와 차트의 더 멋진 모습을 탐색합니다. 사용자 경험과 협력하여 차트가 우리의 생각에 맞는지 여부를 결정하고 차트가 매우 기억에 남지 않으므로 더 멋진, 현대적인 차트를 가지는 모든 노력을 지원합니다.

대안 솔루션

새로운 페이지

새로운 페이지를 만들고 이 섹션을 그대로 둘 수 있습니다. 이점은 Build 아래의 내비게이션에서 더 주목할 만한 위치를 가질 수 있을 것이지만, 단점은 이 섹션과 명확한 중첩이 있을 수 있다는 것입니다.

파이프라인별 파이프라인 분석

과거에는 파이프라인별 성능 인사이트를 추가하는 실험이 있었습니다. 그 실험은 제거되고 실행 가능하지 않다고 여겨졌습니다. 일부 결과는 다음과 같았습니다:

  • 사용자들이 생각한 것만큼 페이지에 상호 작용하지 않았으며 인사이트를 보기 위해 버튼을 클릭하지 않았습니다.
  • 버튼을 클릭한 사용자들은 작업에 대한 더 많은 통찰을 얻으려고 하지 않았습니다.
  • 사용자는 문제에 피드백을 남기지 않았습니다.

이 실험은 대부분 파이프라인 그래프 페이지 pipelines/:id에 들어간 사용자들이 파이프라인의 성능을 향상시키려고 하는 것이 아니라는 사실을 대부분 보여줍니다. 대신, 대부분 이 페이지가 파이프라인 실패를 디버깅하는 데 사용되었음을 의미합니다. 이는 IC/개발자 페르소나에서 왔으므로, 더 광범위한 영역에 이 섹션을두면 훨씬 더 나은 채택과 유용한 실행 가능한 것을 기대할 수 있습니다.

아무것도 하지 않기

우리는 이 섹션을 건드리지 않고 새로운 형태의 분석을 추가하지 않을 수 있습니다. 이것의 장점은 저장된 자원과 시간입니다. 단점은 현재 고객들이 CI/CD 구성 속도를 개선하는 방법이 문서를 읽는 것 이외에는 없다는 것입니다. 이 섹션의 개선된 내용은 또한 AI 기능에 대한 훌륭한 게이트웨이가 되며 사용자가 설정을 반복할 수 있도록 돕습니다.