この記事はフラーAdvent Calendar 2020の3日目の記事です。 2日目はid:gibachan03 さんで「Androidアプリエンジニアになって気づいたiOSとの違い」でした。
さて、公開当初色々して遊んだ GitHub Actions ですが、今年も引き続き遊んでました。 いくつか新しい Action を作ったものの、このブログでは紹介していなかったので、2020年作ったものを紹介したいと思います。
actions-upload-release-asset
一言で表すのならば、 Yet Another actions/upload-release-asset GitHub Action です。 GitHub の Releases にファイルをアップロードする Action です。 このアクションは GitHub 公式という安心感はあるのですが、一度のステップで1個のファイルしかアップロードできません。
ソースファイル本体と、ビルド済みバイナリと・・・と色々アップロードしたいものがあったので、新しく作りました。 actions-upload-release-asset は @actions/glob の Glob Pattern に対応しているので、一つのステップで複数のファイルをアップロードすることができます。
例えば、カレントディレクトリにあるテキストファイルを全てアップロードする例は以下のようになります。
on:
release:
types:
- created
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# steps for building assets
- run: echo "REPLACE ME!" > assets.txt
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "*.txt"
actions-setup-mysql
MySQLをインストールしてくれる Action です。 GitHubが提供している Linux イメージに MySQL はインストールされているのですが、MySQL 8.0 と MySQL 5.7 の二種類しかありません。 (ref. ubuntu-20.04, ref. ubuntu-18.04)
まあ、 Linux に関しては Docker で落としてくればいい話なんですが、問題になるのは macOS と Windows。 そもそもインストールされてないし、Dockerも使えない。 仕方がないからソースから自前でコンパイルするか・・・とバイナリをビルドして、ビルド済みのバイナリをダウンロードできるようにしたものが actions-setup-mysql です。
以下のようにバージョンを指定するだけで、ダウンロードして起動してくれます。便利!
steps:
- uses: actions/checkout@v2
- uses: shogo82148/actions-setup-mysql@v1
with:
mysql-version: '8.0'
- run: mysql -uroot -h127.0.0.1 -e 'SELECT version()'
MariaDBもいけます。
steps:
- uses: actions/checkout@v2
- uses: shogo82148/actions-setup-mysql@v1
with:
mysql-version: '10.5'
distribution: 'mariadb'
- run: mysql -uroot -h127.0.0.1 -e 'SELECT version()'
対応しているバージョンは
- MySQL
- 8.0
- 5.7
- 5.6
- MariaDB
- 10.5
- 10.4
- 10.3
これより古いバージョンは macOS や Windows で素直にビルドできないので諦めました。 欲しい人はプルリクエストを投げてください。
おまけ
厳密には今年じゃないけどブログでは紹介してないやつ & 最近のアップデート内容です。
actions-setup-redis
actions-setup-mysql の Redis版ですね。 Redisのダウンロードと起動をやってくれます。
steps:
- uses: actions/checkout@v2
- uses: shogo82148/actions-setup-redis@v1
with:
redis-version: '6.x'
- run: redis-cli ping
actions-setup-perl
「Setup Perl GitHub Action を公開しました」で紹介した perlをインストールしてくれる Action です。
今年リリースされた v5.32.0 はもちろん、公開当時は未対応だった v5.22 以前の Windows ビルドにも対応しました。 GNUMakefile が存在しないので、dmakeやnmake用のMakefileを参考に再構築するという地道な努力(shogo82148/perl-win32-gnumakefiles) によって実現しました。長い道のりだった・・・。
まとめ
actions-setup-mysql, actions-setup-redis, actions-setup-perl のバイナリは AWS S3 においてあるんですが、 最近使用料が去年の倍くらいになった気がします 🤔 「S3の使用料なんて大したことないだろ!」と高をくくってました。ネットワークのアウトって意外と高いんですね・・・
そういうわけで皆様のお気持ちを心からお待ち申し上げています。
フラーAdvent Calendar 2020 4日目の担当は @furusax さんで「CloudFormation でドリフトを検出してしまった Aurora MySQL クラスターを再インポートした話」です。