문서 배포

배포 환경

GitLab 문서 사이트GitLab Pages에서 호스팅되는 정적 사이트입니다. 배포는 Pages 배포 작업을 통해 이루어집니다.

이 웹사이트는 현재 지원되는 GitLab 버전의 문서만 호스팅합니다. 이전 버전의 문서는 Docker 이미지로 빌드되어 GitLab Docs 아카이브에서 다운로드할 수 있도록 업로드됩니다.

출시 프로세스의 일부

문서 릴리즈 프로세스는 다음을 포함합니다:

  • main 및 관련 안정 브랜치에 변경사항을 적용하기 위한 병합 요청.
  • 관련 안정 브랜치에 Docker 이미지를 빌드하고 배포하기 위한 파이프라인.
  • 안정 버전 및 최신 문서를 포함하여 모든 온라인 문서를 빌드하고 배포하는 데 사용되는 Docker 이미지.

문서 배포는 다음과 같은 파이프라인과 Docker 이미지에 의존합니다:

  • 최신 문서 파이프라인 및 이미지는 안정 문서 파이프라인 및 이미지에 의존합니다.
  • Pages 배포 파이프라인은 최신 문서 이미지에 의존합니다(이 또한 안정 파이프라인 및 이미지에 의존함).

CI/CD 파이프라인에서 Docker를 사용하는 방법에 대한 일반적인 정보는 Docker 통합을 참조하세요.

안정 브랜치

문서 프로젝트의 안정 브랜치에 대한 파이프라인은 포함된 프로젝트의 관련 안정 브랜치를 가져옵니다. 예를 들어, 안정 버전 14.4의 문서는 gitlab-docs 프로젝트의 14.4 브랜치에서 빌드되며, 다음을 포함합니다:

  • gitlab 프로젝트의 14-4-stable-ee 브랜치.
  • gitlab-runner 프로젝트의 14-4-stable 브랜치.
  • omnibus-gitlab 프로젝트의 14-4-stable 브랜치.
  • charts/gitlab 프로젝트의 5-4-stable 브랜치. charts/gitlab 버전은 GitLab 버전과 매핑됩니다.

기술 작문 팀은 안정 브랜치 생성 을 위해 gitlab-docs 프로젝트의 안정 브랜치를 생성합니다. 이는 다른 팀에서 생성한 안정 브랜치를 사용합니다.

안정 문서

gitlab-docs의 안정 브랜치를 대상으로 하는 병합 요청이 병합되면, 파이프라인이 안정 문서를 빌드하여 레지스트리에 배포합니다. 예를 들어:

특히, 각 파이프라인의 image:docs-single 작업은 자동으로 실행됩니다.

이 작업은 빌드된 내용을 가져와 컨테이너 레지스트리에 푸시합니다.

graph TD A["14.4 MR 병합됨"] B["14.3 MR 병합됨"] C["14.2 MR 병합됨"] D["13.12 MR 병합됨"] E["12.10 MR 병합됨"] F{{"gitlab-docs 프로젝트의 컨테이너 레지스트리"}} A--"image:docs-single<br>작업 실행 및 푸시<br>gitlab-docs:14.4 이미지"-->F B--"image:docs-single<br>작업 실행 및 푸시<br>gitlab-docs:14.3 이미지"-->F C--"image:docs-single<br>작업 실행 및 푸시<br>gitlab-docs:14.2 이미지"-->F D--"image:docs-single<br>작업 실행 및 푸시<br>gitlab-docs:13.12 이미지"-->F E--"image:docs-single<br>작업 실행 및 푸시<br>gitlab-docs:12.10 이미지"-->F

안정적인 문서 이미지 재구성

안정적인 문서 이미지를 재구성하려면, 재구성할 이미지의 안정적인 브랜치에 대해 새 파이프라인을 만드세요. 다음과 같은 경우에 이 작업을 수행할 수 있습니다:

  • 새로운 문서 변경 사항을 업스트림 안정적인 브랜치에서 안정적인 버전 Docker 이미지에 포함시키기 위해. 예를 들어, 14.4 Docker 이미지를 재구성하여 gitlab 프로젝트에서 이후 병합된 변경 사항을 포함합니다. 14-4-stable-ee 브랜치.
  • gitlab-docs 프로젝트 자체에 대해 안정적인 브랜치에 적용된 변경 사항을 포함하기 위해. 예를 들어:

최신 문서

우리는 다음을 포함하는 Docker 이미지(latest로 태그됨)를 빌드합니다:

  • 문서의 최신 온라인 버전.
  • 업스트림 프로젝트의 안정적인 브랜치에서 가져온 문서.

image:docs-latest 작업:

  • 관련 업스트림 프로젝트의 기본 브랜치에서 최신 문서를 가져옵니다.
  • 이전에 image:docs-single 작업에 의해 빌드된 Docker 이미지를 가져옵니다.
  • 예약된 파이프라인에서 수동으로 실행해야 합니다.

예를 들어, image:docs-latest 작업을 포함하는 파이프라인:

graph TD A["최신 gitlab, gitlab-runner<br>omnibus-gitlab, 및 charts"] subgraph "gitlab-docs 프로젝트의 컨테이너 레지스트리" B["14.4 버전 문서<br>gitlab-docs:14.4"] C["14.3 버전 문서<br>gitlab-docs:14.3"] D["14.2 버전 문서<br>gitlab-docs:14.2"] E["13.12 버전 문서<br>gitlab-docs:13.12"] F["12.10 버전 문서<br>gitlab-docs:12.10"] end G[["예약된 파이프라인<br>image:docs-latest 작업<br>모든 것을 결합"]] A--"기본 브랜치<br>가져옴"-->G B--"gitlab-docs:14.4 이미지<br>가져옴"-->G C--"gitlab-docs:14.3 이미지<br>가져옴"-->G D--"gitlab-docs:14.2 이미지<br>가져옴"-->G E--"gitlab-docs:13.12 이미지<br>가져옴"-->G F--"gitlab-docs:12.10 이미지<br>가져옴"-->G H{{"gitlab-docs 프로젝트의 컨테이너 레지스트리"}} G--"최신 gitlab-docs:latest 이미지<br>푸시 업"-->H

페이지 배포 작업

GitLab DocsPages 사이트이며, 이를 위한 문서 업데이트는 배포되어야 사용 가능해집니다.

pages 작업은 기본 브랜치(main)에서 파이프라인이 실행될 때 자동으로 실행됩니다.

필요한 명령어를 실행하여 다음을 결합합니다:

  • gitlab-docs 사이트 코드의 최신 빌드.
  • 상위 프로젝트의 기본 브랜치에서 최신 문서.
  • image:docs-latest의 문서.

예를 들어, pages 작업을 포함하는 파이프라인.

graph LR A{{"gitlab-docs 프로젝트의 컨테이너 레지스트리"}} B[["예정된 파이프라인<br>`pages` 및<br>`pages:deploy` 작업"]] C([docs.gitlab.com]) A--"gitlab-docs:latest<br>풀림"-->B B--"압축 해제된 문서 업로드됨"-->C

수동으로 프로덕션에 배포

GitLab Docs는 Build docs.gitlab.com every hour로 예정된 파이프라인이 실행될 때마다 프로덕션에 배포됩니다. 기본적으로 이 파이프라인은 매시간 실행됩니다.

유지 관리자는 수동으로 이 파이프라인을 실행하여 강제로 프로덕션에 배포할 수 있습니다:

  1. gitlab-docs에 대한 예정된 파이프라인으로 이동합니다.

  2. Build docs.gitlab.com every hour 옆에서 Play ( )를 선택합니다.

업데이트된 문서는 새 파이프라인에서 pagespages:deploy 작업이 완료된 후 프로덕션에서 사용 가능하게 됩니다.

이 작업을 수행할 수 있는 유지 관리 역할이 없다면, #docs Slack 채널에서 도움을 요청하세요.

도커 파일

dockerfiles 디렉토리에는 https://docs.gitlab.com를 빌드, 테스트 및 배포하는 데 필요한 도커파일이 포함되어 있습니다.

문제 해결

@gitlab-org/gitlab-svg에서 알려진 아이콘이 아님

UI 또는 문서에서 아이콘을 사용하려고 시도했는데 docs-lint links 작업에서 이 오류가 발생하는 경우, html-lint 도커 이미지의 업데이트가 필요합니다:

ArgumentError: example-image is not a known icon in @gitlab-org/gitlab-svg
926lib/helpers/icons_helper.rb:22:in `icon':
example-image is not a known icon in @gitlab-org/gitlab-svg (ArgumentError)

Slack의 #docs 채널을 이용하여 기술 문서 팀의 구성원에게 도커 이미지 업데이트를 요청하세요. 자세한 내용은 내부 기술 문서 팀 문서를 참조하세요.