Article:

2023/09/14

2023/09/14

今日のコメント

ねむい

やることがいろいろ詰まっててやばいな~という最近

こういうときは一旦やることリストアップして書き出して、冷静にスケジューリングしてやっていくしかない

今週末は三連休らしい。ここで遅れを取り戻したいところ

今日のまなび

GithubActions

Actions、ちょっと複雑なことしようとすると一瞬で難しくなってなんだかな~という感じ

outputに複数行詰める

1
2
3
4
delimiter="$(openssl rand -hex 8)"
echo "output-name<<$delimiter" >> "${GITHUB_OUTPUT}"
echo "Some\nMultiline\nOutput" >> "${GITHUB_OUTPUT}"
echo $delimiter >> $GITHUB_OUTPUT

EOFみたいなやつで囲めるらしい。辺にエスケープするよりかはシンプルで良い。 とはいえなんかこんな基本的なことが未だにトリッキーな方法でできないのがちょっとつらい

シンプルに標準出力全部キャプチャーとかできたらいいのにな~~~

continue-on-errorの罠とif: always()

continue-on-errorだとjobの成功判定が強制的にsuccessしたことになってしまう(最終的なサマリの画面でもそう表示されていまう)

steps.<step_id>.conclusionでステップの結果がsuccessなのかfailure等々なのかが分かるが、continue-on-error: trueにしているとこれも強制的にsuccessになる。

ちなみに、steps.<step_id>.outcomeを見ればcontinue-on-errorでもfailureだと分かる https://docs.github.com/ja/actions/learn-github-actions/contexts

stepにifで前のステップの状況をもとにそのステップを実行するかどうかを指定することができる。

デフォルトだとsuccess()だと思われて、前のステップが成功してないと次のステップはスキップされる。 逆にfailure()があるし、前のステップの状態に関わらず次のステップを実行させるのにはalways()を使うことができる。

まとめ:
成功不成功に関わらず次のステップに進むためにcontinue-on-errorを使うのは間違い。always()を使うほうが正しい。

job

依存関係をneedsで設定できる

GCP

1
2
3
4
5
# list
gcloud compute instances list
# ssh
gcloud compute ssh <name> --zone <region>
gcloud compute scpもある(便利)

その他

つくりたい

【ホットクックレシピ】チンジャオロース

よみたい

Kubernetesソースコードリーディング入門