GitHub Actions の self hosted runner を短命にできるようになった
v2.282.0 で --ephemeral
というオプションがサポートされた。
これは1つのジョブを回したら self hosted runner を終了させるというように動作を変更するためのフラグで、今までは起動したらしっぱなしだった self hosted runner を短命な動作に変更させることができる。 これによって、例えば AWS の Auto Scaling Group で self hosted runner を起動し、ジョブを走らせたあとにすぐにインスタンスを終了させて新しいインスタンスを立ち上げる、みたいなことができるようになった。 つまり、 Self hosted runner でべき等性を確保できるようになった。
しかも、走り終わったら自動で self hosted runner の登録の解除もやってくれる。 そのため、 Runner の設定ページに大量の削除待ちのオフライン runner を見なくてもいい。
今まではそのようなことはできず、 Self hosted runner を立ち上げたら立ち上げっぱなしにするしかなく、各ジョブによるパッケージなども Docker などを利用しなければ共有せざるをえなかった。
例えば、ワークフロー
W
のジョブJ
内でyum install -y git
なぞしようものなら、W
内のJ
以外のジョブや、果ては同じ runner で走ってしまったW
以外のワークフロー内の全てのジョブにもgit
がインストールされた状態で走ってしまっていた。 これによって、ある時点ではパッケージが使えるが、インスタンスが再起動されて新しい環境が立ち上がると、git
がインストールされてないことでジョブが動かなくなる、なんてことも起こる可能性があった。
しかし、このオプションのサポートによって、適切にインスタンスを終了し新環境を立ち上げるようにすれば、各ジョブにおけるそのような不適切な共有を避けることができるようになるだろう。