パイプライン設定のカスタマイズ

プロジェクトに合わせてパイプラインの実行方法をカスタマイズできます。

パイプラインの概要については、ビデオGitLab CI Pipeline, Artifacts, and Environmentsをご覧ください。初心者のための GitLab CI パイプラインチュートリアルもご覧ください。

パイプラインを閲覧できるユーザーの変更

公開プロジェクトでも内部プロジェクトでも、パイプラインを閲覧できるユーザーを変更できます:

パイプラインと関連機能の可視性を変更します:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. 公開パイプライン] チェックボックスをオンまたはオフにします。選択すると、パイプラインと関連機能が表示されます:

    • の場合 公開プロジェクトでは、誰でも見ることができます。
    • 内部プロジェクトの場合、外部ユーザーを除くすべての認証済みユーザーに。
    • 非公開プロジェクトの場合、すべてのプロジェクトメンバー(ゲスト以上)。

    クリアすると

    • 公開プロジェクトの場合、ジョブログ、ジョブのアーティファクト、パイプラインセキュリティダッシュボード、およびCI/CDメニュー項目は、プロジェクトメンバー (レポーター以上) にのみ表示されます。ゲストユーザーを含む他のユーザーは、パイプラインとジョブのステータスのみ表示でき、マージリクエストやコミットを表示する場合のみ表示できます。
    • 内部プロジェクトでは、パイプラインは外部ユーザーを除くすべての認証済みユーザーに表示されます。関連機能は、プロジェクトメンバー(レポーター以上)にのみ表示されます。
    • 非公開プロジェクトの場合、パイプラインと関連機能はプロジェクトメンバー(レポーター以上)のみに表示されます。

公開プロジェクトでプロジェクトメンバー以外のパイプラインの可視性を変更します。

公開プロジェクトで、プロジェクトメンバー以外のパイプラインの可視性を制御できます。

この設定は

  • プロジェクトの可視性が内部または非公開に設定されている場合、プロジェクトのメンバー以外は内部または非公開のプロジェクトにアクセスできないためです。
  • そのため 公開パイプライン設定は無効です。

プロジェクト・メンバー以外のパイプラインの可視性を変更するには、以下の手順に従います:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [全般]を選択します。
  3. 可視性]、[プロジェクト機能]、[権限]を展開します。
  4. CI/CDの場合は、選択します:
    • プロジェクトメンバーのみ:プロジェクトメンバーだけがパイプラインを見ることができます。
    • 誰でもアクセスできます:プロジェクトメンバー以外もパイプラインを閲覧できます。
  5. 変更を保存を選択します。

CI/CD 権限テーブルにはEveryone With Accessが選択されている場合にプロジェクトメンバー以外がアクセスできるパイプライン機能が一覧表示されます。

冗長パイプラインの自動キャンセル

保留中のパイプラインや実行中のパイプラインを、同じブランチで新しい変更のパイプラインが実行されたときに自動的にキャンセルするように設定できます。プロジェクト設定で有効にできます:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡張する。
  4. 冗長パイプラインの自動キャンセル]チェックボックスを選択します。
  5. 変更を保存を選択します。

実行中のジョブが完了する前にキャンセルできるかどうかを示すには、interruptible キーワードを使用します。

古いデプロイジョブの防止

プロジェクトには、同じ時間枠で実行予定の複数のデプロイジョブが同時に存在する可能性があります。

このため、古いデプロイメント・ジョブが新しいデプロイメント・ジョブの後に実行されるという事態が発生する可能性があり、これは望ましくない場合があります。

このシナリオを回避するために

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. 古いデプロイジョブを防止]チェックボックスを選択します。
  5. オプション。ロールバックデプロイのジョブの再試行を許可する]チェックボックスをオフにします。
  6. 変更を保存を選択します。

詳しくは、「展開の安全性」をご覧ください。

カスタムCI/CD設定ファイルの指定

GitLab 12.6 で導入された外部.gitlab-ci.yml ロケーションをサポート。

GitLabはプロジェクトのルートディレクトリにCI/CD設定ファイル(.gitlab-ci.yml)があることを想定しています。しかし、プロジェクト外の場所を含む別のファイル名のパスを指定することができます。

パスをカスタマイズするには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. CI/CD 設定ファイル] フィールドにファイル名を入力します。ファイルが
    • がルートディレクトリにない場合は、パスを含めてください。
    • 別のプロジェクトにある場合は、グループ名とプロジェクト名を含めてください。
    • 外部サイトにある場合は、完全なURLを入力してください。
  5. 変更を保存を選択します。
note
プロジェクトのパイプラインエディターを使用して、他のプロジェクトや外部サイトのCI/CD設定ファイルを編集することはできません。

カスタムCI/CD設定ファイルの例

CI/CD設定ファイルがルートディレクトリにない場合、パスはルートディレクトリからの相対パスでなければなりません。例えば

  • my/path/.gitlab-ci.yml
  • my/path/.my-custom-file.yml

CI/CD設定ファイルが内部サイトにある場合、URLの末尾は.yml

  • http://example.com/generate/ci/config.yml

CI/CD設定ファイルが別のプロジェクトにある場合:

  • そのファイルはデフォルトのブランチに存在するか、ブランチをrefnameとして指定する必要があります。
  • パスは相手プロジェクトのルートディレクトリからの相対パスでなければなりません。
  • パスの後には、@ シンボルを付け、完全なグループとプロジェクトのパスを指定する必要があります。

使用例:

  • .gitlab-ci.yml@namespace/another-project
  • my/path/.my-custom-file.yml@namespace/sub-group/another-project
  • my/path/.my-custom-file.yml@namespace/sub-group1/sub-group2/another-project:refname

設定ファイルが別のプロジェクトにある場合、より詳細な権限を設定できます。例えば

  • 設定ファイルをホストするパブリックプロジェクトを作成します。
  • ファイルの編集が許可されているユーザーにのみ、プロジェクトの書き込み権限を与える。

そうすれば、他のユーザーやプロジェクトは設定ファイルを編集することなくアクセスできます。

デフォルトの Git 戦略を選ぶ

ジョブの実行時に GitLab からリポジトリを取得する方法を選択できます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. Git ストラテジーでオプションを選択します:
    • git clone は、ジョブごとにリポジトリをゼロからクローンするので遅くなります。しかし、ローカルの作業コピーは常に原始的です。
    • git fetch はローカルの作業コピーを再利用するため(存在しない場合はクローンにフォールバックするため)高速です。特に大規模なリポジトリではこちらを推奨します。

設定した Git 戦略は、.gitlab-ci.yml ファイルのGIT_STRATEGY 変数 で上書きすることができます。

クローン時に取得する変更数の制限

GitLab CI/CDがリポジトリをクローンする際にフェッチする変更数を制限することができます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. Git戦略]の[Git浅いクローン]で、値を入力します。最大値は1000 です。シャロークローンを無効にし、GitLab CI/CDが毎回すべてのブランチとタグをフェッチするようにするには、値を空にするか、0に設定します。

GitLabバージョン14.7以降では、新しく作成されたプロジェクトのデフォルトのgit depth の値は20 です。 GitLabバージョン14.6以前では、デフォルトのgit depth の値は50です。

この値は、.gitlab-ci.yml ファイルのGIT_DEPTH 変数 で上書きすることができます。

ジョブの実行時間制限の設定

ジョブがタイムアウトするまでの実行時間を設定できます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. 一般的なパイプラインを拡大する。
  4. Timeout(タイムアウト)」フィールドには、分単位か、2 hoursのような人間が読み取れる値を入力します。10分以上1ヶ月未満でなければなりません。デフォルトは60分です。

タイムアウトを超過したジョブは失敗としてマークされます。

個々のランナーに対してこの値をオーバーライドすることができます。

パイプラインバッジ

パイプラインバッジを使って、プロジェクトのパイプラインの状態やテストカバレッジを示すことができます。これらのバッジは、最近成功したパイプラインによって決定されます。