web-dev-qa-db-ja.com

gitlab-ci.ymlをテストするにはどうすればよいですか?

ブランチジョブにプッシュすると起動するようにようやく機能するようになりましたが、3分ほど起動するのを待ち続けます。その後、修正してから再度コミットする必要があるエラーがあります。再び待っています。どうすればそのパブリックランナーにsshし、bashで.gitlab-ci.ymlの「スクリプト」部分をテストできますか?

17
holms

公式ドキュメントはこちら で説明されているgitlab-runner execコマンドを使用して、ビルドをローカルに実行できます(ランナーを制御している場合)。

この方法でテストジョブの limitations も確認してください。

15

インストールgitlab-runner

OS=darwin
#OS=linux # Uncomment on linux
Sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-${OS}-AMD64
Sudo chmod +x /usr/local/bin/gitlab-runner

公式gitlab-runnerドキュメント ここ

コマンドを作成する

次の.gitlab-ci.ymlファイルは、buildという名前のタスクを定義します。

build:
  script:
    - echo "Hello World"

コマンドをローカルで実行する 制限が適用されます!

gitlab-runner exec Shell build

上記をローカルで実行すると、次の出力が得られます。

Running with gitlab-runner 11.3.1~beta.4.g0aa5179e (0aa5179e)
Using Shell executor...
Running on cory-klein.local...
Cloning repository...
Cloning into '/Users/coryklein/code/prometheus-redis-exporter/builds/0/project-0'...
done.
Checking out 66fff899 as master...
Skipping Git submodules setup
$ echo "Hello World"
Hello World
Job succeeded
19
Cory Klein

記録用:gitlab-ci.ymlをコピーして、gitlabが提供するlinter-formに貼り付けることもできます。

enter image description here

使用しているIDEによっては、有効性をチェックするプラグインを見つけることができる場合があります。たとえば、VSコードでは、 gitlab-vscode-extension というプラグインを使用できます。これは、.gitlab-ci.ymlファイルを検証できます。

16
B12Toaster

正しい答えは、ソースコードをリポジトリにコミットしないとビルドパイプラインをテストできないということです。 gitlab-runner execを使用してビルドパイプラインの1つのジョブ(ほとんどの場合最初のジョブ)のみをテストできます。

複数のジョブを実行することはできないため、準備またはビルドのステップを他のものと連鎖させることはできません。 gitlab-runnerがクリーンチェックアウトを作成し、準備/ビルド手順を破壊するのを止める方法はありません。

テストする最良/唯一の方法は、ブランチを作成し、.gitlab-ci.ymlへの変更を強制的にプッシュすることです。

6
chugadie