web-dev-qa-db-ja.com

タグ付きブランチでのみgitlab-ci.ymlジョブを実行するにはどうすればよいですか?

タグ付きのマスターブランチでのみ.gitlab-ci.ymlジョブを実行するにはどうすればよいですか?

job:
  script:
  - echo "Do something"
  only:
  - master
  - tags

上記のコードは、マスターブランチまたはタグ付きコミットのいずれかの条件が存在する場合に実行されます。

私の目標は、実稼働展開用にこの実行を行うことですが、Masterブランチ上にあり、(バージョンで)タグ付けされている必要があります。そうでなければ、タグがない場合にステージングにプッシュする別のジョブがあります。

38
Carson Cole

この動作は、バージョン 12 で導入されます。

未解決の問題 は最近更新されました:

Jason Lenny @jlennyは、タイトルを{-Update .gitlab-ci.ymlからビルド条件の連結ロジックをサポートする}からビルド条件の連結ロジックに変更しましたMVC・2日前

Jason Lenny @jlennyがマイルストーンを12.0・2日前に変更しました

(成功を祈っている)

解決策は、exceptキーワードを使用してすべてのブランチを除外し、onlyをタグで実行すると、マスターブランチのタグでのみパイプラインを実行することです。

  only:
    - tags
  except:
    - branches

バージョン11.3.4を使用しています

10

私はそれを機能させました、これは私の作業コードスニペットです、他のすべては私のために働いていませんでした

only:
 - tags  # please mention the 's' compared to Sergio Tomasello's solution
except:
 - branches

11.4.3を使用します

6
hannes ach

この動作はgitlab-ciではまだサポートされていませんが、追加する 未解決の問題 があります。

その間、私はまた、逸話的な報告を聞いたことがあります

only:
  - master
only:
  - tags

仕事をやり遂げます(また、そうでないという逸話的なレポートも)。

5
Matt Alioto

Matt Aliotoのような他の人に感謝します 未解決の問題 (これはProduct Vision 2019とラベル付けされているので、うまくいけばノックします)今年中に)。

Carlson Coleの質問に固有の、これは機能します:

job_for_master_no_tags:
  stage: deploy
  script:
  - echo "Release to Staging"
  only:
  - master

job_for_master_tags_only:
  stage: deploy
  script:
  - echo "Release to Production"
  only:
  - tags
  except:
  - /^(?!master).+@/    # Ruby RegEx for anything not starting with 'master'
  • このRegExの動作を確認するには、 https://rubular.com/r/1en2eblDzRP5Ha
  • これをGitLabバージョンでテストしました 11.7. そして動作します
    • 注:- /^(?!master).+/@なし)を使用しようとしても機能しません-難しい方法を学びました????
4
Eric D. Johnson