ブランチジョブにプッシュすると起動するようにようやく機能するようになりましたが、3分ほど起動するのを待ち続けます。その後、修正してから再度コミットする必要があるエラーがあります。再び待っています。どうすればそのパブリックランナーにsshし、bashで.gitlab-ci.ymlの「スクリプト」部分をテストできますか?
公式ドキュメントはこちら で説明されているgitlab-runner exec
コマンドを使用して、ビルドをローカルに実行できます(ランナーを制御している場合)。
この方法でテストジョブの limitations も確認してください。
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
記録用:gitlab-ci.ymlをコピーして、gitlabが提供するlinter-formに貼り付けることもできます。
使用しているIDEによっては、有効性をチェックするプラグインを見つけることができる場合があります。たとえば、VSコードでは、 gitlab-vscode-extension というプラグインを使用できます。これは、.gitlab-ci.ymlファイルを検証できます。
正しい答えは、ソースコードをリポジトリにコミットしないとビルドパイプラインをテストできないということです。 gitlab-runner execを使用してビルドパイプラインの1つのジョブ(ほとんどの場合最初のジョブ)のみをテストできます。
複数のジョブを実行することはできないため、準備またはビルドのステップを他のものと連鎖させることはできません。 gitlab-runnerがクリーンチェックアウトを作成し、準備/ビルド手順を破壊するのを止める方法はありません。
テストする最良/唯一の方法は、ブランチを作成し、.gitlab-ci.ymlへの変更を強制的にプッシュすることです。