GitHubActionsのifが全部falseになる問題
明けましておめでとうございます!Mizutani(@sirycity)です。
今日はそんな新年1発目に相応しいGitHub Actions(以下Actions)の話です。どこが?
はじめに結論
とりあえず== 'true'
って付けとけば大抵の場合直るはず。
Actionsについて
GitHubに最初からくっついているCIです。
Actionsのifについて
Actionsにはifってのがあります。一定の条件のときだけ実行するやつです。
たとえばtagをpushしたときにだけリリースって出力するやつはこう。
- name: Released
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo Released!
github.ref
っていう環境変数にどういうcommitか? ってのが入ってるので、その先頭の文字がrefs/tags/v
か?ってのをstartsWithっていう用意されてる関数で検証してます。
こんだけ。簡単!
ついでに変数について
Actionsには変数があります。さっきのstartsWithの所、結構長いしあっちこっちで使うので変数にしておきましょう。こんな感じ。
env:
IS_RELEASED: ${{ startsWith(github.ref, 'refs/tags/v') }}
steps:
- name: Released
if: env.IS_RELEASED
run: |
echo Released!
IS_RELEASED
っていう変数にしときました。よし。これで完璧。
罠
いいえ。完璧ではありません。↑のコード、常にfalseになります。もう1回言います。↑のif式は常にfalseになります。
新年だしもう1回言っておきましょうか。↑は常にfalseになります。
理由と対策
理由ですが、すいません僕の頭では分かりませんでした。このあたりの記事が参考になります。
一方で対策の方は実にシンプルで、if式の末尾に== 'true'
を付けるだけです。こう。
env:
IS_RELEASED: ${{ startsWith(github.ref, 'refs/tags/v') }}
steps:
- name: Released
if: env.IS_RELEASED == 'true'
run: |
echo Released!
完成。たいていのケースではこれでいける...と思います。
さいごに
以上Actionsのちょっとした罠についてでした。CIは手元で検証とかしにくいし(する方法もあるけど)こういう罠には注意ですね。以上!今年もよろしくお願いします。
PREV
2022-12-13
【CSS】めんどくさいRetinaディスプレイの考え方
NEXT
2023-01-13
Todoistは慢性的に遅延する繰り返しタスクを設定できない
LINK
リンク
Twitter
GitHub
TAGS
タグ
LATESTS
最新の記事
POPULAR
人気の記事
- CSS2021/04/29【CSS】右寄せの方法は結局flexが一番良さそう
- React2020/07/13【JS】Reactのstyleの使い方、書き方いろいろ
- Payment2021/10/16GooglePayでVisaタッチを使う時に知っておきたい過酷な現実【追記あり】
- Others2021/07/11Slackに予約投稿機能ができて嬉しいけどそれでもまだ少し不満な理由【追記あり】
- CSS2020/04/30【CSS】tailwind.cssでよく使うデザインパターン
- CSS2019/03/30【CSS】100vhは「一画面」ではないという罠
- CSS2020/06/09【CSS】max-font-sizeやmin-font-sizeを使いたくなったら
- Vue2019/06/29【JS】Vueの:classの書き方3通り
- JavaScript2020/09/02【JS】yarnの長所とyarnからnpmに戻ってきた理由
- React2020/06/04【JS】ReactのclassNameの色々な書き方紹介