こんにちは、クラウド事業部 CI/CDサービスメニューチームの山路です。
今回は5月16日にリリースされたGitLab 17.0 のアップデート内容を紹介します。本記事ではすべてのアップデート情報を詳細に記載してはいませんので、興味ある内容があれば各ドキュメントを参照ください。
- CI/CD CatalogのGA
- AI Impact analyticsの導入
- Linux ArmベースのHosted runnerの導入
- GitLab Duo ChatのモデルをClaude 3 Sonnetに変更
- GitLab Duo Chatの一部機能をSelf-managed版でも利用可能に
- rules:existsにproject / ref というサブキーを追加
- after_script キーワードの挙動の変更
- main ci の2つのDatabaseの利用がBetaバージョンに
- その他
- バージョンアップに伴う破壊的変更
- さいごに
CI/CD CatalogのGA
CI/CD CatalogはCI/CD componentsというCI/CDの部品相当のリソースをPublic / Privateに共有する機能で、GitLab CI/CDパイプラインの再利用性を向上することができます。CI/CD Catalogは本リリースでGAとなり、CI/CD Catalogと関連するCI/CD components / input parameter の2つも共にGAとなりました。
またCI/CD CatalogのGAに合わせ、いくつかのアップデートもありました。
1つ目はCI/CD component利用時のSematic Versioning指定の改善です。
CI/CD componentsを呼び出すときのバージョン指定方法が改善され、例えば 2
を設定すると 2.x.y
というバージョンの中で最新のものを、 2.1
を設定すると 2.1.x
の中で最新のものを自動的に利用するようになりました。
これまではバージョンを固定してカタログの更新のたびに書き換えるか、リスクのある latest
を指定するしかできませんでしたが、本アップデートにより最新のマイナーバージョンを取得するという選択肢が生まれ、新しいバージョンを安全に使いつつメンテナンスの手間を省くことができます。
- CI/CD components | GitLab
- Backend: Add shorthand syntax for semantic versioning (#450835) · Issues · GitLab.org / GitLab · GitLab
2つ目はCI/CD Catalogのリリース方法の共通化です。
本リリースからCI/CD Catalogを公開する際の方法が変更され、 .gitlab-ci.yml
に release-cli
イメージと release
キーワードを使う形式となりました。 GitLabのドキュメントでは以下のように記述するよう案内しています。
create-release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest script: echo "Creating release $CI_COMMIT_TAG" rules: - if: $CI_COMMIT_TAG release: tag_name: $CI_COMMIT_TAG description: "Release $CI_COMMIT_TAG of components in $CI_PROJECT_PATH"
- CI/CD components | GitLab
- Backend/Frontend: Allow publishing process only via `release-cli` (#442066) · Issues · GitLab.org / GitLab · GitLab
※参考:
AI Impact analyticsの導入
AI Impact analyticsはGitLabのValue Streams Dashboardから利用でき、GitLab Duoの導入が組織の生産性にどのような影響を与えたかを分析する機能を提供します。本機能はAIの使用率とSDLC (Software Development Life Cycle) metricsを比較し、GitLab Duoがどれだけの時間を削減したかをチェックできます。
なお、AI Impact dashboardは期間限定でUltimateプランを利用する全ユーザーが利用できますが、その後はGitLab Duo Enterpriseのライセンス契約が必要となります。興味のある方は早めに試した方がよいでしょう。
- Value Streams Dashboard | GitLab
- Adding "AI Impact" analytics to the Value Stream Dashboard (&12978) · Epics · GitLab.org · GitLab
※参考:
Linux ArmベースのHosted runnerの導入
GitLab SaaS版のPremiumプラン以上のユーザーは、本リリースからLinux ArmベースのHosted runnerを使用可能となりました。これにより以前よりもGitLab CI/CDを高速で処理でき、これまでよりも早いフィードバックの提供やコスト効率が高いRunnerを採用できます。
なお現時点では4 / 8 vCPUの2つのタイプからRunnerのスペックを選択できます。
- Hosted runners on Linux | GitLab
- Offer a large ARM hosted runners on Linux for GitLab.com (#365300) · Issues · GitLab.org / GitLab · GitLab
GitLab Duo ChatのモデルをClaude 3 Sonnetに変更
GitLab Duo Chatは以前はClaude 2.1を利用していましたが、本リリースでより高性能のClaude 3 Sonnetを利用するように変更されました。
なおGitLab Duo Chatについては先日弊社ブログでも紹介いたしましたので、良ければそちらもご覧ください。
※参考:
GitLab Duo Chatの一部機能をSelf-managed版でも利用可能に
本リリースより、GitLab Self-managed版で、Gitlab Duo Chatに対し、GitLabに関する質問を投げられるようになりました。
GitLab Duo Chatはチャット欄から様々な質問を投げられる機能がありますが、その中で問い合わせの多いものにGitLabに関する質問があるようです。以前はSaaS版でのみGitLabに関する回答をもらえていましたが、本リリースからSelf-managed版でも利用可能となりました。
- GitLab Duo Chat examples | GitLab
- Solution implementation for "users can ask documentation questions also on SM Chat" based on retrieving snippets from Vertex AI Search (#451215) · Issues · GitLab.org / GitLab · GitLab
rules:exists
にproject
/ ref
というサブキーを追加
rules:exists
はGitLab CI/CDのキーワードの一つで、リポジトリ中に特定のファイルが存在する場合にJobを起動するよう制御することができます。
※ rules
の詳細は弊社ブログもご覧ください。
rules:exists
は、キーワードを定義したリポジトリ中のファイルを対象とします。このため、rules:exists
と include
を組み合わせる場合、 include
で特定のファイルの存在を検知するには、 include
で指定するテンプレートに rules:exists
を定義する必要がありました。このように複数のテンプレートにまたがって設定を行うと、パイプラインの挙動を追いかけづらくなり、パイプラインの管理・変更が難しくなる原因ともなります。
本リリースではこれに project
ref
という2つのサブキーを追加し、別Projectのファイルに対しても rules:exists
を適用できるようになりました。これにより複数のテンプレートにまたがって条件を定義する必要がなくなり、上記の課題を解消できます。
- CI/CD YAML syntax reference | GitLab
- Backend: include:rules:exists acts differently than <job>:rules:exists (#386040) · Issues · GitLab.org / GitLab · GitLab
※参考:
after_script
キーワードの挙動の変更
after_script
はGitLab CI/CDで利用できるキーワードの一つで、メインの script
部分の処理が完了した後に実行するスクリプトを定義します。多くはJob完了後のリソースクリーンアップなどを定義し、CI/CD実行後の後処理を実行しています。
これまで after_script
はJobがキャンセルされた場合は実行されないという仕様でしたが、本リリースからはJobがキャンセルした場合も常に起動するよう変更されました。
※本変更は破壊的変更の一つとして、後程紹介するGitLabのブログにも記載されています。
- Scripts and job logs | GitLab
- Ensure after_script is called for canceled jobs (&10158) · Epics · GitLab.org · GitLab
main
ci
の2つのDatabaseの利用がBetaバージョンに
GitLab Self-managed版を利用する殆どの環境では1つのDatabaseだけを利用しています。一方GitLab SaaS版では main
ci
という2つのDatabaseを利用しています。GitLabではSaaS版とSelf-managed版のセットアップを同等にするため、16.0からは2つのDatabaseへの接続がデフォルトとなりました。
※参考:
今後の予定として、GitLabは19.0までは単一のDatabase利用をサポートするものの、19.0からは2つのDatabaseを利用する形態しかサポートしないようになります。そのため利用者は19.0にバージョンアップするまでにDatabaseを移行する必要があります。この移行はダウンタイムを伴うため、あらかじめ計画的に実施する必要があります。
- Multiple Databases | GitLab
- Update Docs: 17.0 Remove support for single database connection (#432391) · Issues · GitLab.org / GitLab · GitLab
その他
GitLab Duo関連
- JetBrainsでのDuo Chatの呼び出しが簡単に:
Alt
+D
ショートカットで呼び出せるようになりました (Premiumプラン以上で利用可能)。 Document / Issue - JetBrainsで1PasswordとGitLab Duo pluginを統合: これまでJetBrainsの設定に記載していたPersonal access tokenを1Passwordで管理可能となりました (Premiumプラン以上で利用可能) 。 Document / Issue
Role関連
Reporter
RoleにDesign management機能へのアクセス権を付与: Document / IssueGuest
RoleでIssue関連の権限を更新:Guest
RoleでIssue/Taskの関連付け等が可能となりました(Premiumプラン以上で利用可能)。 Document / Epic- 既存のCustom Roleを修正可能に: Ultimateプランで利用可能。 Document / Issue
- インスタンスレベルでのCustom Roleを設定可能に: Self-managed版 (Ultimateプラン) で利用可能。 Document / Issue
- Custom Roleで新しい権限を設定可能に: Security policy link / compliance framework / webhook / push rulesの権限が追加されました。 Document / Issue
- Custom RoleのUX改善: 新規Role作成時の挙動やCustom role tableなど、いくつかの改善が行われました (Ultimateプランで利用可能)。 Document / Issue
CI/CD関連
- Deployment detailed viewの導入: Premiumプラン以上で利用可能。 Document / Issue
- CI/CD job token allowlistにGroupを登録可能に: 他のProjectもjob tokenを利用可能にするallowlistにGroupを登録し、Groupと紐づくProjectを一度に大量に登録可能になりました。 Document / Issue
- GitLab UIでCommit Signingが可能に: Self-managed版で利用可能。 Document / Issue
- Package Registry上でアップロードに失敗したパッケージをフィルター可能に: Document / Issue
- GitLab agent for Kubernetesで共有可能なProject / Group数の上限を引き上げ: Document / Issue
- GitLab agent for KubernetesでFIPSモードをサポート: Self-managed版で利用可能。 Document / Issue
- Deploymentの追跡するMerge requestにFast-forward mergeを追加: Document / Issue
Project管理関連
- Epic削除時の挙動を変更: Epic削除時は関連するIssueとの紐づけを解除するようになりました(Premiumプラン以上で利用可能)。 Document / Issue
- Issue card上でMilestone/Iterationの詳細を閲覧可能に: Document / Issue
- Roadmap上でEpicを作成日などで並べ替え可能に: Premiumプラン以上で利用可能。 Document / Issue
- Project comment templateの導入: Project単位でComment templateを設定可能になりました (Premiumプラン以上で利用可能) 。 Document / Issue
- 招待されたメンバーをMemberタブからも閲覧可能に: Group/Projectに招待されたユーザーをMemberタブから閲覧可能になりました。 Document / Issue
- Private GroupのメンバーもMemberタブから閲覧可能に: Public Group/ProjectがPrivate Groupを招待したときもMemberタブに全てのメンバーが表示されるようになりました。 Document / Issue
- デフォルトのbranch protection設定をprotected branchと同じように設定可能に: Ultimateプランで利用可能。 Document / Issue
セキュリティ関連
- API Security Testing analyserのアップデート: Ultimateプランで利用可能。 Document / Issue
- Dependency ScanningでサポートするPythonのバージョンが3.11に変更: Ultimateプランで利用可能。 Document / Issue
- DASTを実行するRunnerがarm64 / amd64のいずれも対応可能に: Ultimateプランで利用可能。 Document / Issue
- Secret detectionに対するAdvanced vulnerability trackingの導入: Secretを含むファイル内でSecret情報の位置が変更された場合、もしくは同じSecretの値が同じファイルで検知された場合は検知しないよう動作します (Ultimateプランで利用可能) 。 Document / Issue
- remote ruleset経由でのSecret detection rulesetの上書きをサポート: Ultimateプランで利用可能。 Document / Issue
- SAST analyzerの改善: 改善に伴いSAST CI/CD templateも更新されるようです。 Document / Issue
- Security policy botの有効・無効を変更可能に: Ultimateプランで利用可能。 Document / Issue
- Merge request approval policyで
fallback_behavior
オプションを追加: ポリシー違反時のMerge requestをブロックするかの設定に柔軟性が追加されました (Ultimateプランで利用可能) 。 Document / Epic - Vulnerability reportのフィルター改善: Ultimateプランで利用可能。 Document / Epic
Project import関連
- BitBucket CloudをGitLab REST API経由でインポート可能に: Document / Issue
- Direct transfer経由でインポートされたアイテムを識別可能に: Document / Issue
- Projectの再インポート可能に: 大量のデータを持つProjectをインポートした際に一部ファイルが追加されない問題への対応として、再インポートが実装されました (Document / Issue)
Analytics関連
- Value Streams Dashboardに使用量の概要を示すパネルを導入: Ultimateプランで利用可能。 Document / Issue
- Value Streams Dashboardで新しいmetricsを追加:
マージまでにかかる時間の中央値
が利用可能になりました(Ultimateプランで利用可能)。Document / Issue - Value Streams Dashboardパネルをより簡単にカスタマイズ可能に: Ultimateプランで利用可能。 Document / Issue
Deprecation情報
- GraphQLから
previousStageJobsOrNeeds
を削除: 18.0でpreviousStageJobsOrNeeds
が削除され、代わりにpreviousStageJobs
とneeds
に置き換わります。 Document - サポート外の方法でのGraphQL APIへのアクセスを排除: 17.0からはサポートされたTokenタイプでのアクセスのみをサポートします。 Document
その他
- Switchboardから設定変更のログを閲覧可能に: Self-managed版 (Ultimateプラン) で利用可能。 Document / Issue
- Jira issueをGItLab REST API経由で閲覧可能に: Premiumプラン以上で利用可能 (Document / Issue )
- 複数のJiraプロジェクトからIssueを閲覧可能に: Jira issue integration利用時、複数のJiraプロジェクトのIssueを閲覧可能となりました(Premiumプラン以上で利用可能)。 Document / Issue
- GitLab Runner 17.0: Document
- Service Deskに最大10名までGitLab外の参加者を追加可能に: Document / Issue
- 未検証の追加メールアドレスを自動削除するように: Document / Issue
- bot userを含むアバターの変更が可能に: SaaS版で利用可能。 Document / Issue
- Admin modeのセッションを識別可能に: Self-managed版で利用可能。 Document / Issue
- GitLab Operator用のHelmチャートへの修正: Self-managed版で利用可能。 Document
- Linuxパッケージの変更: CentOS 7が6月でEoLになるのを受け、GitLab 17.1がCentOS 7向けに提供する最後のバージョンとなります。 Document
バージョンアップに伴う破壊的変更
既にGitLabブログで案内されていましたが、GitLab 17.0 では多くの破壊的変更を含んでいます。SaaS版を利用している場合はすでにバージョンアップされていますが、どんな影響があるかは確認したほうが良いでしょう。
いくつか取り上げますと、既に紹介した after_script
の変更のほか、GitLab agent for KubernetesのPullベースのデプロイ機能の廃止、Registration tokenの /api/v4/runners
エンドポイント向けのPOSTによる操作の廃止などを含みます。
なおバージョンアップをする場合はいくつかの注意事項があります。
- GitLab環境のエラー追跡にSentryを使っている場合、Sentryを21.5.0以上にアップデートする必要があります。
- 17.0に更新する前に16.11にバージョンを更新し、バックグラウンドマイグレーションを完了しておく必要があります。
さいごに
弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。