パイプラインエディター
パイプラインエディタは、リポジトリのルートにある.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 設定の構文をチェックし、基本的な論理検証も行います。
この検証の結果はエディタページの上部に表示されます。設定が無効な場合、問題を修正するためのヒントが表示されます:
LintCIの設定
変更をコミットする前にGitLab CI/CD設定の妥当性をテストするには、CI lintツールを使うことができます。アクセスするには、Build > Pipeline editorに行き、Lintタブを選択します。
このツールは構文や論理のエラーをチェックしますが、エディタでの自動検証よりも詳細なチェックを行います。
結果はリアルタイムで更新されます。設定に加えた変更はCI lintに反映されます。既存のCI Lintツールと同じ結果が表示されます。
CI/CDパイプラインのシミュレーション
GitLab 15.3 で導入されました。
パイプラインの構文やロジックのイシューを探すために、ValidateタブでGitLab CI/CDパイプラインの作成をシミュレーションすることができます。パイプラインのシミュレーションは、間違ったrules
やneeds
ジョブの依存関係などの問題を見つけるのに役立ち、CI Lint ツールのシミュレーションと似ています。
含まれる CI/CD 設定を見る
include
キーワードで追加した設定は、パイプラインエディターでレビューすることができます。右上のファイルツリー({file-tree})を選択すると、含まれる設定ファイルの一覧が表示されます。選択したファイルはレビュー用に新しいタブで開きます。
CI設定の可視化
- GitLab 13.5 で導入されました。
- GitLab 13.7でBuild > Pipeline editorに移動。
- GitLab 13.12で機能フラグを削除。
.gitlab-ci.yml
設定の視覚化を表示するには、プロジェクト内でBuild > Pipeline editor と進み、Visualizeタブを選択してください。可視化には、全てのステージとジョブが表示されます。needs
の関係は、ジョブをつなぐ線として表示され、実行の階層を示します:
ジョブにカーソルを合わせると、needs
の関係がハイライトされます:
設定にneeds
関係がない場合、各ジョブは前のステージが正常に完了したことだけに依存するため、線は引かれません。
設定全体を見る
完全に拡張されたCI/CD設定を1つの結合されたファイルとして表示するには、パイプラインエディタのフル設定タブに移動します。このタブには展開された設定が表示されます:
-
include
でインポートされた設定がビューにコピーされます。 -
extends
を使用するジョブは、拡張設定がジョブにマージされた状態で表示されます。 - YAMLアンカーはリンクされた設定に置き換えられます。
-
YAML
!reference
タグ もリンクされた設定に置き換えられます。
!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設定への変更のコミット
コミットフォームはエディタの各タブの下に表示されるので、いつでも変更をコミットできます。
変更に満足したら、コミットメッセージを追加し、ブランチを入力します。ブランチフィールドのデフォルトはプロジェクトのデフォルトブランチです。
新しいブランチ名を入力すると、これらの変更で新しいマージリクエストを開始する チェックボックスが表示されます。これを選択すると、変更をコミットした後に新しいマージリクエストが開始されます。
トラブルシューティング
Configuration validation currently not available
メッセージ
このメッセージはパイプラインエディタでの構文の検証の問題によって引き起こされます。次のような場合に起こります:
-
GitLabが構文を検証するサービスと通信できないため、これらのセクションの情報が正しく表示されない可能性があります:
- Editタブの構文ステータス(有効か無効か)。
- ビジュアライズ」タブ。
- Lintタブ。
- フル設定タブ。
CI/CD 設定で作業し、行った変更をコミットしてもイシューは発生しません。サービスが再び利用可能になると、すぐに構文検証が表示されるはずです。
-
include
を使用していますが、インクルードされた設定ファイルはループを作成します。たとえば、.gitlab-ci.yml
はfile1.yml
をインクルードし、 は を�file2.yml
file2.yml
��ンクルードし、 と のfile2.yml
file1.yml
間にループを作成file1.yml
file2.yml
します。include
行のいずれかを削除すると、ループが解消され、イシューが解決します。