パイプラインエディター

パイプラインエディタは、リポジトリのルートにある.gitlab-ci.yml ファイルの GitLab CI/CD 設定を編集する主な場所です。エディターにアクセスするには、Build > Pipeline editorに進んでください。

パイプラインエディターのページでは以下のことができます:

  • 作業するブランチを選択します。
  • ファイルを編集しながら、設定の構文を検証してください。
  • include キーワードで追加されたすべての設定と検証するために、設定をより深くlintしてください。
  • include キーワード](#view-included-cicd-configuration) で追加された CI/CD 設定の[リストを表示します。
  • 現在の設定の視覚化を参照してください。
  • include 、任意の設定が追加された設定が表示されます。
  • 変更を特定のブランチにコミットします。

GitLab 13.9以前では、エディターを使うには、プロジェクトのデフォルトブランチに .gitlab-ci.yml ファイル をすでに作成しておく必要があります。

CI 設定の検証

パイプライン設定を編集すると、GitLab CI/CDパイプラインスキーマに対して継続的に検証されます。CI YAML 設定の構文をチェックし、基本的な論理検証も行います。

この検証の結果はエディタページの上部に表示されます。設定が無効な場合、問題を修正するためのヒントが表示されます:

Errors in a CI configuration validation

LintCIの設定

note
GitLab 15.3では、LintタブがValidateタブに置き換えられました。Lint の結果は、成功したパイプラインシミュレーションに含まれます。

変更をコミットする前にGitLab CI/CD設定の妥当性をテストするには、CI lintツールを使うことができます。アクセスするには、Build > Pipeline editorに行き、Lintタブを選択します。

このツールは構文や論理のエラーをチェックしますが、エディタでの自動検証よりも詳細なチェックを行います。

結果はリアルタイムで更新されます。設定に加えた変更はCI lintに反映されます。既存のCI Lintツールと同じ結果が表示されます。

Linting errors in a CI configuration

CI/CDパイプラインのシミュレーション

GitLab 15.3 で導入されました

パイプラインの構文やロジックのイシューを探すために、ValidateタブでGitLab CI/CDパイプラインの作成をシミュレーションすることができます。パイプラインのシミュレーションは、間違ったrulesneeds ジョブの依存関係などの問題を見つけるのに役立ち、CI Lint ツールのシミュレーションと似ています。

含まれる CI/CD 設定を見る

include キーワードで追加した設定は、パイプラインエディターでレビューすることができます。右上のファイルツリー({file-tree})を選択すると、含まれる設定ファイルの一覧が表示されます。選択したファイルはレビュー用に新しいタブで開きます。

CI設定の可視化

.gitlab-ci.yml 設定の視覚化を表示するには、プロジェクト内でBuild > Pipeline editor と進み、Visualizeタブを選択してください。可視化には、全てのステージとジョブが表示されます。needs の関係は、ジョブをつなぐ線として表示され、実行の階層を示します:

CI configuration Visualization

ジョブにカーソルを合わせると、needs の関係がハイライトされます:

CI configuration visualization on hover

設定にneeds 関係がない場合、各ジョブは前のステージが正常に完了したことだけに依存するため、線は引かれません。

設定全体を見る

完全に拡張されたCI/CD設定を1つの結合されたファイルとして表示するには、パイプラインエディタのフル設定タブに移動します。このタブには展開された設定が表示されます:

!reference タグを使用すると、ネストされた設定が拡張ビューの行頭に複数のハイフン (-) で表示されることがあります。この動作は予期されるものであり、余分なハイフンはジョブの実行に影響しません。例えば、この設定と完全に展開されたバージョンはどちらも有効です:

  • .gitlab-ci.yml ファイル

     .python-req:
       script:
         - pip install pyflakes
       
     .rule-01:
       rules:
         - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/
           when: manual
           allow_failure: true
         - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
       
     .rule-02:
       rules:
         - if: $CI_COMMIT_BRANCH == "main"
           when: manual
           allow_failure: true
       
     lint-python:
       image: python:latest
       script:
         - !reference [.python-req, script]
         - pyflakes python/
       rules:
         - !reference [.rule-01, rules]
         - !reference [.rule-02, rules]
    
  • フル設定タブの拡張設定:

     ".python-req":
       script:
       - pip install pyflakes
     ".rule-01":
       rules:
       - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/"
         when: manual
         allow_failure: true
       - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
     ".rule-02":
       rules:
       - if: $CI_COMMIT_BRANCH == "main"
         when: manual
         allow_failure: true
     lint-python:
       image: python:latest
       script:
       - - pip install pyflakes                                     # <- The extra hyphens do not affect the job's execution.
       - pyflakes python/
       rules:
       - - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/" # <- The extra hyphens do not affect the job's execution.
           when: manual
           allow_failure: true
         - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"               # <- No extra hyphen but aligned with previous rule
       - - if: $CI_COMMIT_BRANCH == "main"                          # <- The extra hyphens do not affect the job's execution.
           when: manual
           allow_failure: true
    

CI設定への変更のコミット

コミットフォームはエディタの各タブの下に表示されるので、いつでも変更をコミットできます。

変更に満足したら、コミットメッセージを追加し、ブランチを入力します。ブランチフィールドのデフォルトはプロジェクトのデフォルトブランチです。

新しいブランチ名を入力すると、これらの変更で新しいマージリクエストを開始する チェックボックスが表示されます。これを選択すると、変更をコミットした後に新しいマージリクエストが開始されます。

The commit form with a new branch

トラブルシューティング

Configuration validation currently not available メッセージ

このメッセージはパイプラインエディタでの構文の検証の問題によって引き起こされます。次のような場合に起こります:

  • GitLabが構文を検証するサービスと通信できないため、これらのセクションの情報が正しく表示されない可能性があります:

    • Editタブの構文ステータス(有効か無効か)。
    • ビジュアライズ」タブ。
    • Lintタブ。
    • フル設定タブ。

    CI/CD 設定で作業し、行った変更をコミットしてもイシューは発生しません。サービスが再び利用可能になると、すぐに構文検証が表示されるはずです。

  • include を使用していますが、インクルードされた設定ファイルはループを作成します。たとえば、.gitlab-ci.ymlfile1.ymlをインクルードし、 は を�file2.ymlfile2.yml��ンクルードし、 と のfile2.ymlfile1.yml間にループを作成 file1.yml file2.ymlします。

    include 行のいずれかを削除すると、ループが解消され、イシューが解決します。