web-dev-qa-db-ja.com

GitLab:特定のランナーでパイプラインを実行することは可能ですか?

特定のランナーでパイプラインを実行することは可能ですか? (タグを使用しない)

environments、あるいはgitlab runner execを使用することは可能ですか?


シナリオ:

複数のランナーが既にアタッチされている既存のプロジェクト(ランナーの登録に使用される特定のプロジェクトトークン)があり、独自のタグが関連付けられている(したがって、これらも変更できません)。

新しいランナーを追加していますが、最初にテストして機能することを確認する必要がありますが、タグやランナーの特定のプロジェクトを変更せずに、パイプラインをこのマシンでビルドするように強制する必要があります。

7
Rekovni

現在、GitLabで特定のランナーを構築するためのソリューションはありませんが、 Sticky Runners に未解決の問題があります。これは、マイルストーンによると、今後3〜6か月で解決されることを願っています。


特定のランナーでプロジェクトを構築するためにこれまでに行った回避策は、次の行に沿って、かなりハックな方法で GitLab Runner API を使用することです。

  • すべてのプロジェクトランナーを取得する
  • 私が最新のランナーをデプロイしたことを知っているので、それは最も高いランナー「数」を持っているでしょう
  • 問題のプロジェクトに関連する他のすべてのランナーを一時停止します
  • パイプラインをトリガーして、最新のランナーを構築します
  • GitLab APIをポーリングして、パイプラインのステータスを取得します
  • それが成功したら、他のすべてのランナーを再開してください!
  • パイプラインに障害が発生した場合は、一時停止したランナーを再開することを忘れないでください...
2
Rekovni

テストのために新しいランナーを分離するための2つのメカニズムがあります。

  1. タグとプライベートランナーアタッチメントを使用する(すでに呼び出されている)
  2. ランナーで直接gitlab-runnerexec動詞を使用する
  3. カナリアシングルビルドのみのランナー

オプション1

タグとプライベートランナーアタッチメントを使用します(すでに呼び出されています)。

これをさらに拡張するには...タグなどを変更できない過酷な設定でも、いつでもプロジェクトをフォークできます。

新しいプライベートフォークで、[設定] >> [CI/CD]に移動し、[一般的なパイプライン設定]の下のカスタムCI構成パスで.gitlab-ci.ymlファイルを上書きできます。これにより、git cp .gitlab-ci.yml .mycustomgitlab-ci.ymlそして単にgit add/git commit/git Pushそしてあなたはビジネスをしています。

意見:問題のあるランナーのタグを調整し、新しいフォークされたプロジェクトを分離するためのメカニズムを使用できない場合、これは技術的な問題ではなく、政治的な問題です。

オプション2

Gitlab-runnerexec..。

Shellgitlabランナーを使用していると仮定します...

  1. テストしようとしている疑わしいgitlabランナーボックスにSSHで接続します
  2. 問題のプロジェクトのリポジトリのクローンを作成して...言う.../tmp/myrepo
  3. Gitlab-Runnerを実行します:/path/to/gitlab-runner exec Shell {.gitlab-ci.yml target}

https://docs.gitlab.com/runner/commands/#gitlab-runner-exec およびそれに関するブログ https://substrakt.com/how-to-)を参照してください。 debug-gitlab-ci-builds-locally /

オプション3

単一ビルドのgitlab-runnerをカナリアします。

Gitlab-runnerプロセスを起動して、N回のビルドを実行してから、オフラインに戻すことができます。参照: https://docs.gitlab.com/runner/commands/#gitlab-runner-run-single

...これは影響がゼロではありませんが、問題の爆風半径を確実に制限します。

3
zeathe

タグを使用したくない場合は、別のオプションとして、ランナーを特定のプロジェクトに割り当てることができます。このオプションまたは代替タグは、Gitlabの設計方法です。

0
djuarez