タグのパターンマッチで指定するパターン文字列のは正規表現ではない
Github Actionsのワークフローにおいてtags
に指定するパターン文字列は正規表現ではない。
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+" # ←ここ
正規表現の場合、.
(ピリオド)だけではどの文字でもマッチするが、tags
で指定するパターンはそもそも正規表現ではない。
≫ Filter pattern cheat sheet(Workflow syntax for GitHub Actions - GitHub Docs)
上記ドキュメントを確認すると、正規表現とは書かれておらず「Filter pattern」としか呼ばれていない。
構文上、.
(ピリオド)は特別な文字ではなくただの.
(ピリオド)という文字として扱われる。
失敗したこと
GitHub ActionsのWorkflowでバージョン番号のタグを指定する場合、ネット上で調べると以下のような例が出てくる。
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
この場合、v1.0.0
やv10.1.0
のようなタグにマッチする。
しかしこれだと.
がどんな文字にもマッチし、v1a0b0
のようなタグにもマッチしてしまうのではないかと考え以下のように修正した。
on:
push:
tags:
- "v[0-9]+\\.[0-9]+\\.[0-9]+"
するとv1.0.0
のようなタグをpushしてもWorkflowが実行されない。
v数字.数字.数字
というタグにマッチさせるには単に"v[0-9]+.[0-9]+.[0-9]+"
とするのが正しい。
v1.0もしくはv1.0.0のようなタグにマッチさせるには
v1.0
もしくはv1.0.0
のようなタグにマッチさせるには、正規表現であれば v[0-9]+\.[0-9]+(\.[0-9]+)?
のように書ける。
しかし正規表現ではないので以下のように2つ並べて書く。
on:
push:
tags:
- "v[0-9]+.[0-9]+"
- "v[0-9]+.[0-9]+.[0-9]+"