ドキュメンテーションやいくつかの記事を読みましたし、私のことを馬鹿だと言うかもしれませんが、このようなコンセプトで仕事をするのは初めてです。
*しかし、ジョブの実行はこれらのタグにどのように依存しているのでしょうか?私がテストした限りでは、新しいコードをリポジトリにプッシュすると、.ymlファイルがとにかく実行されます。
**では、コミットでバージョンを定義したときだけビルドを実行したい場合はどうすればいいのでしょうか?
IDK...
git commit --tags "v. 2.0" -m "this is version 2.0" (probably not right)
しかし、もちろんそれは普遍的なものであるべきで、ランナーをトリガーするためにどのタグを使うかを常に指示する必要はありません。
**お分かりのように、私はかなり混乱しています...。タグが具体的にどのように機能するのか、コンセプトを理解できるように詳しく教えていただけると、本当にありがたいです。
GitLab CI用のタグとGit用のタグは異なる概念です。
.gitlab-ci.ymlを書くときに、いくつかのジョブを
testing` というタグで指定することができます。 このタグが関連付けられたランナーがあれば、そのジョブをピックアップします。
Git では、リポジトリ内で特定のコミットをマークするためにタグを使用します。 バージョンに *タグをつけることもよくあります。
GitLab CIでパイプラインを開始するために(Gitで)タグを使うと、この2つの概念が混同されることがあります。 .gitlab-ci.ymlでは、
onlyセクションに
tags`を指定することができます。
GitLab documentation for tags]1 と only を参照してください。
例えば、gitでタグをプッシュする場合です:
$ git tag -a 1.0.0 -m "1.0.0"
$ git push origin 1.0.0
そして、.gitlab-ci.yml
にこのようなジョブを記述します:
compile:
stage: build
only: [tags]
script:
- echo Working...
tags: [testing]
のようにすると、testing
タグを持つランナーを使用するようになります。
私の理解では、あなたのステップに欠けているのは、ランナーに testing
タグを指定することです。 これを行うには、GitLabでプロジェクトに入ります。 次に
Wikiの横にある、Settingsをクリックしてください。 CI/CD Pipelines** に進み、そこにランナーがあります。 そのランナーのGuidの横にあるペンのアイコンをクリックしてください。 次のページでタグを変更できます。
これらの作業はすべて必要なのですか?
いいえ、ランナーが1人しかいない場合や、ランナーがたくさんいてもどのランナーがジョブを実行するか気にしない場合は、ランナーやジョブにタグを付ける意味はありません。
では、ビルドを実行するのは、コミットでバージョンを定義したときだけにしたい場合はどうすればいいですか? でバージョンを定義したときだけビルドを実行したい場合はどうすればよいでしょうか?
job:
only:
- tags