GitLab 17.3リリースノート
2024年8月15日、GitLab 17.3は以下の機能と共にリリースされました。
さらに、今月の注目すべきコントリビューターを含む、すべてのコントリビューターに感謝します。
今月の注目すべきコントリビューター: アントンカルミコフ
誰もがGitLabコミュニティのコントリビューターを推薦できます!活躍中の候補者を支援するか、新しい推薦を追加してください! 🙌
アントンカルミコフは、今年、GitLabのトップコントリビューターの1人であり、2月以降37のマージされたコントリビュートを達成し、さらに多くのコントリビュートが進行中です。アントンは、Yolo group (Bombay Games)のシニアフロントエンドエンジニアです。
「GitLabへのコントリビュートは、最もやりがいがあり、意欲的で、刺激的な取り組みの1つです」とAntonは言います。「このような素晴らしい製品の作成と改善に携わる機会を大変嬉しく思います。この機会のおかげで、多くの新しいことを学びました。まだやるべきことはたくさんあります。私のMRをチェックし、指導し、適切に作業を行うのを手伝ってくれたGitLabチーム、特にそれらのメンバーには非常に感謝しています。」
アントンは、GitLabのシニアプロダクトマネージャーであるChristina Lohrによってノミネートされました。彼女は、Tenant Scaleグループがいくつかのフロントエンドイシューで支援したことに対してです。
「基本的なワークフローのために取り組むべき小さなUX改善がまだたくさんあり、コミュニティからの助けを得てこれらの取り組みをより迅速に完了できることは素晴らしいことです」とChristinaは言います。「これらの改善はすべて、グループとプロジェクト間のより一貫したユーザーエクスペリエンスの作成に貢献しています。Antonさん、ありがとうございます。」
Antonと、GitLabを共創するオープンソースコントリビューターの皆様に深く感謝いたします!
主要な機能
根本原因分析によるジョブの失敗のトラブルシューティングを行う
根本原因分析が一般公開されました。根本原因分析を使用すると、CI/CDパイプラインで失敗したジョブのトラブルシューティングをより迅速に実行できます。このAIを利用した機能は、失敗したジョブログを分析し、ジョブ失敗の根本原因を迅速に特定し、修正を提案します。
GitLab Duoのベータ版におけるヘルスチェック
Self-ManagedインスタンスでGitLab Duoのセットアップのトラブルシューティングができるようになりました。管理者エリアのGitLab Duoページで、ヘルスチェックを実行するを選択します。このヘルスチェックは一連の検証を実行し、GitLab Duoが動作していることを確認するための適切な是正措置を提案します。
GitLab Duoのヘルスチェックは、Self-ManagedとGitLab Dedicatedでベータ機能として利用可能です。
GitLab UIからポッドを削除
Kubernetesで失敗したポッドを再起動したり削除したりする必要がありましたか?これまで、クラスターに接続するためにGitLabを離れて別のツールを使用し、ポッドを停止し、新しいポッドが起動するのを待つ必要がありました。GitLabはポッドの削除を内蔵でサポートするようになり、Kubernetesクラスターのトラブルシューティングをスムーズに行えるようになりました。
KubernetesのKubernetes用ダッシュボードからポッドを停止できます。このダッシュボードには、クラスターまたはネームスペース全体のすべてのポッドが一覧表示されます。
ローカルのターミナルからクラスターに簡単に接続する
ローカルターミナルから、またはデスクトップのKubernetes GUIツールのいずれかを使用して、Kubernetesクラスターに接続しますか?GitLabでは、Kubernetes用エージェントのユーザーアクセス機能を使用してターミナルに接続できます。これまで、コマンドを見つけるにはGitLabの外に移動してドキュメントを参照する必要がありました。GitLabは、UIから接続コマンドを提供するようになりました。GitLabはユーザーアクセスの設定もサポートできます!
接続コマンドを取得するには、Kubernetesダッシュボードまたはエージェントリストに移動します。
AIで脆弱性を解決する
脆弱性の修正は、ユーザーが脆弱性を修正するための具体的なコード提案をAIが提供します。ボタンをクリックするだけで、サポートされているCWE識別子のリストから任意のSAST脆弱性を解決するためのマージリクエストを開くことができます。
単一のプロジェクトに複数のコンプライアンスフレームワークを追加する
プロジェクトが特定のコンプライアンス要件を持っているか、追加の監視が必要であるかを識別するために、コンプライアンスフレームワークを作成できます。このコンプライアンスフレームワークは、適用されるプロジェクトにコンプライアンスパイプライン設定をオプションで適用できます。
これまで、ユーザーは1つのプロジェクトに1つのコンプライアンスフレームワークしか適用できず、プロジェクトに設定できるコンプライアンス要件の数が制限されていました。現在、ユーザーがプロジェクトごとに複数のコンプライアンスフレームワークを適用できる機能が提供されています。これにより、ユーザーは指定された時点で単一のプロジェクトに複数の異なるコンプライアンスフレームワークを適用できます。このリリースにより、プロジェクトに複数のコンプライアンスフレームワークを適用できます。その後、プロジェクトには各フレームワークのコンプライアンス要件が設定されます。
AIインパクト分析: コード提案の受け入れ率とGitLab Duoシートの使用状況
これら2つの新しいメトリクスは、GitLab Duoの有効性と利用状況を強調し、GitLab Duoがビジネス価値の提供に与える影響を組織が理解するのに役立つバリューストリームダッシュボード内のAIインパクト分析に現在含まれています。
コード提案の受け入れ率メトリクスは、開発者がGitLab Duoによって行われたコード提案をどのくらいの頻度で受け入れるかを示します。このメトリクスは、これらの提案の有効性と、コントリビューターがAI機能に抱く信頼の両方を反映しています。具体的には、このメトリクスは、過去30日間にGitLab Duoによって提供され、コードコントリビューターによって受け入れられたコード提案の割合を表します。
The GitLab Duo seats assigned and usedメトリクスは、消費されたライセンスシートの割合を示し、組織がライセンス利用、リソース割り当て、および使用パターンを効果的に計画するのに役立ちます。このメトリクスは、過去30日間に少なくとも1つのAI機能を使用した割り当て済みシートの割合を追跡します。
これらの新しいメトリクスの追加に伴い、新しい概要タイルも導入しました。これはメトリクスの明確な概要を提供する新しい視覚化であり、AI機能の現在の状態を迅速に評価するのに役立ちます。
規模とデプロイ
Omnibusの改善
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
GitLab 17.3には、Raspberry Pi OS 12をサポートするパッケージが含まれています。
Debian 10は2024年6月30日にEOLに達しました。GitLabはGitLab 17.6でDebian 10のサポートを削除します。
Your Workでのプロジェクトとグループの並べ替えとフィルタリングの改善
Your Workのプロジェクトとグループの概要におけるソートとフィルタリング機能が更新されました。以前は、プロジェクトのYour Workページでは、名前と言語でフィルタリングし、事前に定義された並べ替えオプションのセットを使用できました。並べ替えオプションを標準化するために、名前、作成日、更新した日、およびStar付きを含めました。また、昇順または降順でソートするためのナビゲーション要素を追加し、言語フィルターをフィルターメニューに移動しました。新しい非アクティブタブでアーカイブされたプロジェクトを見つけることができます。さらに、自分がオーナーであるプロジェクトを検索できるロールフィルターを追加しました。
グループのYour Workページでは、並べ替えオプションを標準化するために、名前、作成日、更新した日を含め、昇順または降順で並べ替えるためのナビゲーション要素を追加しました。
これらの変更に関するフィードバックは、#438322で歓迎します。
高度な検索のためのエンドツーエンドインスタンスのインデックス作成
GitLabで高度な検索を有効にすると、インスタンスにインデックスを作成を選択して、初期インデックス作成を実行したり、ゼロからインデックスを再作成したりできるようになります。この設定は、サポートされているすべての種類のデータを統合されたElasticsearchまたはOpenSearchクラスターにインデックス作成することで、gitlab:elastic:index Rakeタスクとの機能的な同等性を達成します。
インスタンスにインデックスを作成は、すべてのプロジェクトのインデックス作成設定を置き換えます。これは初期インデックス作成のみに限定されていました。
APIを使用してインテグレーションの設定の継承を切替
これまで、プロジェクトがインテグレーション設定を継承するか、独自の設定を使用するかは、UIを使用してのみ制御できました。
このマイルストーンでは、すべてのインテグレーションのREST APIに新しいuse_inherited_settingsパラメータを導入します。このパラメータを使用すると、APIを使用して、プロジェクトがインテグレーション設定を継承するかどうかを設定できます。設定されていない場合、デフォルトの動作はfalse(プロジェクト自身の設定を使用)です。
APIでグループまたはプロジェクトのWebhookイベントを一覧表示
GitLab 9.3以降、プロジェクトのWebhookリクエスト履歴をUIで表示できるようになり、GitLab 15.3以降では、グループのWebhookリクエスト履歴もUIで表示できるようになりました。
このリリースでは、このデータがREST APIで公開され、Webhookエラーを検出して対応するプロセスを自動化するのに役立ちます。過去7日間の特定のプロジェクトフックおよびグループフックのイベントリストを取得することができます。
Phawinのこのコミュニティコントリビュートに感謝します!
コマンドパレットを使用してグループ設定を見つける
17.2では、コマンドパレットを使用してプロジェクト設定を検索する機能を追加しました。この変更により、必要な設定を迅速に見つけやすくなりました。
17.3では、コマンドパレットからグループ設定も検索できるようになりました。グループにアクセスし、検索または移動先を選択し、>でコマンドモードに入り、マージリクエストの承認のような設定セクションの名前を入力して試してみてください。結果を選択すると、設定自体に直接ジャンプします。
統合されたDevOpsとセキュリティ
VS Codeにおける言語ごとのコード提案のきめ細かな制御
VS Codeでのコーディングエクスペリエンスを、特定のプログラミング言語のコード提案を有効または無効にすることで、より細かく制御できます。このきめ細かい制御により、ワークフローをカスタマイズし、不要または邪魔な提案を減らしながら、好みの言語でのコード提案の利点を維持できます。
JetBrains IDEにおけるTLSサポートの改善
機密性の高い環境でのセキュリティを強化するために、クライアント証明書や認証局を含むカスタムHTTPエージェントオプションを、JetBrains IDE設定で直接構成できるようになりました。
より簡単にリポジトリからコンテンツを削除する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com
- リンク: ドキュメント
現在、リポジトリからコンテンツを削除するプロセスは複雑であり、プロジェクトをGitLabに強制プッシュする必要がある場合があります。これはエラーが発生しやすく、プッシュを有効にするために一時的に保護をオフにする原因となる可能性があります。リポジトリ内で過剰なスペースを使用するファイルを削除することはさらに困難な場合があります。
プロジェクト設定の新しいリポジトリメンテナンスオプションを使用して、オブジェクトIDのリストに基づいてblobを削除できるようになりました。この新しい方法を使用すると、プロジェクトをGitLabに強制プッシュする必要なく、選択的にコンテンツを削除できます。
シークレットやその他のコンテンツがプロジェクトから削除する必要がある場合にプッシュされた場合、テキストを削除する新しいオプションも導入します。GitLabがプロジェクト全体でファイル内の***REMOVED***に置き換える文字列を提供します。テキストが削除済みのになったら、ハウスキーピングを実行して文字列の古いバージョンを削除してください。
この新しいUIは、コンテンツを削除する必要がある場合にリポジトリを管理する方法を合理化します。
Kubernetes用エージェントが作成および削除された際の監査イベント
Kubernetes用エージェントはKubernetesクラスターとGitLab間の双方向データフローを可能にするため、システムにアクセスできるコンポーネントが追加または削除されたときにそれを把握することが重要です。過去のリリースでは、コンプライアンスチームはカスタムツールを使用するか、このデータをGitLabで直接検索する必要がありました。GitLabは以下の監査イベントを提供するようになりました:
cluster_agent_createdは、新しいKubernetes用エージェントを登録したユーザーを記録します。cluster_agent_create_failedは、新しいKubernetes用エージェントを登録しようとして失敗したユーザーを記録します。cluster_agent_deletedは、Kubernetes用エージェントの登録を削除したユーザーを記録します。cluster_agent_delete_failedは、Kubernetes用エージェントの登録を削除しようとして失敗したユーザーを記録します。
これらの監査イベントは、GitLabインスタンスを監査する能力をさらに向上させるために、cluster_agent_token_createdおよびcluster_agent_token_revoked監査イベントを拡張します。
Kubernetes 1.30のサポート
このリリースは、2024年4月にリリースされたKubernetesバージョン1.30の完全なサポートを追加します。アプリをKubernetesにデプロイする場合、接続されているクラスターを最新のバージョンにアップグレードし、すべての機能を活用できるようになりました。
当社のKubernetesサポートポリシーおよびその他のサポートされているKubernetesバージョンの詳細については、こちらをご覧ください。
マージリクエストの外部ステータスチェックに認証を追加
外部ステータスチェックは、HMAC (Hash-based Message Authentication Code) 認証で構成できるようになりました。これにより、GitLabから外部サービスへのリクエストの信頼性を検証するためのより安全な方法が提供されます。
ステータスチェックで有効にすると、共有シークレットが各リクエストの一意の署名を生成するために使用されます。シグネチャは、SHA256をハッシュアルゴリズムとして使用して、X-Gitlab-Signatureヘッダーで送信されます。
- セキュリティの向上: HMAC認証は、リクエストの改ざんを防ぎ、それらが正当なソースからのものであることを保証します。
- コンプライアンス: この機能は、セキュリティが最重要視される銀行などの規制された業界にとって特に価値があります。
- 後方互換性: この機能はオプションであり、後方互換性があります。ユーザーは新しいチェックまたは既存のチェックに対してHMAC認証を有効にすることを選択できますが、既存の外部ステータスチェックは変更なしで引き続き機能します。
将来のイテレーションで、GitLabはHTTPリクエストも検証およびブロックするオプションを追加する予定です。
グループまたはプロジェクトのメンバーリストをロールでフィルタリング
ユーザーはメンバーページをロールでフィルタリングできるようになりました。フィルターを使用して、特定のロールを持つメンバーを検索します。
右側のドロワーでロールの詳細を表示
これまで、ユーザーのカスタムロールの権限を表示するには、グループでオーナーロールを持っている必要がありました。この要件により、カスタムロールが割り当てられたユーザーが実行できるアクションをトラブルシューティングし、理解することが困難でした。現在、任意のユーザーがメンバーページでカスタムロールが割り当てられたユーザーの権限を表示できます。
カスタムロールのLDAPグループリンクサポート
グループのユーザー権限を管理するためにLDAPグループリンクを使用する組織は、メンバーシップにすでにデフォルトロールを使用できます。
このリリースでは、そのサポートをカスタムロールに拡張しています。この設定により、多数のユーザーへのアクセスをマップすることが容易になります。
カスタムロールの新しいパーミッション
以下の新しい権限でカスタムロールを作成できます:
カスタムロールを使用すると、同等の権限を持つユーザーを作成することで、オーナーロールを持つユーザーの数を減らすことができます。これにより、グループのニーズに合わせたロールを定義し、ユーザーが必要以上の権限を与えられるのを防ぐことができます。
管理者UIを使用してパーソナルアクセストークンを無効にする
管理者は、管理者UIを通じてインスタンスパーソナルアクセストークンを無効または再有効化できるようになりました。これまで、管理者は、アプリケーション設定APIまたはRailsコンソールを使用してこれを行う必要がありました。
ユーザープロファイルにおけるBluesky識別子
Blueskyのdid:plc識別子をGitLabプロフィールに追加できるようになりました。
Dominique氏のコントリビュートに感謝します!
サインアウト時にサブドメインクッキーを保持
GitLabのサインアウトプロセスが改善され、サインアウト時に兄弟サブドメインのクッキーが削除されなくなりました。これまで、これらのクッキーは削除され、GitLabと同じトップレベルドメイン上の他のサブドメインサービスからユーザーがサインアウトされる原因となっていました。たとえば、ユーザーがkibana.example.comにKibanaを設定し、gitlab.example.comにGitLabを設定している場合、GitLabからサインアウトしても、Kibanaからサインアウトされることはなくなります。
Guilherme C. Souza氏のコントリビュートに感謝します!
強化されたスパークライン傾向可視化によるAIインパクト分析
スパークラインの導入により、AIインパクト分析が大幅に改善されたことを発表できることを嬉しく思います。データテーブルに埋め込まれたこれらの小さくてシンプルなグラフは、AI影響データの読みやすさとアクセス性を向上させます。数値データを視覚的に表現することで、新しいスパークラインは時間の経過とともにトレンドを特定しやすくし、上昇または下降の動きを把握できるようにします。この新しい視覚的なアプローチは、複数のメトリクス間のトレンド比較プロセスも合理化し、数値のみに頼る場合に必要となる時間と労力を削減します。
タスクへのマージリクエストの追加
タスクは、イシューをエンジニアリングの実装ステップに分解するためによく使用されます。このリリースより前は、マージリクエストを、それが実装するタスクに接続する方法はありませんでした。マージリクエストの説明からイシューを参照するのと同じクローズパターンを使用して、マージリクエストをタスクに接続できるようになりました。タスクビューから、接続されたマージリクエストはサイドバーから表示されます。プロジェクトで自動クローズ設定が有効になっている場合、接続されたマージリクエストがデフォルトのブランチにマージされると、タスクは自動的に閉じられます。
OKRとタスクの親アイテムを設定する
OKRとタスクの親の割り当てを、子レコードから直接簡単に更新できるようになり、行ったり来たりする必要がなくなりました。これは、ワークフローの効率性を向上させるという私たちの目標に向けた大きな一歩です。
タスク、目標、および主な成果アイテムに対する不正利用の報告
レガシーイシューと同様に、アクションメニューから直接作業アイテムに対する不正利用を簡単に報告できるようになりました。この新機能は、不適切なコンテンツを迅速にフラグ付けできるようにすることで、ワークスペースをクリーンで安全に保ち、チームにとってより良い共同作業環境を確保するのに役立ちます。
タスク、目標、および主な成果内のスレッドを解決する
タスク、目標と主な成果でスレッドを解決するできるようになり、重要な会話の管理と追跡が容易になりました。解決済みのスレッドはデフォルトで折りたたまれ、活発なディスカッションに集中し、コラボレーションワークフローを合理化するのに役立ちます。
サイクルタイム削減のための新しいバリューストリーム分析パイプラインステージイベント
GitLabでのマージリクエスト(MR)レビュー時間の追跡を改善するため、バリューストリーム分析に新しいパイプラインステージイベントを追加しました: MR first reviewer assigned。この新しいイベントにより、チームはレビュープロセスで遅延が発生する場所を特定し、コラボレーションを改善する機会を見つけ、チームメンバー間の応答性と責任の文化を奨励できます。レビュー時間を短縮することは、開発全体のサイクルタイムに直接影響し、より速いソフトウエアデリバリーにつながります。たとえば、MR first reviewer assignedで始まり、MR mergedで終わる新しいカスタムReview Time to Merge (RTTM) パイプラインステージを追加できるようになりました。
依存関係スキャンおよびライセンススキャンにおけるRustのサポート
コンポジション解析は、依存関係およびライセンススキャンニングに対するRustのサポートを提供しました。RustスキャンはCargo.lockファイルタイプをサポートしています。
プロジェクトのRustスキャンを有効にするには、依存関係スキャンCI/CDコンポーネントからcargoテンプレートを使用します。
GitLab UIにSBOM取り込みエラーを表示
GitLab 15.3はCycloneDX SBOMのインジェストをサポートしました。SBOMレポートはCycloneDXスキーマに対して検証されますが、検証の一部として生成された警告やエラーはユーザーに表示されませんでした。
GitLab 17.3では、これらの検証メッセージがGitLab UIのプロジェクトレベルの脆弱性レポートページと依存関係リストページに表示されます。
ユーザーは、GitLab UIの以下の領域でSBOM取り込みエラーを表示できます: プロジェクトレベルの脆弱性レポートページと依存関係リストページ、パイプラインページのライセンスとセキュリティタブ。
SAST、IaCスキャン、およびシークレット検出で使用されるルールセットを強制する
- プラン: Ultimate
- 提供形態: GitLab.com
- リンク: ドキュメント
SAST 、IaCスキャン 、およびシークレット検出で使用されるルールは、リポジトリにコミットされたローカル設定ファイルを作成するか、CI/CD変数を設定して複数のプロジェクトに共有設定を適用することでカスタマイズできます。
これまで、スキャナーは、共有ルールセットの参照を設定した場合でも、ローカルの設定ファイルを優先していました。この優先順位により、スキャンが既知の信頼できるルールセットを使用することを保証することが困難でした。
ローカル設定ファイルが許可されるかどうかを制御する新しいCI/CD変数SECURE_ENABLE_LOCAL_CONFIGURATIONが追加されました。デフォルトではtrueであり、既存の動作を維持します。つまり、ローカル設定ファイルが許可され、共有設定よりも優先されます。スキャン実行を強制する際に値をfalseに設定すると、プロジェクト開発者がローカル設定ファイルを追加した場合でも、スキャンが共有ルールセットまたはデフォルトのルールセットを使用することが保証されます。
ジョブ名でジョブをフィルタリング
ジョブ名を検索することで、特定のジョブをすばやく見つけられるようになりました。
これまで、ジョブのリストはステータスでしかフィルタリングできず、特定のジョブを見つけるには手動でスクロールする必要がありました。このリリースにより、ジョブ名を入力して結果をフィルタリングできるようになりました。結果には、GitLab 17.3のリリース後に実行されたパイプライン内のジョブのみが含まれます。
マージトレインの可視化
マージトレインを視覚化して、パイプライン内のマージリクエストのステータスと順序に関するより良いインサイトを得られるようになりました。マージトレインの可視化により、競合をより早く特定し、マージトレイン内で直接マージリクエストに対するアクションを実行し、デフォルトブランチが破損するリスクを最小限に抑えることができます。
GitLab Runner 17.3
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
本日、GitLab Runner 17.3をリリースします!GitLab Runnerは、軽量で高度にスケールするエージェントであり、CI/CDジョブを実行し、結果をGitLabインスタンスに送り返します。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。
バグ修正
- Kubernetes Runnerでキャンセルされたジョブがハングアップするように見える
- 指定されていない場合にログレベルが更新されない
- Runner Kubernetes executorを使用するとジョブログに余分な改行が追加される
すべての変更点のリストは、GitLab Runnerの変更履歴を参照してください。
macOS上のホストされたRunnerのパフォーマンス向上
macOS 14.5とXcode 15.4への最近のアップグレードにより、パフォーマンスの改善が提供されました。この変更により、Xcodeビルドジョブは、以前のジョブ実行と比較して大幅に高速化されました。
CI/CDカタログコンポーネントの入力詳細に説明とタイプを追加
カタログ内のCI/CDコンポーネントの詳細ページには、そのコンポーネントに関する有用な情報が提供されます。このリリースでは、利用可能な入力に関する情報を示すテーブルにさらに2つの列を追加しました。新しい説明とタイプの列により、入力が何に使用され、どのような値が期待されるかをはるかに簡単に理解できるようになります。