パイプライン設定をカスタマイズする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
プロジェクトのパイプラインの実行方法をカスタマイズすることができます。
パイプラインを表示できるユーザーを変更する
公開プロジェクトと内部プロジェクトでは、以下を表示できるユーザーを変更できます:
- パイプライン
- ジョブの出力ログ
- ジョブのアーティファクト
- パイプラインのセキュリティ結果
パイプラインと関連機能の表示レベルを変更するには、次のようにします:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
設定 > CI/CDを選択します。
一般パイプラインを展開します。
プロジェクトベースのパイプラインの表示レベルチェックボックスをオンまたはオフにします。オンにした場合、以下のユーザーにパイプラインと関連機能が表示されます:
オフにした場合:
- 公開プロジェクトの場合、ジョブログ、ジョブアーティファクト、パイプラインセキュリティダッシュボード、CI/CDメニュー項目は、プロジェクトメンバー(レポーター以上)にのみ表示されます。それ以外のユーザー(ゲストユーザーを含む)は、マージリクエストまたはコミットを表示しているときにのみ、パイプラインとジョブのステータスが表示されます。
- 内部プロジェクトの場合、外部ユーザーを除くすべての認証済みユーザーにパイプラインが表示されます。関連機能は、プロジェクトメンバー(レポーター以上)にのみ表示されます。
- プライベートプロジェクトの場合、パイプラインと関連機能は、プロジェクトメンバー(レポーター以上)にのみ表示されます。
公開プロジェクトでプロジェクトメンバー以外のユーザーのパイプライン表示レベルを変更する
公開プロジェクトのプロジェクトメンバー以外のユーザーに対するパイプラインの表示レベルを制御できます。
この設定は、以下の場合には効果がありません:
- プロジェクトの表示レベルが内部またはプライベートに設定されている場合。これは、プロジェクトメンバー以外のユーザーは内部プロジェクトまたは非公開プロジェクトにアクセスできないためです。
- プロジェクトベースのパイプラインの表示レベル設定が無効になっている場合。
プロジェクトメンバー以外のユーザーに対するパイプラインの表示レベルを変更するには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > 一般を選択します。
- 可視性、プロジェクトの機能、権限を展開します。
- CI/CDで、以下を選択します:
- Only project members(プロジェクトメンバーのみ): プロジェクトメンバーのみがパイプラインを表示できます。
- アクセスできる人すべて: プロジェクトメンバー以外のユーザーもパイプラインを表示できます。
- 変更を保存を選択します。
CI/CD権限テーブルには、アクセスできる人すべてが選択されている場合に、プロジェクトメンバー以外のユーザーがアクセスできるパイプラインの機能が一覧表示されます。
冗長なパイプラインを自動キャンセルする
同じブランチで新しい変更のためのパイプラインが実行されると、保留中または実行中のパイプラインを自動的にキャンセルするように設定できます。これはプロジェクト設定で有効にすることができます:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- General Pipelines(一般パイプライン)を展開します。
- 冗長なパイプラインを自動キャンセルチェックボックスをオンにします。
- 変更を保存を選択します。
interruptibleキーワードを使用して、実行中のジョブが完了する前にキャンセルできるかどうかを指定します。interruptible: falseと指定されたジョブが開始されると、パイプライン全体が中断不可と見なされます。
古いデプロイジョブを防止する
プロジェクトには、同じ時間枠で実行されるようにスケジュールされた複数の同時デプロイジョブが存在する場合があります。
このため、古いデプロイジョブが新しいデプロイジョブの後に実行されるといった、望ましくない状況が発生する可能性があります。
このシナリオを回避するには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- 古いデプロイジョブを防止チェックボックスをオンにします。
- オプション。ロールバックデプロイのジョブの再試行を許可するチェックボックスをオフにします。
- 変更を保存を選択します。
詳細については、デプロイの安全性を参照してください。
パイプラインまたはジョブをキャンセルできるロールを制限する
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
パイプラインまたはジョブをキャンセルする権限を持つロールをカスタマイズできます。
デフォルトでは、デベロッパー以上のロールを付与されたユーザーが、パイプラインまたはジョブをキャンセルできます。キャンセル権限をメンテナーロール以上のユーザーのみに制限したり、パイプラインまたはジョブのキャンセルを完全に防止したりできます。
パイプラインまたはジョブをキャンセルする権限を変更するには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- パイプラインまたはジョブをキャンセルするために必要な最小のロールからオプションを選択します。
- 変更を保存を選択します。
カスタムCI/CD設定ファイルを指定する
GitLabは、CI/CD設定ファイル(.gitlab-ci.yml)がプロジェクトのルートディレクトリにあることを前提に検索しますが、プロジェクト以外の場所を含め、別のファイル名のパスを指定できます。
パスをカスタマイズするには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- CI/CD設定ファイルフィールドに、ファイル名を入力します。ファイルごとに、次のようにします:
- ルートディレクトリにない場合は、パスも入力します。
- 別のプロジェクトにある場合は、グループ名とプロジェクト名も入力します。
- 外部サイトにある場合は、完全なURLを入力します。
- 変更を保存を選択します。
プロジェクトのパイプラインエディタを使用して、他のプロジェクトまたは外部サイトにあるCI/CD設定ファイルを編集することはできません。
カスタムCI/CD設定ファイルの例
CI/CD設定ファイルがルートディレクトリにない場合、パスはルートディレクトリからの相対パスを指定する必要があります。例:
my/path/.gitlab-ci.ymlmy/path/.my-custom-file.yml
CI/CD設定ファイルが外部サイトにある場合、URLは以下のとおり.ymlで終わる必要があります:
http://example.com/generate/ci/config.yml
CI/CD設定ファイルが別のプロジェクトにある場合:
- ファイルは、デフォルトブランチに存在するか、ブランチをrefnameとして指定する必要があります。
- パスは、別のプロジェクトのルートディレクトリからの相対パスである必要があります。
- パスの後に
@記号と、完全なグループおよびプロジェクトのパスを追加する必要があります。
例:
.gitlab-ci.yml@namespace/another-projectmy/path/.my-custom-file.yml@namespace/subgroup/another-projectmy/path/.my-custom-file.yml@namespace/subgroup1/subgroup2/another-project:refname
設定ファイルが別のプロジェクトにある場合、さらにきめ細かい権限を設定できます。例:
- 設定ファイルをホスティングするための公開プロジェクトを作成する。
- ファイルの編集が許可されているユーザーのみに、プロジェクトの書き込み権限を付与する。
これにより、他のユーザーやプロジェクトは設定ファイルにアクセスできますが、編集することはできません。
デフォルトのGit戦略を選択する
ジョブの実行時に、リポジトリをGitLabからフェッチする方法を選択できます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- Git戦略で、いずれかのオプションを選択します:
git cloneは、ジョブごとにリポジトリのクローンをゼロから作成するため、時間がかかります。しかし、ローカルの実行コピーは常に元の状態に維持されます。git fetchは、ローカルの実行コピーを再利用するため、高速です(存在しない場合はクローンにフォールバックします)。これは、特に大規模リポジトリの場合に推奨されます。
設定したGit戦略は、.gitlab-ci.ymlファイルのGIT_STRATEGY変数によってオーバーライドされる可能性があります。
クローン中にフェッチされる変更の数を制限する
リポジトリのクローンを作成する際にGitLab CI/CDがフェッチする変更の数を制限できます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- Git戦略のGitシャロークローンで、値を入力します。最大値は
1000です。シャロークローンを無効にして、GitLab CI/CDが毎回すべてのブランチとタグをフェッチするようにするには、値を空のままにするか、0を指定します。
新しく作成されるプロジェクトのデフォルトのgit depth値は20です。
この値は、.gitlab-ci.ymlファイルのGIT_DEPTH変数によってオーバーライドされる可能性があります。
ジョブの実行時間の制限を設定する
ジョブがタイムアウトするまでの実行時間を定義できます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- タイムアウトフィールドに、分数または
2 hoursなどの人間が判別できる値を入力します。10分以上、1か月未満で指定する必要があります。デフォルトは60分です。保留中のジョブは、24時間非アクティブ状態が続くと削除されます。
タイムアウトを超過したジョブは、失敗としてマークされます。
プロジェクトのタイムアウトとRunnerのタイムアウトの両方が設定されている場合は、小さい方の値が優先されます。
1時間にわたって出力がないジョブは、タイムアウト設定に関係なく削除されます。これを防ぐには、進行状況を継続的に出力するスクリプトを追加します。詳細については、イシュー25359を参照してください。
パイプラインバッジ
パイプラインバッジを使用して、プロジェクトのパイプラインのステータスとテストカバレッジを示すことができます。これらのバッジは、最後に正常に完了したパイプラインに基づいて決定されます。
GitLab CI/CDパイプラインを無効にする
すべての新しいプロジェクトで、GitLab CI/CDパイプラインはデフォルトで有効になっています。JenkinsやDrone CIなどの外部CI/CDサーバーを使用する場合は、コミットステータスAPIとの競合を回避するために、GitLab CI/CDを無効にできます。
プロジェクトごと、またはインスタンス上のすべての新しいプロジェクトに対してGitLab CI/CDを無効にできます。
GitLab CI/CDを無効にした場合、次のようになります:
- 左側のサイドバーのCI/CD項目が削除されます。
/pipelinesページと/jobsページは使用できなくなります。- 既存のジョブとパイプラインは非表示になり、削除はされません。
プロジェクトでGitLab CI/CDを無効にするには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > 一般を選択します。
- 可視性、プロジェクトの機能、権限を展開します。
- リポジトリセクションで、CI/CDをオフにします。
- 変更を保存を選択します。
上記の変更は、外部インテグレーションのプロジェクトには適用されません。
パイプラインの自動クリーンアップ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
オーナーロールを付与されたユーザーは、CI/CDパイプラインの有効期限を設定して、パイプラインのストレージを管理し、システムパフォーマンスを向上させることができます。設定された値より前に作成されたパイプラインは、システムが自動的に削除します。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- 一般パイプラインを展開します。
- パイプラインの自動クリーンアップフィールドに、秒数、または
2 weeksなどの人間が判別できる値を入力します。1日以上、1年未満を指定する必要があります。パイプラインを自動的に削除しない場合は、空のままにします。デフォルトでは空になっています。 - 変更を保存を選択します。
GitLab Self-Managedの場合、管理者はパイプラインの自動クリーンアップの上限を増やすことができます。