web-dev-qa-db-ja.com

Gitlab CIタグについて

私はドキュメンテーション、いくつかの記事を読みましたが、あなたは私を愚かだと呼ぶかもしれませんが、このような概念を扱うのはこれが初めてです。

  • 「testing」タグでランナーを登録しました
  • gitlabでタグ「testing」を作成しました
  • 特定のプロジェクトでこのランナーをバインドしました
  • 同じタグも追加しましたローカルリポジトリで「テスト」しています。

ただし、これらのタグに依存してジョブをどの程度正確に実行していますか?これらのすべての操作が必要ですか?新しいコードをリポジトリにプッシュすると、テストした限り* .ymlファイルが実行されます。

つまり、コミットでバージョンを定義するときにのみビルドを実行したい場合はどうなりますか?

IDK ...

   git commit --tags "v. 2.0" -m "this is version 2.0" (probably not right)

しかし、もちろんそれは普遍的でなければならないので、ランナーをトリガーするためにどのタグを使用するかを常に伝える必要はありませんが、たとえば、数値を認識させます。

ご覧のとおり、私はかなり混乱しています...タグがどのように正確に機能するかを詳しく説明できれば、概念を理解できるようになり、本当に感謝しています

18
RiddleMeThis

GitLab CIのタグとGitのタグは2つの異なる概念です。

.gitlab-ci.ymlを記述するとき、タグtestingを使用していくつかのジョブを指定できます。このタグが関連付けられているランナーが利用可能な場合、ランナーはジョブをピックアップします。

Gitでは、リポジトリ内でタグを使用して特定のコミットをマークします。多くの場合、バージョンをtagするために使用されます。

Gitでタグを使用してGitLab CIでパイプラインを開始すると、2つの概念が混同される可能性があります。 .gitlab-ci.ymlでは、onlyでセクションtagsを指定できます。

タグのGitLabドキュメント および のみ を参照してください。

例は、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の横にあるペンアイコンをクリックします。次のページでタグを変更できます。

38
elbaid

これらの操作はすべて必要ですか?

いいえ、1人のランナーしかいない場合、または多くのランナーがジョブを実行していることを気にしない場合は、ランナー/ジョブにタグ付けしても意味がありません。

それでは、コミットでバージョンを定義するときにのみビルドを実行したい場合はどうでしょうか?

job:
  only:
    - tags
3