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_version によってインストールするLXDのバージョンを切り替えることが可能です。snapcraftのLXDパッケージを利用しているため、snapcraft上のバージョニングを利用することができます。

類似の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時間ほどまで短縮しました。どっちにしろ遅いんですが……。

まとめ

setup-lxd をリリースしたという告知でした。ぜひご利用ください!


コメントを残す