GitHub Actions でデイリービルドしてリリースする
wandbox-builder でビルドしていたいくつかのコンパイラの HEAD バージョンを、自動でデイリービルドしてリリースするようにしてみました。

同様に webrtc-build でも master ブランチの WebRTC をデイリービルドしてリリースするようにしてみました。

今まで大変だったデイリービルドがこれですごい楽になりました。GitHub Actions 素晴らしいです。
実装について
GitHub Actions の schedule 機能を使ってデイリービルドを行い、出来上がったパッケージを deploy-nightly を使ってリリースにアップロードしているだけです。deploy-nightly すごい便利です。
.github/workflows/daily.yml
は以下のようなコードになっています。
on.schedule[].cron
で、毎日、日本時間の9時にジョブが走るようにしています。
jobs.build-linux.steps
にある “ run: ./build.ubuntu-18.04_armv8.sh” と書いてあるステップで、ビルドしたりパッケージを行っています。
jobs.build-linux.steps
にある “name: Release ubuntu-18.04_armv8 latest” と、“name: Release ubuntu-18.04_armv8 nightly” と書いているステップで、deploy-nightly を使ってリリースにパッケージ化されたファイルをアップロードしています。
2つのファイルををアップロードしているのは、常に最新のパッケージ(latest)と、過去7日分のパッケージ(nightly)を提供するためです。
deploy-nightly の使い方ですが、README.md を見れば割とすぐに分かります。
注意点として、設定に upload_url
と release_id
が必要なので、あらかじめ適当なタグを打ってリリースを作っておく必要があります。リリースを作っておけば、例えば https://api.github.com/repos/melpon/wandbox-builder/releases みたいな感じで API を叩けば、 upload_url
と release_id
が分かるので、これを設定するだけです。
あとasset_name
に $$
を含めておけば、これが日付とリポジトリコミットハッシュに変換されるので、これを含めておけば毎日違うアセット名でアップロードできます。
同名のファイルは(deploy-nightly の v1.0.2 から)上書きされるようになっているので、 $$
を含めなければ毎回上書きされます。これで常に最新のバイナリをアップロードできます。