GitLab 16.10リリースノート
2024年3月21日、GitLab 16.10は以下の機能とともにリリースされました。
さらに、今月の注目すべきコントリビューターを含む、すべてのコントリビューターに感謝します。
今月の注目すべきコントリビューター
Lennard Sprongは以前、15.4でGitLab MVPアワードを受賞し、16.9でもノミネートされました。彼は過去2か月間で8件のコントリビュートをマージし、VS Code用GitLab Workflowにコントリビュートを提供し続けています。彼の過去のコントリビュートには、実行中のCIジョブのトレースを監視する機能、ダウンストリームパイプラインを表示する機能、およびマージリクエストで画像を比較する機能が含まれます。LennardはGitLab-vscode-extensionプロジェクト内のイシューにも積極的に関わっています。
GitLabのスタッフフルスタックエンジニアであるErran Careyは、Lennardをノミネートし、「LennardはGitLab Community Editionユーザーに影響を与えているパイプラインの表示イシューを解決しました。」と述べました。彼は影響を受けているユーザーに既存の回避策を示し、その後マージリクエストを作成してそのイシューに対処しました。」
GitLabのスタッフフルスタックエンジニアであるTomas Vikは、Lennardをさらにサポートし、画像差分のサポートを追加するコントリビュートを強調しました。これにより、マージリクエストのレビュー中に画像の変更を表示できます。
Marco Zilleもまた、以前15.3で受賞したのに続き、2度目のGitLab MVP賞を受賞しました。Marcoは今回のリリースでのコードコントリビュートだけでなく、GitLabのより広範なコントリビューターコミュニティをサポートする継続的な取り組み、コミュニティペアリングセッションの実施、GitLabチームメンバーとの協力、およびマージリクエストのレビューにおいても評価されました。
Marcoは1つのジョブが失敗した直後にパイプラインをキャンセルする機能を追加しました。この機能はGitLab.comで有効になっており利用可能ですが、自己ホスト型インスタンスの場合はまだ機能フラグの背後にあります。16.11で誰でも利用できるようになります。
GitLabのシニアバックエンドエンジニアであるAllison Browneは、パイプライン実行において長年要望されていたこの機能リクエストを取り上げたMarcoをノミネートしました。GitLabの主席エンジニアであるFabio Pitinoは、「Marcoは修正を実装しただけでなく、この機能の設計に貢献し、ユースケースを持ち込んで、この機能に興味のある顧客と議論しました。」と付け加えました。
Peter Leitzenもまた、MarcoがSentryからスタックトレースを読み込む修正をレビューし完了させるのをどのように支援したかを強調し、Marcoのノミネートを支持しました。
LennardとMarcoによるGitLabの改善とオープンソースコミュニティへの継続的なサポートに深く感謝いたします! 🙌
主要な機能
CI/CDカタログにおけるセマンティックバージョニング
公開されたコンポーネント全体で一貫した動作を強制するために、GitLab 16.10ではCI/CDカタログに公開されるコンポーネントに対してセマンティックバージョニングを適用します。コンポーネントを公開する場合、タグは3桁のセマンティックバージョニング標準(例: 1.0.0)に従う必要があります。
include: component構文でコンポーネントを使用する場合、公開されたセマンティックバージョンを使用する必要があります。Using ~latestは引き続きサポートされますが、常に最新の公開バージョンを返すため、破壊的な変更が含まれる可能性があるため、注意して使用する必要があります。ショートハンド構文はサポートされていませんが、今後のマイルストーンでサポートされる予定です。
GitLab Duoアクセスガバナンス管理
- プラン: Premium、Ultimate
- リンク: ドキュメント
生成AIは作業プロセスに革命をもたらしており、プライバシー、コンプライアンス、または知的財産(IPの保護)を損なうことなく、これらのテクノロジーの導入を促進できるようになりました。
プロジェクト、グループ、またはインスタンスごとに、APIを使用してGitLab Duo AI機能を無効にできるようになりました。準備が整ったら、特定のプロジェクトまたはグループに対してGitLab Duoを有効にできます。これらの変更は、AI機能の制御をよりきめ細かくするための、予想される一連の作業の一部です。
Wikiテンプレート
このバージョンのGitLabでは、Wikiにまったく新しいテンプレートが導入されています。これで、新しいページを作成したり、既存のページを変更したりする際に、テンプレートを作成して効率化できます。テンプレートは、Wikiリポジトリのテンプレートディレクトリに保存されているWikiページです。
この機能強化により、Wikiページのレイアウトをより一貫させ、ページの作成や再構築を高速化し、知識ベースで情報が明確かつ一貫して提示されるようにすることができます。
高性能DevOps分析のための新しいClickHouseインテグレーション
The コントリビュート分析レポートは、GitLab.comでClickHouseを使用する高度な分析データベースによってサポートされ、より高性能になりました。このアップグレードは、新しい広範な分析およびレポート機能の基盤を築き、複数のディメンションにわたる高性能な分析集計、フィルタリング、およびスライシングを提供できるようになりました。この機能に自己管理のお客様が追加できるようサポートすることは、イシュー441626で提案されています。
Although ClickHouseはGitLabの分析機能を強化しますが、PostgreSQLやRedisに取って代わることを意図したものではなく、既存の機能は変更されません。
GitLab PagesおよびAdvanced SearchはGitLab Dedicatedで利用可能
すべてのGitLab DedicatedインスタンスでGitLab PagesとAdvanced Searchが有効になりました。これらの機能はGitLab Dedicatedサブスクリプションに含まれています。
Advanced Searchにより、GitLab Dedicatedインスタンス全体で、より高速で効率的な検索が可能になります。Advanced Searchのすべての機能は、GitLab Dedicatedインスタンスで使用できます。
GitLab Pagesを使用すると、GitLab Dedicatedのリポジトリから直接静的ウェブサイトを公開できます。Pagesの一部の機能は、GitLab Dedicatedインスタンスではまだ利用できません。
CIトラフィックをGeoセカンダリにオフロード
CI RunnerのトラフィックをGeoセカンダリサイトにオフロードできるようになりました。クロスリージョントラフィックを削減しながら、より便利で経済的に運用および管理できる場所にRunnerフリートを配置できます。複数のセカンダリGeoサイトに負荷を分散します。プライマリサイトの負荷を軽減し、開発者トラフィックを処理するためのリソースを確保します。この設定後、デベロッパーエクスペリエンスは透過的でシームレスになります。ジョブの設定と設定のための開発者ワークフローは変更されません。
規模とデプロイ
GitLabチャートの改善
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
GitLab 16.10では、Kubernetes 1.24以前のバージョンへのGitLabのインストールサポートを削除しました。Kubernetes 1.24のKubernetesメンテナンスサポートは2023年7月に終了しました。
GitLab 16.10には、Kubernetes 1.27へのGitLabのインストールサポートが含まれています。詳細については、新しいKubernetesバージョンサポートポリシーを参照してください。私たちの目標は、Kubernetesの新しいバージョンを公式リリースに近い形でサポートすることです。
Omnibusの改善
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
GitLab 16.10では、Patroniの新しいメジャーバージョン3.0.1が導入されます。このバージョンアップグレードにはダウンタイムが必要です。詳細と手順については、GitLab 16の変更ページの16.10セクションを参照してください。
GitLab 16.10には、新しいバージョンのAlertmanager、つまりバージョン0.27も含まれています。最も注目すべきは、このバージョンにAPI v1の削除が含まれていることです。このリリースの詳細については、Alertmanagerの変更履歴を参照してください。
GitLab 16.10にはMattermost 9.5も含まれています。Mattermost 9.5には、さまざまなセキュリティアップデートとMySQL 5.7のサポートの非推奨化が含まれています。このバージョンのMySQLを使用しているユーザーは更新する必要があります。
GraphQL APIを使用してEnterpriseユーザーでメンバーをフィルタリング
GraphQL APIを使用すると、Enterpriseユーザーでグループメンバーをフィルタリングできるようになりました。
ブロックされたユーザーはフォロワーリストから除外されます
以前は、あなたをフォローしているユーザーがブロックされた場合でも、そのユーザーはあなたのユーザープロファイルのフォロワーリストに表示されていました。GitLab 16.10以降、ブロックされたユーザーはフォロワーリストから非表示になります。ユーザーがブロック解除されると、フォロワーリストに再表示されます。
Thank you @SethFalco for this communityコントリビュート!
REST APIで表示レベルごとにグループをフィルタリング
これで、Groups APIで表示レベルごとにグループをフィルタリングできます。フィルタリングを使用して、特定の表示レベルを持つグループに焦点を当てることで、GitLabの実装を監査しやすくなります。
Thank you @imskr for this communityコントリビュート!
プロジェクト削除機能の更新
これで、プロジェクトリストで削除されたプロジェクトを識別しやすくなりました。GitLab 16.10以降、削除されたプロジェクトはプロジェクト概要ページのプロジェクトタイトルの横にPending deletionバッジを表示します。アラートメッセージは、削除されたプロジェクトが読み取り専用であることを明確にしています。このメッセージはすべてのプロジェクトページで表示され、削除されたプロジェクトのサブページで作業している場合でも、このコンテキストが失われないようにします。
Google Chatでスレッド通知をサポート
以前は、GitLabからGoogle Chatのスペースに送信された通知は、指定されたスレッドへの返信として作成できませんでした。このリリースにより、同じGitLabオブジェクト(たとえば、イシューやマージリクエスト)に対して、Google Chatでスレッド通知がデフォルトで有効になります。
Thanks to Robbie Demuth for this communityコントリビュート!
Webhookのカスタムペイロードテンプレート
以前は、GitLab Webhookは特定のJSONペイロードのみ送信でき、受信側のエンドポイントはWebhookフォーマットを理解する必要がありました。これらのWebhookを使用するには、GitLabを特にサポートするアプリを使用するか、独自のエンドポイントを記述する必要がありました。
このリリースにより、Webhook設定でカスタムペイロードテンプレートを設定できるようになりました。リクエストボディは、現在のイベントのデータを使用してテンプレートからレンダリングされます。
Niklasのコミュニティコントリビュートに感謝します!
UIとAPIからサービスデスクチケットを作成
通常のイシューで/convert_to_ticket user@example.comクイックアクションを使用して、UIとAPIからサービスデスクチケットを作成できるようになりました。
通常のイシューを作成し、/convert_to_ticket user@example.comクイックアクションを使用してコメントを追加します。提供されたメールアドレスがチケットの外部作成者になります。GitLabはデフォルトのお礼メールを送信しません。チケットに公開コメントを追加して、外部の参加者にチケットが作成されたことを知らせることができます。
サービスデスクチケットをAPIを使用して追加する際も同じ概念に従います: イシューAPIを使用してイシューを作成し、issue_iidを使用してNotes APIを使用したクイックアクションでメモを追加します。
統合されたDevOpsとセキュリティ
マージリクエスト内の生成されたファイルを自動的に折りたたむ
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
マージリクエストには、ユーザーからの変更や自動プロセス、またはコンパイラからの変更が含まれる場合があります。package-lock.json、Gopkg.lock、および縮小されたjsとcssのようなファイルは、マージリクエストのレビューに表示されるファイル数を増やし、レビュアーの注意を人間が生成した変更からそらします。マージリクエストは、これらのファイルをデフォルトで折りたたんで表示するようになりました。これは、以下の目的に役立ちます:
- レビュアーの注意を重要な変更に集中させますが、必要に応じて完全なレビューを有効にできます。
- マージリクエストを読み込むために必要なデータ量を削減し、より大規模なマージリクエストのパフォーマンス向上に役立つ可能性があります。
デフォルトで折りたたまれるファイルタイプの例については、ドキュメントを参照してください。マージリクエストでさらに多くのファイルとファイルタイプを折りたたむには、プロジェクトの.gitattributesファイルでそれらをgitlab-generatedとして指定します。
この変更に関するフィードバックはイシュー438727で残すことができます。
マージウィジェットの拡張チェック
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
マージウィジェットは、マージリクエストがマージ可能でない場合、その理由を明確に説明します。以前は、一度に1つのマージブロッカーのみが表示されていました。これにより、レビューサイクルが増加し、さらに多くのブロッカーが残っているかどうかわからずに、個別に問題を解決することを余儀なくされました。
マージリクエストを表示すると、マージウィジェットは、残っている問題と解決された問題の両方を包括的に表示します。これで、複数のブロッカーが存在するかどうかを一目で理解し、1つのイテレーションでそれらすべてを修正し、隠れたブロッカーが見逃されていないという自信を高めることができます。
Kubernetes用ダッシュボードの手動更新
GitLab 16.10では、Kubernetes用ダッシュボードに専用の更新機能が追加されました。これで、Kubernetesリソースデータを手動でフェッチし、クラスターに関する最新情報にアクセスできるようになりました。
環境詳細ページの改善
GitLab 16.10では、環境詳細ページが改善されました。環境リストから環境を選択すると、デプロイと接続されているKubernetesクラスターに関する最新情報を、1つの便利なレイアウトでレビューできます。
認証レート制限のエラーメッセージを改善
GitLabで認証する際に、スクリプトを使用している場合などに、認証試行レート制限に達する可能性があります。以前は、認証レート制限に達した場合、403 Forbiddenメッセージが返され、このエラーが発生する理由が説明されていませんでした。これで、認証レート制限に達したことを知らせる、より詳細なエラーメッセージが返されるようになりました。
監査イベントのscope属性
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
- リンク: ドキュメント
監査イベントにscope属性が含まれるようになり、イベントがインスタンス全体、グループ、プロジェクト、またはユーザーに関連付けられているかどうかを示します。
この新しい属性は、ユーザーが監査イベントペイロードでイベントの発生元を特定するのに役立ちます。また、監査イベントタイプドキュメントが、監査イベントタイプで利用可能なすべてのスコープをリストすることを可能にします。
この新しい属性を使用して、外部ストリーミング先を解析するか、イベントに関するコンテキストをよりよく理解することができます。
サービスアカウントのカスタム名
これで、サービスアカウントのユーザー名と表示名をカスタマイズできるようになりました。以前は、これらはGitLabによって自動生成されていました。カスタム名を使用することで、サービスアカウントの目的を理解し、ユーザーリスト内の他のアカウントと区別しやすくなります。
カスタムロールの割り当てに関する監査イベント
GitLabは、ユーザーに異なるロールが割り当てられたときに、そのロールがデフォルトロールであるかカスタムロールであるかにかかわらず、監査イベントを記録するようになりました。このイベントは、特権昇格の場合にユーザー権限が追加または変更されたかどうかを特定するために重要です。
カスタムロールの新しい権限
カスタムロールを作成するには、2つの新しい権限を選択できます:
- CI/CD変数を管理
- グループを削除する機能
これらのカスタム権限のリリースにより、これらのオーナーと同等の権限を持つカスタムロールを作成することで、グループで必要なオーナーの数を減らすことができます。カスタムロールを使用すると、ユーザーにその職務に必要な権限のみを与えるきめ細かいロールを定義し、不要な特権昇格を減らすことができます。
スキャン結果ポリシーは「マージリクエスト承認ポリシー」になりました
プロジェクト設定の上書きと承認要件の適用をサポートするためにポリシータイプの機能を拡張したため、ポリシー名をより適切な「マージリクエスト承認ポリシー」に更新しました。
マージリクエスト承認ポリシーは、既存の承認ルールを置き換えたり、競合したりするものではありません。代わりに、Ultimateプランのお客様には、中央のセキュリティおよびコンプライアンスチームによって管理されるポリシーを通じて、プロジェクト全体でグローバルな強制を適用する機能を提供します。これは、大規模な組織にとってますます困難なタスクです。
Webhookは相互TLSをサポート
これで、Webhookが相互TLSをサポートするように設定できます。この設定は、Webhookソースの信頼性を確立し、セキュリティを強化します。PEM形式のクライアント証明書を設定します。これはTLSハンドシェイク中にサーバーに提示されます。PEMパスフレーズで証明書を保護することもできます。
サインインページの改善
GitLabサインインページは、スペーシングイシュー、壊れた要素、およびアラインメントを修正する改善により更新されました。ダークモードの追加サポートと、Cookie設定を管理するボタンもあります。これらの改善の組み合わせにより、サインインページは新鮮な外観と改善された機能を提供します。
Active Directory LDAPのスマートカードサポート
LDAPサーバーに対するスマートカード認証は、Entra ID(旧Azure Active Directory)をサポートするようになりました。これにより、Entra IDからユーザーIDデータを同期し、スマートカードを使用してLDAPに対して認証することが容易になります。
マージベースパイプラインを使用したマージリクエスト承認ポリシーの比較
この機能強化により、マージリクエスト承認ポリシーの評価ロジックがセキュリティMRウィジェットと整合し、マージリクエスト承認ポリシーに違反する検出結果がウィジェットに表示される結果と一致するようにします。ロジックを整合させることで、セキュリティ、コンプライアンス、および開発チームは、どの検出結果がポリシーに違反し、承認が必要かをより一貫して特定できます。ターゲットブランチの最新の完了したHEADパイプラインと比較するのではなく、スキャン結果ポリシーは共通の祖先の最新の完了したパイプラインである「マージベース」と比較するようになりました。
GitLab Pagesのドメインレベルリダイレクトをサポート
以前は、GitLabはシンプルなリダイレクトルールをサポートすることに重点を置いていました。GitLab 14.3で、私たちは Splatおよびプレースホルダーリダイレクトのサポートを導入しました。
GitLab 16.10以降、GitLab Pagesはドメインレベルリダイレクトをサポートします。ドメインレベルリダイレクトをSplatルールと組み合わせて、URLパスを動的に書き換えることができます。この改善により、混乱を防ぎ、ドメイン変更後も古いドメインを使用している場合でも情報を引き続き見つけられるようになります。
新しいコンテナレジストリAPIでリポジトリタグをリスト表示
以前は、コンテナレジストリはGitLabでタグを表示するために、Docker/OCIのイメージタグレジストリAPIのリストに依存していました。このAPIには、パフォーマンスと検出可能性に重大な制限がありました。
このAPIは、レジストリに対するネットワークリクエストの数がタグリスト内のタグの数に応じてスケールするため、パフォーマンスが低下していました。さらに、APIが公開時間を追跡しなかったため、公開タイムスタンプがしばしば不正確でした。また、DockerマニフェストリストまたはOCIインデックスに基づいて画像を表示する場合、多重アーキテクチャ画像などの制限がありました。
これらの制限に対処するため、新しいレジストリのリポジトリタグをリストするAPIを導入しました。GitLab 16.10では、新しいAPIへの移行が完了しました。これで、UIまたはREST APIのどちらを使用する場合でも、パフォーマンスの向上、正確な公開タイムスタンプ、およびマルチアーキテクチャイメージの堅牢なサポートが期待できます。
この改善はGitLab.comでのみ利用可能です。次世代コンテナレジストリが一般提供されるまで、自己管理サポートはブロックされます。詳細については、イシュー423459を参照してください。
Value Streamsダッシュボードの新しいコントリビューター数メトリクス
ソフトウェアリーダーがチームの開発速度、ソフトウェアの安定性、セキュリティ露出、チームの生産性の関係に関するインサイトを得ることを可能にするために、Value Streamsダッシュボードに新しいコントリビューター数メトリクスを導入しました。このコントリビューター数は、グループ内でのコントリビュートを持つ月間ユニークユーザーの数を表します。このメトリクスは、時間の経過に伴う導入トレンドを追跡するように設計されており、コントリビュートカレンダーイベントに基づいています。
The コントリビューター数メトリクスはGitLab.comでのみ利用可能で、コントリビュート分析レポートがClickHouseを介して実行されるように設定する必要があります。イシュー441626は、この機能を自己管理のお客様にも利用可能にする取り組みを追跡しています。
シームレスで正確なワークフロー分析のためのバリューストリーム分析における継承されたフィルター
バリューストリーム分析は、リードタイムタイルからイシュー分析レポートにドリルダウンする際に、同じフィルターを適用するようになりました。フィルターの継承は、分析ビューを切り替える際に、データに深くシームレスに掘り下げるのに役立ちます。
クイックアクションでイシューを現在のまたは次のイテレーションに追加
/iterationクイックアクションは、--currentまたは--next引数を持つケイデンス参照を受け入れるようになりました。グループに単一のイテレーションケイデンスがある場合、/iteration --current|nextを使用してイシューを現在のまたは次のイテレーションに迅速に割り当てることができます。グループに複数のイテレーションケイデンスが含まれている場合、ケイデンス名またはIDを参照して、クイックアクションで目的のケイデンスを指定できます。たとえば、/iteration [cadence:"<cadence name>"|<cadence ID>] --next|currentなどです。
コンテナスキャンのデフォルトで継続的脆弱性スキャンが利用可能
コンテナスキャンの継続的脆弱性スキャンがデフォルトで利用可能になりました。デフォルトで利用可能になったことにより、機能フラグを介してこの機能を選択する必要がなくなります。継続的脆弱性スキャンの利点の詳細については、ドキュメントリンクを参照してください。
sbtの依存関係スキャンサポートを改善
sbtを使用するプロジェクトの依存関係リストを生成するために使用するメカニズムを更新しました。この変更は、sbtバージョン1.7.2以降を使用するプロジェクトにのみ適用されます。sbtプロジェクトの依存関係スキャンを最大限に活用するには、sbtバージョン1.7.2以降にアップグレードする必要があります。
DASTアナライザーのパフォーマンス更新
16.10リリースマイルストーン中、プロキシベースのDASTは以下の通りでした:
- ZAPをバージョン2.14.0にアップグレードしました。詳細については、イシュー442056を参照してください。
また、以下のブラウザベースのDASTクローラーのパフォーマンス改善を完了しました:
- クローリング時に作成されるgoroutineの数を制限します。詳細については、イシュー440151を参照してください。
- インタラクトする要素の検出を最適化します。これにより、スキャン時間が6%短縮されました。詳細については、イシュー440295を参照してください。
- DevToolsメッセージのJSONマーシャリング解除を最適化します。これにより、スキャン時間が7%短縮されました。詳細については、イシュー439726を参照してください。
GitLab Runner 16.10
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
本日、GitLab Runner 16.10もリリースします!GitLab Runnerは、CI/CDジョブを実行し、結果をGitLabインスタンスに送信する、軽量で拡張性の高いエージェントです。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。
バグ修正:
GitLab Runnerのすべての変更リストは変更履歴にあります。