こんにちは、クラウド事業部 CI/CDサービスメニューチームの山路です。
今回は6月20日にリリースされたGitLab 17.1 のアップデート内容を紹介します。本記事ではすべてのアップデート情報を詳細に記載してはいませんので、興味ある内容があれば各ドキュメントを参照ください。
- Model registryがベータ版に
- GitLab Duo Code SuggestionsはVSCode上で複数の候補を表示可能に
- Secret Push Protection機能がベータ版に
- GitLab Runner AutoscalerがGAに
- Manual Job実行時に確認ボタンを表示可能に
- その他
- さいごに
Model registryがベータ版に
Model registryは機械学習で生成したモデルを管理する機能であり、機械学習エンジニアや開発者がGitLab上でモデルを開発しつつ、過去のバージョンのモデルの情報などにアクセスすることを可能にし、コラボレーションや生産性を向上することが見込めます。
GitLabはMLflow と連携したModel experiment tracking やModel registryを提供しており、MLflowを使ってモデルやモデルのバージョンを作成することもできます(Model registryはGitLab UIからモデルを作成・削除することも可能です)。なおGitLab CI/CDから新しいモデルのバージョンを作成する際は、MLflow client compatibilityを使ってモデルバージョンとCI/CD Jobとを紐づけ、作成時のログやMerge requestなどにアクセスしやすくすることも可能です。
GitLab Duo Code SuggestionsはVSCode上で複数の候補を表示可能に
GitLab Duo Code Suggestionsは生成AIを使ったコーディング補助機能です。Code Suggestionsは複数のIDEから利用可能ですが、VSCode上で利用する場合、生成するコードに複数の候補が存在するときに候補を表示するようになりました。
以下はリリースページにある画像ですが、 2/3
と表示されるとおり、ここでは3つの候補の中から2番目の候補が表示されています。IDE上で矢印をクリック、もしくはショートカットコマンドを入力すれば他の候補も表示され、より適したコードを採用することができます。
なお、他のIDEで同じような機能の追加予定はあるか?と思いIssueを眺めてみたのですが、それらしいものは見当たりませんでした。
- Supported extensions and languages | GitLab
- [VS Code] Cycle Through Code Suggestions (#1325) · Issues · GitLab.org / gitlab-vscode-extension · GitLab
Secret Push Protection機能がベータ版に
Secret Push Detectionは、GitLabにPushされたコミットにカギ情報やAPIトークンなどのSecretが含まれた時にそれを妨害し、Secretの含まれたコミット情報(どのファイルの何行目にSecretを含むか、など)を表示する機能です。
※上記画像はGitLabの公開するYoutube動画より抜粋したものです。
Gitリポジトリに秘匿情報が混入すると、リポジトリにアクセスできる人ならだれでもその情報を閲覧でき、悪意あるユーザーの手に渡る可能性があります。また一度Gitリポジトリに秘匿情報が混入すると、そのデータを完全に削除することは困難です。
※参考情報:
Gitリポジトリへの秘匿情報の混入を防ぐツールとしては Gitleaks / git-secrets といったものがあります。GitLabでもSecret Detection という機能により、CI/CD JobでSecretの混入を検知する機能がありましたが、CI/CDのトリガーから漏れたコミットについてはSecretの混入を検知する機会がありませんでした。
なお本機能はGitLab SaaS Ultimateプランでのみ利用可能です。
- Secret push protection | GitLab
- Make Secret Push Protection available in Beta on GitLab.com (&12729) · Epics · GitLab.org · GitLab
GitLab Runner AutoscalerがGAに
GitLabはCI/CD Jobを実行するGitLab Runnerをオートスケールする機能を提供していますが、このたびGitLab Runner AutoscalerがGAステータスとなりました。なお本リリースでGAとなったのは、GitLab Runner Autoscalerを構成する要素の一つであるFleeting plugin (Google Cloud Compute Engine向け) のようです。
これまでGoogle CloudのVMに作成したGitLab Runnerをオートスケールするには、Docker Machine Executor を使うか、ユーザーごとに解決策を見つけなければなりませんでした。Docker Machineは本体であるDocker社が既に開発とサポートを停止しており、GitLabがForkしたものをメンテナンスし提供しています (関連するIssueはこちら)。GitLabではGitLab Runner Autoscalerへの移行を計画しており、本リリースをもってGoogle CloudではGitLab Runner Autoscalerを安心して使える状態になったといえるでしょう。
なおIssueを眺めてみると、AWS EC2向けのFleeting pluginは17.2、Azure VM向けFleeting plugin は17.3にマイルストーンが設定されていました。そのため、順調に進めば数か月後には、3つのクラウドプロバイダー全てでFleeting pluginが使えるようになるでしょう。17.3以降Docker Machine Executorの利用がすぐに廃止されるとは思いませんが、計画的に移行の準備はしておきたいところです。
- GitLab Runner Autoscaling | GitLab
- GitLab Runner Fleeting plugin for GCP Compute Engine - GA (#29221) · Issues · GitLab.org / gitlab-runner · GitLab
Manual Job実行時に確認ボタンを表示可能に
GitLab CI/CDのManual Jobは手動でのCI/CD Jobの起動を制御しており、例えば本番環境へのデプロイなどで使われることがあります。このような重要なJobを扱うことが多いにもかかわらず、これまでManual Jobはボタンをクリックすれば即時Jobが実行されるため、誤ったタイミングでのJob実行のリスクがありました。
本バージョンからManual Jobは manual_confirmation
というパラメータを .gitlab-ci.yml
に設定することで、Job実行前の確認ボタンが表示されるようになり、より安全にManual Jobを実行できるようになりました。
delete_job: stage: post-deployment script: - make delete when: manual manual_confirmation: 'Are you sure you want to delete $CI_ENVIRONMENT_SLUG?'
※GitLabドキュメントより抜粋
- Control how jobs run | GitLab
- Confirmation for manual CI actions (#18906) · Issues · GitLab.org / GitLab · GitLab
その他
これ以降はその他のアップデート情報の紹介です。
Container registry関連
- Container registryが署名付きイメージと連携: Cosignにより署名されたコンテナイメージがContainer registry上で識別可能となりました (SaaS版で利用可能、Self-managed版はnext-generation container registryを有効にすることでベータ版を利用可能)。 Document
- コンテナイメージが最後に発行された日付を表示するよう修正: SaaS版で利用可能。Self-managed版はnext-generation container registryを有効にすることでベータ版で利用可能。 Document
- Registry向けContainer Scanningにより
latest
タグのイメージを自動的にスキャン:latest
タグのイメージがPushされるとContainer Scanning Jobを含むパイプラインが作成され、脆弱性のチェックなどが行われます。Ultimateプランで利用可能。 Document - Container registryタグを発行日で並べ替え可能に: SaaS版で利用可能。Self-managed版はnext-generation container registryを有効にするとベータ版で利用可能。 Document
GitLab Pages関連
- GitLab APIコールでのmTLSをサポート: SSL証明書によるクライアント認証が可能になり、セキュリティ強化が可能になりました。 Document
- Pageの名称を変更すると古いPage名からのリダイレクトが有効に: Document
- PagesのUIを改善: 画面スペースの変更など。
Project Import関連
- Direct transferによるProject import時にinherited membershipも複製するよう修正: Groupに属するProjectのメンバーは、GroupからRoleを受け継ぎます (inherited membership)。Direct transferでImportするときにこの受け継いだRoleも複製されるよう修正されました。
- Importされなかったアイテムだけを選択して再ImportすることがAPIで可能に: Document
- Direct transfer migrationをREST APIからキャンセル可能に: これまではRails consoleからしか実行できませんでした。 Document
Deprecation
- OpenTofu CI/CD template: GitLab CI/CD components for self-managed userの導入に合わせ、18.0で廃止予定です。
- Container registry通知向けのパラメータの置き換え: 18.0で
threshold
というパラメータをmaxretries
に置き換える予定です。
その他
※こちらをクリックすると展開されます
- Snowflake MarketplaceでGitLab connector applicationが利用可能に: Ultimateプランで利用可能。
- WikiページのUX改善: Cloneボタンの改善 / Deleteボタンの表示場所を修正 / 空のWikiページを有効にする など。
- 新しいValue Stream Managementレポート生成ツールの発表: DevSecOps comparison metrics report / AI Impact analytics reportをスケジュール実行で生成可能に (Ultimateプランで利用可能)。 Document
- Group向けのRunner fleet dashboardの提供: Ultimateプランで利用可能。 Document
- System / Group / Project webhook追加時にaudit eventを作成するように: Premiumプラン以上で利用可能。
- REST APIからGroup向けのTest hookを発行可能に: 以前はProject hookのみ可能でした (Premiumプラン以上で利用可能)。 Document
- REST APIからcustom webhook headerを設定可能に: Document
- 高解像度画像アップロード時にダウンスケール可能に: Document
- Rich text editorでメディアをドラッグ&ドロップで移動可能に: Document
- Issue board上でIssueを更新したときのUXを改善: Document
- Quick action / time tracking widgetからタスクの見積もり時間と経過時間を設定可能に: Document
- Epicの進捗状況がWeightの値に従って表示されるように: Epicに紐づくアイテムのWeightの総量に対する完了の度合いが表示され、Epicのフルスコープでの進捗状況を簡単に見れるようになりました (Premiumプラン以上で利用可能)。 Document
- ユーザー定義の変数を上書きする権限制御をより柔軟に : Project APIから
ci_pipeline_variables_minimum_role
という設定にRoleを指定し、変数の上書きを許可するRoleを指定できるようになりました。 Document - Code reviewの通知メールにdiffのpreview画面を表示しないよう設定可能に: Document
- Release情報をRSS feedで取得可能に: ReleaseページのRSSアイコンからサブスクライブが可能になりました。 Document
- API Security testing analyzerの更新: Ultimateプランで利用可能。 Document
- Adminユーザーはメールアドレスからユーザーを検索可能に: Self-managed版で利用可能。 Document
- Custom role向けの新しい権限の追加: Manage merge request settings / Manage integration / Manage deploy tokens / Read CRM contactsの追加。 Document
- Fuzz testing analyserの更新: Ultimateプランで利用可能。 Document
- Policy editor内でMerge request approval policiesのFail open/closedを選択可能に: Ultimateプランで利用可能。 Document
- Groups APIからレスポンスを
marked_for_deletion_on
でフィルター可能に: Premiumプラン以上で利用可能。 Document - Group / ProjectのVisibility levelの設定画面の改善: 全てのVisibility levelの選択肢が表示され、利用できないものは灰色で表示されるようになりました。 Document
- Project Owner/maintainerはProject access tokenの期限が迫ると通知が飛ぶように: Document
- 新しいGraphQL API argument
markedForDeletionOn
がGroup/Project向けに利用可能に: Document - 新しいGraphQL API field
User.contributedProjects
でcontributeしたProjectのリストを取得可能に: Document - Members APIからユーザー名でメンバーを追加可能に: 以前はユーザーIDでしか指定できませんでした。 Document
- Group / Projectバッジ向けの新しいplaceholder:
%{project_namespace}
%{group_name}
%{gitlab_server}
%{gitlab_pages_domain}
が利用可能に。 - バッジ向けの
%{latest_tag}
placeholderが利用可能に: Document - Projects APIで
marked_for_deletion_on
によるフィルターが可能に: Premiumプラン以上で利用可能。 Document - Group Exploreページの並べ替え・フィルター機能を更新: Document
- Project Exploreページの並べ替え・フィルター機能を更新: Document
さいごに
弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。