こんにちは、クラウド事業部 CI/CDサービスメニューチームの山路です。
今回は今年の1月18日にリリースされたGitLab 16.8 の内容について簡単に紹介します。本記事ではすべてのアップデート情報を詳細に記載してはいませんので、興味ある内容があれば各ドキュメントを参照ください。
- GCP Secret Managerのサポート
- Workspaces機能のGA
- GitLab管理者の2要素認証の強制
- Maven dependency proxyによるビルド時間の高速化
- patch-idサポートによる承認リセット
- その他
- さいごに
GCP Secret Managerのサポート
Google Cloudの提供するSecret Managerとの連携が強化され、GILab CI/CDから簡単に呼び出せるようになりました。本サービスはPremiumプラン以上でサポートされます。
.gitlab-ci.yml
でSecret Managerを呼び出す際は以下のように定義すれば利用可能です。
job_using_gcp_sm: id_tokens: GCP_ID_TOKEN: # `aud` must match the audience defined in the WIF Identity Pool. aud: https://iam.googleapis.com/projects/1234/locations/global/workloadIdentityPools/gitlab-pool/providers/gitlab-provider secrets: DATABASE_PASSWORD: gcp_secret_manager: name: my-project-secret # This is the name of the secret defined in GCP Secret Manager version: 1 # optional: default to `latest`. token: $GCP_ID_TOKEN
※GitLabドキュメントより
なお補足ですが、昨年GitLabとGoogle Cloudとのパートナーシップが発表されており、本機能もその一環として捉えられそうです。
- Use GCP Secret Manager secrets in GitLab CI/CD | GitLab
- Support GCP secret stores as alternative to Vault (&11739) · Epics · GitLab.org · GitLab
Workspaces機能のGA
WorkspacesはGitLab Project向けに仮想のサンドボックス環境を提供する機能であり、他のProjectからも隔離したセキュアなリモート開発環境を利用できます。似た機能としてはGitHub Codespacesが近いかなと思います。
Workspacesは16.0から利用できる機能でしたが、本リリースでGAとなりました。GAに向けて、エラーハンドリングやベータ版での課題を解消したようです。
なお、Workspacesは利用者が提供するKubernetesクラスター上に環境を用意するため、事前にKubernetesクラスターを用意する必要があります。また本機能はPremiumプラン以上のみサポートされています。
またWorkspaceごとのCPU/メモリの設定も可能となりました。これまではdevfileにWorkspaceで利用するCPU/メモリなどを定義していましたが、これに加えてGitLab agent configurationからWorkspaceごとのCPU/メモリを設定できるようになりました。
- GitLab agent configuration | GitLab
- Set default and maximum memory and CPU for workspaces (&11625) · Epics · GitLab.org · GitLab
GitLab管理者の2要素認証の強制
これまでAmin権限を持つユーザー以外には2要素認証を有効化できましたが、本リリースからSelf-managedインスタンスのAdmin管理者向けに2要素認証を強制できるようになりました。これにより、Admin権限を持つユーザーのログインを強化し、セキュリティの強化につながります。
- Enforce two-factor authentication | GitLab
- Enforce 2FA for GitLab administrators (#427549) · Issues · GitLab.org / GitLab · GitLab
Maven dependency proxyによるビルド時間の高速化
Mavenパッケージ向けのDependency proxyがGAとなりました。この機能は頻繁に取得するパッケージを主な対象としたローカルProxyで、これを利用すると外部から取得したパッケージをGitLabのパッケージレジストリで管理し、外部パッケージレジストリへのアクセスを削減できます。
また外部レジストリでパッケージが更新された場合(例えばユーザーがバージョンを削除して新しいファイルを含むものを公開した場合など)はGitLabがそれを検知し、新しいものを取得します。これにより正しいパッケージを取得でき、セキュリティ脆弱性などのリスクを軽減できます。
なお本機能はPremiumプラン以上のみサポートします。
patch-id
サポートによる承認リセット
Merge Requestに新しいコミットを追加した場合、すべてのレビュアーに変更を確認してもらいたいので、それまでのApproveをすべてリセットすることが多いでしょう。一方でこれまでは、rebaseによる変更を伴わない変更であっても、不必要にApproveがリセットされていました。
今回のアップデートでは、Merge Request Approvalが git-patch-id
と一致するように改善されました。 git-patch-id
とはパッチに関連するファイル差分のSHA-1の合計であり、patch idが一致する2つのファイルはほぼ同一のものとなります。rebaseの前後の patch-id
を比較することで、Approveのリセットをより効率よく実現できるようになりました。
なお、本機能に対するフィードバックはこちらから可能です。
- Merge request approval settings | GitLab
- Use `patch-id` to identify diffs (&10249) · Epics · GitLab.org · GitLab
その他
GitLab CI/CD関連
ファイルページでGit blame情報を確認: Git blameの情報を、ファイルページから直接閲覧できるようになりました。 ドキュメント / Epic
組織内部で管理するCI/CD Catalog componentを見つけやすく: CI/CD Catalogのリストが増えるにつれて、目的のカタログを見つけにくくなります。今回のアップデートにより、組織内部で扱うCI/CD Catalog componentを見つけやすくするため、
Your groups
タブが導入されました (Premium以上のプランのみ)。 ドキュメント / IssueCI_MERGE_REQUEST_DESCRIPTION
の変更: 16.7で追加されたCI_MERGE_REQUEST_DESCRIPTION
に長文が設定されるとRunnerがエラーを起こす可能性があるため、2700文字で切り捨てるよう動作を変更しました。なお記述を切り捨てるかどうかはCI_MERGE_REQUEST_DESCRIPTION_IS_TRUNCATED
というpredefined variableで確認できます。 ドキュメント / IssueRunner Fleet Dashboardでのレポート出力: Projectで使用したCI/CD計算時間をCSV形式のレポートで出力できるようになりました (Self-managed, Ultimateプランのみ)。 ドキュメント / Issue
ブランチの削除や非保護を避けるためのポリシー: Sacn result policyで
Prevent branch modification
を有効にし、ポリシー内で定義したブランチの削除や保護解除を無効にできます (Ultimateプランのみ)。 ドキュメント / Epic
Value Stream Dashboard関連
Issue Analytics Reportで表示する情報の追加: Issue Analytics Reportに、月当りのクローズしたIssue数が追加されました。この情報はValue Stream Dashboardのドリルダウンから確認できます。この情報によりProjectの状況をより詳細に評価し、顧客へ提供する価値を向上することができます (Ultimateプランのみ)。 ドキュメント / Issue
Value Stream DashboardへのDORAベースのスコアパネルを追加: Value Stream DashboardでDORA (DevOps Research and Assessment) ベースのグラフを表示できるようになりました。この機能では異なるProjectにまたがってDevOpsの進行状況をチェックできるようになり、各組織の責任者が自組織でどの程度DevOpsを実践できているか確認できます (Ultimateプランのみ)。 ドキュメント / Issue / GitLabブログ
Group-level Analytis Dashboardに新しいlanding pageを導入: この改修では、従来あったメニュー項目がページ名と一致しないという課題を解消しています。これにより、より一貫性のあるユーザーフレンドリーな体験を保証するものとなりました (Ultimateプランのみ)。 ドキュメント / Issue
Audit log streaming関連
S3へのインスタンスレベルでのaudit log streamサポート: Audit event streamingの宛先にAmazon S3を利用する際に、インスタンスレベルのストリーミングもサポートするようになりました (Ultimateプランのみ)。 ドキュメント / Epic
Audit eventのフィルターの追加: Audit event streamingで利用できるフィルターが追加され、GroupレベルでのSUb-groupまたはProjectによるフィルターがサポートされました (Ultimateプランのみ)。 ドキュメント / Epic
SAML SSO関連
SAML SSOへのカスタムロールサポート: SAML SSOをプロビジョニングするときに割り当てられるロールを、ユーザーの用意したカスタムロールを使用できるようになりました (Ultimateプランのみ)。 ドキュメント / Issue
SAML Group Syncによるカスタムロールのマッピング: SAML Group Syncを利用し、カスタムロールをユーザーグループにマッピングできるようになりました (Ultimateプランのみ)。 ドキュメント / Issue
MR承認用のSAML SSO認証: SAML SSOとSCIMを利用する場合、Merge request approvalの承認要求の際、パスワードベースでなくSSOを使用できるようになりました (Premium以上のプランのみ)。 ドキュメント / Epic
その他の変更
タスク・OKRの階層全体の系統の表示: これまではタスクやOKRでは直接の親にあたるものしか確認できなかったですが、今回のアップデートで階層全体の系統を表示できるようになりました。 ドキュメント / Epic
コンプライアンスフレームワーク管理の改善: Frameworkの管理をコンプライアンスセンターに含むよう修正し、Frameworkに関するいくつかの機能を追加しました (Premium以上のプランのみ)。 ドキュメント / Epic
カスタマイズ可能な権限の追加: カスタムロール作成時に利用できる5つの権限 (
Manage project access tokens
Manage group access tokens
Manage group members
Ability to archive a project
Ability to delete a project
) が追加されました (Ultimateプランのみ) ドキュメント / IssueOmnibusの改善: 3つのサービス (
GitLab Kubernetes Agent Server
GitLab Workhorse
GitLab Exporter
) において、設定情報を生成するコマンドをgitlab.rb
に設定し、平文のパスワードをgitlab.rb
に記載しなくてもよくなりました (Self-managed版のみ)。 ドキュメント / EpicGitlab runner 16.8: ドキュメント
さいごに
弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。