GitLab 16.7リリースノート
2023年12月21日、GitLab 16.7が以下の機能を伴ってリリースされました。
さらに、今月の注目すべきコントリビューターを含む、すべてのコントリビューターに感謝します。
今月の注目すべきコントリビューター
より広範なコミュニティの成長に引き続き注力する中、コアチームのメンバーによって選出された両MVPを大変喜ばしく思います。
ムハメッドは、GitLab RunnerでDockerイメージを使用する際にプラットフォームを指定するためのサポートを追加したことで推薦されました。このコントリビュートは9ヶ月間の協力期間を要し、バグの修正にフォローアップが必要となった際のムハメッドの献身と忍耐を示しました。これにより、人気のあった2年前のイシューが解決されました。「長らく待たれていた機能を実用化する上で、GitLab Runnerチームが私をサポートしてくれたことに感謝します」とムハメッドは述べています。ムハメッドはAirtime Rewardsのオートメーションエンジニアで、主にTerraformを扱い、エンジニアリングチーム内でCI/CDと自動化の実践を推進しています。
ニクラスは、さまざまな形での継続的なコントリビュートとサポートが評価され、推薦されました。本日は、彼が最後にMVP賞を受賞してからちょうど1年になります。ニクラスは、GitLabチームメンバーにとっても困難な作業に取り組み、より広範なコミュニティコントリビューターを維持する上で大きな役割を果たしています。推薦イシューで詳細をご確認ください。
ムハメッド、ニクラス、ありがとうございます!🙌
主要な機能
GitLab Duoコード提案が一般公開されました
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
- リンク: ドキュメント
GitLab Duoコード提案が一般公開されました!
GitLab Duoコード提案は、コード行の補完や関数のロジックの定義と生成により、チームがソフトウェアをより迅速かつ効率的に作成できるよう支援します。
コード提案は、プライバシーを重要な基盤として構築されています。GitLabに保存されている非公開の顧客コードは、トレーニングデータとして使用されません。コード提案を使用する際のデータ使用について学習してください。
一般リリースでは、複数のIDEでコード提案を利用できるようになりました。コード提案は、より直感的で応答性が向上しました。
GitLab Duoコード提案は、2024年2月15日までGitLabテスト規約に基づいて無料で試用できます。本日から、コード提案をGitLabのサブスクリプションのアドオンとして、月額9米ドルの導入価格で購入できます。コード提案の利用を開始するには、お問い合わせください。
GitLab PagesをDNSワイルドカードなしで使用する
これまで、GitLab Pagesプロジェクトを作成するには、name.example.ioやname.pages.example.ioのような形式のドメインが必要でした。この要件は、ワイルドカードDNSレコードとSSL/TLS証明書を設定する必要があることを意味していました。GitLab 16.7では、DNSワイルドカードなしでGitLab Pagesプロジェクトを設定できます。この機能は実験です。
ワイルドカード証明書の要件をなくすことで、GitLab Pagesに関連する管理オーバーヘッドが軽減されます。一部の顧客は、ワイルドカードDNSレコードまたは証明書に対する組織的な制限のため、GitLab Pagesを使用できません。
この機能に関するフィードバックは、イシュー434372でお待ちしております。
インサイトレポートのチャートからの新しいドリルダウンビュー
インサイトレポートを使用すると、カスタマイズ可能なチャートを使用して経時的なパターンを分析できます。「優先度別作成バグ」および「重大度別作成バグ」インサイトレポートに追加された新しいドリルダウン機能により、より詳細な分析のためにイシューアナリティクスレポートをドリルダウンできます。
この機能は、以降のバージョンでカスタムオプションとして他のインサイトレポートにも含める予定です。
SASTの結果をMR変更ビューに表示
SASTの検出結果が、マージリクエストの変更ビューに表示されるようになりました。これにより、コードレビュープロセス中に潜在的な弱点を簡単に確認、理解、修正できます。
SASTのイシューを含む行は、ガターの横に記号でマークされます。記号を選択すると問題のリストが表示され、問題を選択するとその詳細が表示されます。
この機能はGitLab.comで有効化されています。GitLab 16.8では、Self-Managedインスタンス向けに機能フラグをデフォルトで有効にする予定です。
CI/CDカタログ - ベータリリース
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
GitLab 16.7では、CI/CDカタログのベータリリースが行われました!このカタログは、あなた、あなたの組織、または公開コミュニティによって管理されているCI/CDコンポーネントを検索できる場所です。ここは、DevOpsエンジニアが集まって、再利用可能なパイプラインの設定を作成し、コントリビュートする場です。
CI/CD設定を再利用する他の方法とは異なり、カタログに公開されているCI/CDコンポーネントは、改善されたエクスペリエンスを提供し、パイプラインに簡単に追加できます。この新しくエキサイティングな機能をぜひお試しください!他のユーザーが作成してカタログで共有したコンポーネントを試したり、独自のコンポーネントを作成して全員と共有したりできます。
これは本機能の最初のベータリリースですが、私たちはエクスペリエンスをさらに向上させるために作業を続けています。私たちの目標は、CI/CDカタログをGitLab CI/CDエクスペリエンスの基本的な部分にすることです。
規模とデプロイ
ユーザープロファイルにMastodonハンドルを追加
ユーザープロファイルにMastodonハンドルをリストできるようになりました。この機能強化により、私たちはFediverseソーシャルネットワークをサポートし、GitLab向けActivityPubの進展に貢献します。
グループの説明が500文字に拡張
グループの説明に最大500文字を含めることができるようになりました。500文字を超えるグループの説明を保存しようとすると、説明が長すぎることを示す警告メッセージが表示されます。このコミュニティコントリビュートを@freznicekに感謝します!
検索結果ページで検索バーがより目立つように
検索結果ページで検索バーがより目立つようになりました。検索バーの表示レベルを向上させるため、グループとプロジェクトのフィルターは左サイドバーに移動されました。
高度な検索でコードを含むイシューの発見をより容易に
GitLab 16.7では、コードを含むイシューの発見がより容易になりました。高度な検索で、コードスニペットやログが説明に含まれるイシューを見つけられるようになりました。
表示する時刻形式をカスタマイズ
これまで、GitLabは12時間形式で時刻を表示しており、これを変更することはできませんでした。
今回のリリースから、コミュニティコントリビュートのおかげで、イシューリストや概要ページ、ステータス設定時など、時刻を表示する際に使用される形式をカスタマイズできるようになりました。時刻は次の形式で表示できます。
- 12時間形式。例:
2:34 PM - 24時間形式。例:
14:34
Thorben Westerhuys氏によるこのコミュニティコントリビュートに感謝いたします。
次のマイルストーンでは、GitLab製品全体で表示されるすべてのタイムスタンプがこの設定を尊重するように監査します。
左サイドバーから管理者エリアにアクセス
管理者は、左サイドバーの下部にあるリンクを使用して、1ステップで管理者エリアにアクセスできるようになりました。以前は、検索または移動先を選択してから、Admin Areaを選択する必要がありました。この変更により、管理者エリアにアクセスする際の時間を節約できるはずです。
ハードコードされた移行完了時間制限を削除
ダイレクト転送によって行われるGitLabグループおよびプロジェクトの移行は、さまざまな理由で停止することがあります。これまで、これらの移行が未完了の状態で無期限に放置されるのを避けるため、GitLabは8時間以内に完了しなかった移行を特定するために定期的にワーカーを実行していました。GitLabはこれらの移行をタイムアウトとしてマークしていました。
大規模な組織の場合、移行プロセスは8時間以上かかることがあり、この時間では移行が停止しているかどうかを適切に判断するのに十分ではありませんでした。結果として、このワーカーは移行を誤って停止中とマークしていた可能性があります。
今回のマイルストーンでは、8時間の時間制限を使用する代わりに、子ワーカーが24時間停止した場合にのみGitLabが移行を停止中とマークするようになりました。
ダイレクト転送によるインポートの包括的な結果
ユーザーにとってインポートプロセスの結果を理解することがいかに重要であるかを認識し、今回のマイルストーンでは、ダイレクト転送によるインポートに表示される情報をさらに改善しました。GitLabグループとプロジェクトの隣にインポートステータスバッジを表示するようになりました:
インポートステータスバッジは次のとおりです:
- 開始されていません
- 保留中
- インポート中
- 失敗した
- タイムアウト
- キャンセルしました
- 完了
- 一部のみが完了
Partially completed badgeバッジは今回のリリースで追加され、マージリクエストやイシューなど、一部の項目がインポートされなかった完了済みのインポートプロセスを識別します。
インポートプロセスが開始されたグループには、その特定のグループのインポートされたサブグループとプロジェクトを表示する詳細を表示リンクがあります。そこから、See failuresリンクをクリックすることで、インポートできなかった項目(もしあれば)のリストを確認できます。See failuresは前回のリリースでリリースされました。
今回のマイルストーンでは、これらのページ間のパンくずリストによるナビゲーションも改善しました。
外部参加者がコメントした場合にサービスデスクのイシューを再オープン
外部参加者がメールでイシューに新しいコメントを追加した際に、クローズされたイシューを再オープンするようにGitLabを設定できるようになりました。これにより、イシューが解決された後でも、進行中の会話を完全に可視化できます。
また、イシューの割り当て先が言及される内部コメントを追加し、彼らのためのTo-Do項目を作成します。これにより、フォローアップメールを二度と見逃すことがなくなります。
バックアップが代替圧縮ライブラリをサポート
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
COMPRESS_CMDコマンドとDECOMPRESS_CMDコマンドを使用して、バックアップのために、デフォルトのシングルスレッドgzip圧縮ライブラリを任意の代替圧縮ライブラリでオーバーライドできるようになりました。これにより、並列圧縮ライブラリを活用して、最新のマルチコアプロセッサの能力を使用することで、バックアップの圧縮段階を高速化できます。これらのコマンドには、圧縮ライブラリにオプションを渡すサポートが含まれており、圧縮レベルや速度などのパラメータを調整できます。
統合されたDevOpsとセキュリティ
エグレスルールを持つネットワークポリシーを定義
- プラン: Premium、Ultimate
- リンク: ドキュメント
GitLab 16.7では、Kubernetes向けGitLabエージェントをワークスペースをサポートするように構成する際に、エグレスルールを持つネットワークポリシーを定義できるようになりました。この機能は、GitLabインスタンスがプライベートIPに解決されるSelf-Hostedインストール、またはワークスペースがプライベートIP範囲のクラウドリソースにアクセスする必要がある場合に使用できます。
グループにカスタム絵文字を追加
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
自分自身を表現するために良い絵文字を好まない人がいるでしょうか?GitLab全体で項目にコメントする際、デフォルトの絵文字セットを使用してリアクションを追加していましたが、時にはそれらの絵文字だけでは感情を表現するのに十分ではありませんでした。グループはプロジェクト全体で使用するカスタム絵文字を追加できるようになりました。カスタム絵文字を使用すると、真の感情を表現し、チームの他のメンバーとより明確にコミュニケーションを取ることができます。次にどのようにリアクションするか楽しみにしています。
複雑なマージリクエストの依存関係チェーンをサポート
- プラン: Premium、Ultimate
- リンク: ドキュメント
GitLabのマージリクエストの依存関係は、他の変更に依存するコード変更が、コードベースを壊す可能性のある方法でマージされないようにするための優れた方法です。これまで、GitLabは複雑な依存関係チェーンを許可しておらず、循環参照や深いネストを引き起こす可能性がありました。
依存関係の階層とチェーン内の項目に関する制限が削除されました。マージリクエストの依存関係は、より複雑になりました。1つのマージリクエストは最大10個のマージリクエストによってブロックされ、その結果、他の10個のマージリクエストをブロックできます。より深い依存関係チェーンにより、より複雑なワークフローを依存関係を介して表現できるようになります。この機能の利用がどのように展開されていくかを楽しみにしています。
マージリクエストに承認が必要な場合に通知を受け取る
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
マージリクエストに承認が必要な場合は、通知を受けて対応する必要があります。一部のユーザーは、承認が必要な場合にのみ通知を希望します。これは通常、変更をレビューするためにユーザーを名前で追加することで行われます。ただし、一部のユーザーは、名前でレビュアーとして追加されていない場合でも、承認の資格があるすべてのマージリクエストに対して通知を希望します。
Added as approverカスタム通知レベルを有効にすると、承認の資格がある各マージリクエストに対してメールとTo-Doをトリガーできます。これにより、プロセスのできるだけ早い段階でマージリクエストを認識し、提案をマージするための行動を取ることができます。
OpenTofuのベータサポート
TerraformからOpenTofuに切り替える場合、このGitLabのリリースではOpenTofuの予備的なサポートが追加されます。OpenTofuはTerraformのフォークであるため、MRウィジェットのインテグレーション、モジュールレジストリ、およびGitLab管理のTerraform状態はデフォルトで機能します。GitLab IaC製品の使用を簡素化するために、gitlab-terraformヘルパーイメージにOpenTofuのサポートを追加しました。
GitLabは引き続き、MRウィジェット、モジュールレジストリ、およびGitLab管理のTerraform状態に対してTerraformをサポートします。
アクセストークンのローテーションにおけるカスタム期間
アクセストークンをローテーションする際に、新しいパラメータexpires_atをオプションで入力できるようになりました。これにより、トークンのカスタム有効期限日を作成できます。以前は、各ローテーションにより、前回の有効期限から1週間有効期限が延長されていました。この新しいオプションは、ローテーション間隔の柔軟性を提供します。
UIを使用してユーザーをカスタムロールに割り当てる
UIを使用して、新しいユーザーにカスタムロールを割り当てたり、既存のユーザーのロールをカスタムロールに変更したりできるようになりました。これは、現在ユーザーのロールを割り当てまたは変更できるUIのどの部分でも実行できます。以前は、APIを介してのみ行うことができました。
スキャン実行ポリシー内の変数に最高の優先順位を強制する
CI/CD変数の変数の優先順位が改善され、スキャン実行ポリシーで定義された変数が最初に優先されるようになりました。
組織がコンプライアンス要件を満たすために取り組むにつれて、ビジネス上重要なアプリケーションでセキュリティスキャナーが有効になっていることを確認することが一般的になっています。
スキャン実行ポリシーにより、チームはスキャナーを強制し、デフォルトおよびカスタムのCI/CD変数を定義できます。このCI/CD変数の変数の優先順位の強化により、パイプラインがどのようにトリガーされても、コンプライアンスを考慮して定義された変数が変更されないことをチームは確信できます。
SAML属性ステートメントがMicrosoft SAML属性形式をサポート
SAML属性ステートメントが、URL形式のMicrosoft SAML属性形式をサポートするようになりました。これまで、Self-Managedインスタンスの管理者は属性ステートメントを手動で設定する必要があり、GitLab.comのグループオーナーはSAMLレスポンスにカスタム属性を追加する必要がありました。この変更により、Self-Managed GitLabとGitLab.comの両方が、手動で設定を行うことなくMicrosoftと連携できるようになります。
リッチテキストエディタの改善
GitLab 16.2で、既存のMarkdown編集エクスペリエンスの代替としてリッチテキストエディタをリリースしました。リッチテキストエディタは、「WYSIWYG(見たままを編集)」編集エクスペリエンスと、図、コンテンツ埋め込み、メディア管理などのカスタム編集インターフェースを構築できる拡張可能な基盤を提供します。
GitLab 16.7では、リッチテキストエディタをMarkdown編集エクスペリエンスと一致するように変更し、報告されたバグを修正しました。Markdownとリッチテキストエディタ間で一貫性を持たせるためにラベルオートコンプリートモーダルの並べ替え順を変更、リッチテキストエディタのunassignクイックアクションで返されるオプションのバグを解決 、カスタム絵文字のサポートを追加 、および両方の編集エクスペリエンスで一貫性を持たせるためにクイックアクション選択ドロップダウンの外観を更新しました。
新しいコンテナリポジトリAPIでリポジトリのタグを一覧表示
以前は、コンテナリポジトリは、Docker/OCIのイメージタグレジストリAPIのリストに依存して、GitLabでタグを一覧表示および表示していました。このAPIには、パフォーマンスと検出可能性に重大な制限がありました。
このAPIは、レジストリに対するネットワークリクエストの数がタグリスト内のタグの数に応じてスケールするため、パフォーマンスが低下していました。さらに、APIが公開時間を追跡しなかったため、公開タイムスタンプがしばしば不正確でした。また、DockerマニフェストリストまたはOCIインデックスに基づいて画像を表示する場合、多重アーキテクチャ画像などの制限がありました。
これらの制限に対処するため、新しいレジストリのリポジトリタグをリストするAPIを導入しました。ユーザーインターフェースを新しいAPIを使用するように更新することで、コンテナリポジトリへのリクエスト数が1つに削減されます。公開タイムスタンプも正確になり、マルチアーキテクチャイメージに対するより堅牢なサポートが提供されます。
この機能はGitLab.comでのみ利用可能です。Self-Managedのサポートは、次世代コンテナリポジトリが一般公開されるまでブロックされています。詳細については、イシュー423459を参照してください。
GitLab.com上のコンテナリポジトリ内のコンテナイメージを持つプロジェクトの名前を変更
今回のリリース以前は、プロジェクトに関連付けられているすべてのコンテナイメージを最初に削除しない限り、少なくとも1つのタグを持つコンテナリポジトリがあるプロジェクトの名前を変更できませんでした。
これは、異なるプロジェクト名を使用する前に、カスタムスクリプトに頼ってすべてのタグを手動で削除/移動する必要があるという実際の問題でしたが、GitLab.comでは、レジストリにコンテナイメージがある場合でもプロジェクトの名前を変更できるようになりました!
バリューストリーム分析で事前定義された日付範囲でフィルタリング
バリューストリーム分析レポートには、過去30、60、90、180日間のデータに対するフィルターオプションが追加されました。これらの新しいフィルターオプションにより、日付選択プロセスが簡素化され、開発ライフサイクル中に時間がどこで費やされているかをより効率的かつユーザーフレンドリーに理解できるようになります。
依存関係スキャンにおける継続的脆弱性スキャンのサポート
継続的脆弱性スキャンが一般公開されました。CVSを有効にすると、アドバイザリがGitLabアドバイザリデータベースに追加されたときに、プロジェクトが自動的にスキャンされます。新しい依存関係関連の脆弱性が識別された場合、脆弱性が自動的に作成されます。
DAST脆弱性チェックの更新
- プラン: Ultimate
- リンク: ドキュメント
16.7リリースマイルストーン期間中に、ブラウザベースのDASTに対して以下の積極的なチェックをデフォルトで有効にしました:
- チェック89.1は、ZAPチェック40018、40019、40020、40021、40022、40024、40027、40033、および90018を置き換え、SQLインジェクションを識別します。
- チェック918.1は、ZAPチェック40046を置き換え、サーバーサイドリクエストフォージェリを識別します。
- チェック98.1は、ZAPチェック7を置き換え、PHPリモートファイルインクルージョンを識別します。
- チェック917.1は、ZAPチェック90025を置き換え、式言語インジェクションを識別します。
- チェック1336.1は、ZAPチェック90035とサーバーサイドテンプレートインジェクションを置き換えます。
DAST認証が多段階ログインフォームをサポート
新しいDAST_AFTER_LOGIN_ACTIONS変数を使用すると、ログイン後に実行するアクションのリストを提供できます。これにより、例えばAzure ADの「サインイン状態を維持する」ワークフローなど、多段階ログインインタラクションが可能になります。
SASTルールを更新し、誤検出結果を削減
GitLab SASTで使用されるデフォルトのルールセットを更新し、より高品質な結果を提供するようにしました。以前はデフォルトで含まれていた各ルールを分析し、ほとんどのコードベースで十分な価値を提供しないルールを削除しました。
ルール変更は、SemgrepベースのGitLab SAST アナライザーの更新されたバージョンに含まれています。この更新は、SASTアナライザーを特定のバージョンに固定していない限り、GitLab 16.0以降で自動的に適用されます。
削除されたルールからの既存のスキャン結果は、パイプラインが更新されたアナライザーでスキャンを実行した後に自動的に解決されます。
さらに多くのSASTルールの改善にエピック10907で取り組んでいます。
artifacts:public CI/CDキーワードが一般公開
以前は、artifacts:publicキーワードは、Self-Managedインスタンス向けのデフォルトで無効な機能としてのみ利用可能でした。今回、GitLab 16.7では、artifacts:publicキーワードをすべてのユーザーが一般的に利用できるようにしました。これで、CI/CD設定ファイルでartifacts:publicキーワードを使用して、ジョブのアーティファクトを公開アクセス可能にするかどうかを制御できます。
最新のジョブアーティファクトを保持する機能が向上
GitLab 13.0では、最新の成功したパイプラインからのジョブアーティファクトを保持する機能を導入しました。残念ながら、この機能は、失敗したパイプラインとブロックされたパイプラインも、それが最新であるかどうかにかかわらず、最新のパイプラインとしてマークしていました。これにより、ストレージにアーティファクトが蓄積され、手動で削除する必要がありました。
GitLab 16.7では、この意図しない動作を引き起こしていたバグが解決されました。失敗およびブロックされたパイプラインからのジョブアーティファクトは、最新のパイプラインからのものである場合にのみ保持されます。そうでない場合は、expire_in設定に従います。影響を受けるGitLab.comの顧客は、誤って保持されていたアーティファクトが、新しいパイプラインの実行後にロック解除されて削除されることを確認できるはずです。
成功した最新のジョブのアーティファクトを保持する設定は、ジョブのartifacts: expire_in設定をオーバーライドし、有効期限なしで大量のアーティファクトが保存される可能性があります。パイプラインが多くの大きなアーティファクトを作成する場合、プロジェクトのストレージクォータがすぐに満杯になる可能性があります。この機能が不要な場合は、この設定を無効にすることをお勧めします。
GitLab Runner 16.7
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
本日、GitLab Runner 16.7もリリースします!GitLab Runnerは、CI/CDジョブを実行し、結果をGitLabインスタンスに送信する、軽量で拡張性の高いエージェントです。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。
新機能
バグ修正
- exitコードが常に1であるため、カスタムexecutorでallow_failure:exitコードが使用できない
- RunnerヘルパーおよびKubernetes executor用のビルドコンテナにおけるシグナルのより良い処理を追加
GitLab Runnerのすべての変更リストは変更履歴にあります。
GitLab RunnerがSLSA v1.0ステートメントをサポート
Runnerは、SLSA 1.0に準拠した来歴メタデータを生成できるようになりました。SLSA 1.0を有効にするには、.gitlab-ci.ymlファイルでSLSA_PROVENANCE_SCHEMA_VERSION=v1変数を設定します。SLSAバージョン1.0ステートメントは、GitLab 17.0でデフォルトのバージョンになる予定です。