APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

GitLab 17.0 の紹介: CI/CD CatalogのGA、Linux ArmベースのRunner導入、GitLab Duo ChatのClaude 3 Sonnetへの変更など

こんにちは、クラウド事業部 CI/CDサービスメニューチームの山路です。

今回は5月16日にリリースされたGitLab 17.0 のアップデート内容を紹介します。本記事ではすべてのアップデート情報を詳細に記載してはいませんので、興味ある内容があれば各ドキュメントを参照ください。

about.gitlab.com

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 を指定するしかできませんでしたが、本アップデートにより最新のマイナーバージョンを取得するという選択肢が生まれ、新しいバージョンを安全に使いつつメンテナンスの手間を省くことができます。

2つ目はCI/CD Catalogのリリース方法の共通化です。

本リリースからCI/CD Catalogを公開する際の方法が変更され、 .gitlab-ci.ymlrelease-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"

※参考:

about.gitlab.com

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のライセンス契約が必要となります。興味のある方は早めに試した方がよいでしょう。

※参考:

about.gitlab.com

Linux ArmベースのHosted runnerの導入

GitLab SaaS版のPremiumプラン以上のユーザーは、本リリースからLinux ArmベースのHosted runnerを使用可能となりました。これにより以前よりもGitLab CI/CDを高速で処理でき、これまでよりも早いフィードバックの提供やコスト効率が高いRunnerを採用できます。

なお現時点では4 / 8 vCPUの2つのタイプからRunnerのスペックを選択できます。

GitLab Duo ChatのモデルをClaude 3 Sonnetに変更

GitLab Duo Chatは以前はClaude 2.1を利用していましたが、本リリースでより高性能のClaude 3 Sonnetを利用するように変更されました。

なおGitLab Duo Chatについては先日弊社ブログでも紹介いたしましたので、良ければそちらもご覧ください。

※参考:

techblog.ap-com.co.jp

GitLab Duo Chatの一部機能をSelf-managed版でも利用可能に

本リリースより、GitLab Self-managed版で、Gitlab Duo Chatに対し、GitLabに関する質問を投げられるようになりました。

GitLab Duo Chatはチャット欄から様々な質問を投げられる機能がありますが、その中で問い合わせの多いものにGitLabに関する質問があるようです。以前はSaaS版でのみGitLabに関する回答をもらえていましたが、本リリースからSelf-managed版でも利用可能となりました。

rules:existsproject / ref というサブキーを追加

rules:exists はGitLab CI/CDのキーワードの一つで、リポジトリ中に特定のファイルが存在する場合にJobを起動するよう制御することができます。

rules の詳細は弊社ブログもご覧ください。

rules:exists は、キーワードを定義したリポジトリ中のファイルを対象とします。このため、rules:existsinclude を組み合わせる場合、 include で特定のファイルの存在を検知するには、 include で指定するテンプレートに rules:exists を定義する必要がありました。このように複数のテンプレートにまたがって設定を行うと、パイプラインの挙動を追いかけづらくなり、パイプラインの管理・変更が難しくなる原因ともなります。

本リリースではこれに project ref という2つのサブキーを追加し、別Projectのファイルに対しても rules:exists を適用できるようになりました。これにより複数のテンプレートにまたがって条件を定義する必要がなくなり、上記の課題を解消できます。

※参考:

techblog.ap-com.co.jp

after_script キーワードの挙動の変更

after_script はGitLab CI/CDで利用できるキーワードの一つで、メインの script 部分の処理が完了した後に実行するスクリプトを定義します。多くはJob完了後のリソースクリーンアップなどを定義し、CI/CD実行後の後処理を実行しています。

これまで after_script はJobがキャンセルされた場合は実行されないという仕様でしたが、本リリースからはJobがキャンセルした場合も常に起動するよう変更されました

※本変更は破壊的変更の一つとして、後程紹介する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への接続がデフォルトとなりました。

※参考:

about.gitlab.com

今後の予定として、GitLabは19.0までは単一のDatabase利用をサポートするものの、19.0からは2つのDatabaseを利用する形態しかサポートしないようになります。そのため利用者は19.0にバージョンアップするまでにDatabaseを移行する必要があります。この移行はダウンタイムを伴うため、あらかじめ計画的に実施する必要があります。

その他

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 / Issue
  • Guest 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 が削除され、代わりに previousStageJobsneeds に置き換わります。 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による操作の廃止などを含みます。

about.gitlab.com

なおバージョンアップをする場合はいくつかの注意事項があります。

  • GitLab環境のエラー追跡にSentryを使っている場合、Sentryを21.5.0以上にアップデートする必要があります。
  • 17.0に更新する前に16.11にバージョンを更新し、バックグラウンドマイグレーションを完了しておく必要があります。

さいごに

弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。

www.ap-com.co.jp