ドキュメントのデプロイ

デプロイ環境

GitLabドキュメントサイトはGitLab Pagesによってホストされる静的サイトです。デプロイはPagesのデプロイジョブによって行われます。

このサイトは現在サポートされているGitLabバージョンのドキュメントのみをホストしています。古いバージョンのドキュメントはビルドされ、GitLab DocsアーカイブからダウンロードできるDockerイメージとしてアップロードされます。

リリースプロセスの一部

ドキュメントのリリースプロセスには以下のようなものがあります:

  • main および関連する安定版ブランチに変更を加えるマージリクエスト。
  • パイプライン。gitlab-docs コンテナレジストリ に、関連する安定版ブランチの 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 ブランチ。
  • プロジェクトの5-4-stable ブランチcharts/gitlabcharts/gitlabバージョンは GitLab のバージョンにマッピングされます。

テクニカルライティングチームはgitlab-docs プロジェクトの安定ブランチを作成し、他のチームが作成した安定ブランチを利用します。

安定版ドキュメント

gitlab-docs の安定版ブランチを対象としたマージリクエストがマージされると、パイプラインがその安定版ドキュメントをビルドし、レジストリにデプロイします。たとえば

特に、各パイプラインのimage:docs-single ジョブ は自動的に実行されます。ビルドされたものを受け取り、コンテナレジストリにプッシュします。

graph TD A["14.4 MR merged"] B["14.3 MR merged"] C["14.2 MR merged"] D["13.12 MR merged"] E["12.10 MR merged"] F{{"Container registry on `gitlab-docs` project"}} A--"`image:docs-single`<br>job runs and pushes<br>`gitlab-docs:14.4` image"-->F B--"`image:docs-single`<br>job runs and pushes<br>`gitlab-docs:14.3` image"-->F C--"`image:docs-single`<br>job runs and pushes<br>`gitlab-docs:14.2` image"-->F D--"`image:docs-single`<br>job runs and pushes<br>`gitlab-docs:13.12` image"-->F E--"`image:docs-single`<br>job runs and pushes<br>`gitlab-docs:12.10` image"-->F

安定したドキュメントイメージの再構築

安定版ドキュメントイメージを再構築するには、再構築するイメージの安定版ブランチ用に新しいパイプラインを作成してください。このようにします:

  • アップストリームの安定ブランチからの新しいドキュメントの変更を安定バージョンのDockerイメージに含める場合。例えば、gitlab プロジェクトの14-4-stable-ee ブランチでマージされた変更を含めるために、14.4 Docker イメージを再構築します。
  • gitlab-docs プロジェクトに加えられた変更を安定版ブランチに取り込みます。例えば

最新のドキュメント

Dockerイメージ(latest タグ付き)を構築します:

  • ドキュメントの最新オンラインバージョン。
  • アップストリームプロジェクトの安定版ブランチのドキュメント。

image:docs-latest ジョブ

  • 関連するアップストリームプロジェクトのデフォルトブランチから最新のドキュメントを取得します。
  • image:docs-single ジョブによって以前にビルドされた Docker イメージをプルします。
  • スケジュールされたパイプラインで手動で実行する必要があります。

例えば、image:docs-latest ジョブを含む[パイプライン](https://gitlab.com/gitlab-org/gitlab-docs/-/pipelines/399233948)

graph TD A["Latest `gitlab`, `gitlab-runner`<br>`omnibus-gitlab`, and `charts`"] subgraph "Container registry on `gitlab-docs` project" B["14.4 versioned docs<br>`gitlab-docs:14.4`"] C["14.3 versioned docs<br>`gitlab-docs:14.3`"] D["14.2 versioned docs<br>`gitlab-docs:14.2`"] E["13.12 versioned docs<br>`gitlab-docs:13.12`"] F["12.10 versioned docs<br>`gitlab-docs:12.10`"] end G[["Scheduled pipeline<br>`image:docs-latest` job<br>combines all these"]] A--"Default branches<br>pulled down"-->G B--"`gitlab-docs:14.4` image<br>pulled down"-->G C--"`gitlab-docs:14.3` image<br>pulled down"-->G D--"`gitlab-docs:14.2` image<br>pulled down"-->G E--"`gitlab-docs:13.12` image<br>pulled down"-->G F--"`gitlab-docs:12.10` image<br>pulled down"-->G H{{"Container registry on gitlab-docs project"}} G--"Latest `gitlab-docs:latest` image<br>pushed up"-->H

デプロイジョブ

GitLab Docsは Pagesサイトであり、ドキュメントのアップデートはデプロイされなければ利用できません。

pages ジョブは、パイプラインがデフォルトブランチ (main) で実行されると自動的に実行されます。結合に必要なコマンドを実行します:

  • gitlab-docs サイトコードの最新ビルド。
  • アップストリームプロジェクトのデフォルトブランチの最新ドキュメント。
  • image:docs-latest のドキュメント。

例えば、pages ジョブを含む[パイプライン](https://gitlab.com/gitlab-org/gitlab-docs/-/pipelines/399233948)

graph LR A{{"Container registry on gitlab-docs project"}} B[["Scheduled pipeline<br>`pages` and<br>`pages:deploy` job"]] C([docs.gitlab.com]) A--"`gitlab-docs:latest`<br>pulled"-->B B--"Unpacked documentation uploaded"-->C

本番環境への手動デプロイ

GitLab Docs はBuild docs.gitlab.com every hour スケジュールパイプラインが実行されるたびに本番環境にデプロイされます。デフォルトでは、このパイプラインは1時間ごとに実行されます。

メンテナーは手動でこのパイプラインを実行し、本番環境へのデプロイを強制することができます:

  1. gitlab-docsスケジュールパイプラインにアクセスしてください。
  2. Build docs.gitlab.com every hour の横で、再生({play})を選択します。

更新されたドキュメントは、新しいパイプラインでpagespages:deploy のジョブが完了した後、本番環境で使用できるようになります。

このタスクを実行するためのメンテナーのロールを持っていない場合は、#docs Slack チャンネルで助けを求めてください。

Dockerファイル

dockerfiles ディレクトリ には、https://docs.gitlab.comのビルド、テスト、デプロイに必要な Dockerfile が含まれています。