先日, こちらのエントリでGitHub公式のactions/cache
を使わずに, 自前でS3を使ってキャッシュする方法を紹介しました.
「これ, actionに切り出して再利用できるようにしてみては?」という意見を頂いたので, 日曜日にサクッと実装してみました.
S3にキャッシュをするので, 予めS3バケットを作り, そこに読み書きが可能なAWS_ACCESS_KEY_ID
/AWS_SECRET_ACCESS_KEY
をリポジトリ/オーガニゼーションのSecretsで指定した上で, 次のようなワークフローを記述することで利用できます.
on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: papix/action-cache-s3@master env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ap-northeast-1 with: bucket: cache-s3-test-bucket key: node_modules-${{ hashFiles('package.json') }} path: node_modules
一応, actions/cache
とほぼほぼ似た使い勝手になるように作っています(実際にS3へキャッシュする部分をジョブの最後に実行するようにしたりとか).
...但しドキュメントやテストはほぼ未整備ですし, actions/cache
にあるrestore-keys
のような仕組みもまだないので, これらは追々整備していこうと思います.
こちらのエントリでも紹介しましたが, GitHub公式のactions/cache
は現状若干クセがある... と言えると思っています.
その辺りで困っている方は是非使ってみていただければと思います(Pull Requestも歓迎です!).
あと, これを作るにあたっていろいろとGitHub Actionsのactionを実装する際の知見を得ることが出来たので, これらについて別エントリでご紹介しようと思います.