setup-lxd をGitHub Marketplaceにリリースしました
こんにちは。 whywrite.it CI班の@whywaitaです。
GitHub Actions上でLXDが使えるようになるsetup-lxdをリリースしました。
使い方
GitHub Marketplaceにリリース済みのため、GitHub Actionsのworkflowから呼び出すだけで利用できます。
name: build on: push: pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: whywaita/setup-lxd@v1 with: lxd_version: latest/stable - name: Launch instance run: | lxc launch ubuntu:focal build-server
によってインストールするLXDのバージョンを切り替えることが可能です。snapcraftのLXDパッケージを利用しているため、snapcraft上のバージョニングを利用することができます。lxd_version
類似のActionsは既に存在するのですが、ちゃんと使おうとするとうまくコンテナが足り上がらなかったりコンテナ内で色々できない設定になっているものが多かったので結局自分で作ったのでした。
ユースケース
さて、GitHub Actions上でLXDを使えるようになると夢が広がると思いますが、私の場合は
に利用しています。packer build
actions/virtual-environmentsはGitHub ActionsにおけるGitHub-hosted Runnerに利用されているOSイメージを管理しているリポジトリなのですが、こちらはAzure Pipelineを利用するためにAzure Pipeline向けのイメージを生成しています。
今回はLXDでGitHub-hostedライクなイメージを利用する要件があった(詳細は過去記事へ)ため、GitHub-hosted Runnerを用いてGitHub-hostedライクなLXDイメージを生成しています。
実際に動作している様子はこちら。GitHub Actionsではcronライクに定期実行することもできるため、毎日実行時のmainブランチを取得してきてその時点でのLXDイメージをGitHub Actions Artifactsに保存しています。
self-hosted Runnerなどで自前でLXDイメージをビルドすることも考えたのですが、virtual-environmentsがネットワーク的にさまざまな場所からパッケージを取得しているからかレイテンシっぽいビルド時間の遅延が発生し、最終的にUSで実行されているGitHub-hosted Runnerでビルドするようにしました。
結果として手元のハイスペックマシンで3,4時間かかっていたビルドにGitHub-hosted Runner(2コア)で2時間ほどまで短縮しました。どっちにしろ遅いんですが……。
ここ2,3日1時間超えるビルドを回しているけど、どうしてこんなことに……と言う気持ちにしかならない
— why/橘和板 (@whywaita) February 19, 2021
まとめ
setup-lxd をリリースしたという告知でした。ぜひご利用ください!