Gitlab CIで特定のジョブを1つ実行する必要があるという問題に直面しています。現在、この問題の解決方法はわかりません。 .gitlab-ci.yml
には複数のジョブが定義されていますが、パイプライン内で実行する必要があるのは1つのジョブのみです。どうすれば1つのジョブだけを実行できますか。 job1
またはjob2
?私たちの環境では、tags
またはbranches
をソフトウェアスイッチとして使用することはできません。
before_script:
- docker info
job1:
script:
- do something
job2:
script:
- do something
tags
またはbranches
以外のソフトウェアスイッチを使用することはできないようです。GitLab CIの制限が多すぎるため、ようやく他の「実際の」CIに切り替えました。異なる手順でいくつかのカスタムジョブを実行する場合、GitLab CIは便利です。ここで両方の答えを本当に感謝しています。彼らは他のユーザーがこのようなものを管理するのを助けると確信しています。残念ながら、私たちの場合、tags
、commit messages
またはbranches
をソフトウェアスイッチとして使用します。
これについてはまだ答えを探しています。この問題を解決するための別のアプローチを自由に提供してください。それが当たったら私は正しい答えをマークします。また、この質問に対する報奨金は正しい答えにはなりませんでした。
私たちは過去に同じ問題に直面し、私はあなたに私たちの解決策を共有しています。
when: manual
を追加すると、パイプライン内のすべてのジョブが常に表示されます。job 1
、job 2
およびjob 4
を実行する必要がありますが、job3
は実行しないでください。job 3
を実行するのは、特定の場合、または実行を決定したときだけです。helloTag.1
、helloTag.2
、helloTag.3
...などのタグに対して起動されます。develop
またはmaster
(または他のブランチ)にいる場合、3つのステージ(ステージ1、ステージ2、ステージ4)があります。
3番目のジョブがパイプラインに存在しないことに注意してください
[リポジトリ]-> [タグ]-> [新しいタグ]に移動します
タグに正規表現と同じ名前を付けます
「helloTag。」で始まる名前のタグ内にいる場合、1つのステージ(ステージ3)があります。
他のステージがここに存在しないことに注意してください
.gitlab-ci
ファイルの例stages:
- myStage1
- myStage2
- myStage3
- myStage4
This is my first stage:
stage: myStage1
before_script:
- echo "my stage 1 before script"
script:
- echo "my stage 1 script"
except:
- /^helloTag.*$/
This is my second stage:
stage: myStage2
before_script:
- echo "my stage 2 before script"
script:
- echo "my stage 2 script"
except:
- /^helloTag.*$/
This is my third stage:
stage: myStage3
before_script:
- echo "my stage 3 before script"
script:
- echo "my stage 3 script"
only:
- /^helloTag.*$/
This is my fourth stage:
stage: myStage4
before_script:
- echo "my stage 4 before script"
script:
- echo "my stage 4 script"
except:
- /^helloTag.*$/
これがお役に立てば幸いです。
gitlab変数式 を以下のように/ exceptのみで使用し、必要に応じて変数をパイプライン実行に渡すことができます。
この例では、デフォルトで両方のジョブが実行されますが、「firstJobOnly」に「true」を渡すと、最初のジョブのみが実行されます。
variables:
firstJobOnly: 'false'
before_script:
- docker info
job1:
script:
- do something
job2:
script:
- do something
except:
variables:
- $firstJobOnly =~ /true/i
単にwhen: manual
実行したくないジョブに。
これらのジョブは引き続きパイプラインに表示されますが、誰かが「手動」でWebインターフェースを介してジョブを開始しない限り、実行されないため、名前が付けられます。
これに関する詳細は次のとおりです: https://docs.gitlab.com/ce/ci/yaml/README.html#when
より「プログラム可能な」何かを探しているなら、どちらかを実行するとしましょうjob1
またはjob2
ブランチ名またはタグに応じて、only
およびexcept
キーワードを確認する必要があります。 https://docs.gitlab.com/ce/ ci/yaml/README.html#only-and-except