自宅に余っているAndroid端末をGitHub Actionsのself-hosted Runnerとして活用してみた。

機種変更などで余ったAndroid端末の使い道を考えていたら、「Androidってカーネル部分Linuxだし、GitHub ActionsのRunnerとして使えるんじゃね?」と思いついたのでやってみました。

最初は、Android版のDockerって無いのかなぁと思って探していたのですが、もっと手軽そうなアプリを発見したので今回はそれを使います。

UserLAnd

今回利用したのは、UserLAndというアプリです。

Android端末上にLinux環境を作成できるアプリです。

Android端末上でvimなどのエディタを使いたい人の間では有名らしいです。(調べるまで知らなかった…)

このアプリはroot権限を取得しなくても実行できるので採用しました。

GooglePlay Storeからダウンロードできます。

アプリをインストール後、いくつかのOSを選択できるので今回はubuntuを選択しました。

また、今回はrunnerとして利用するだけなのでCUI環境があれば十分、ということでSSHで接続するように選択しました。

ubuntunのセットアップが完了したらあとは普通にubuntuとして使えます。(多少制限はあるらしい?)

最小構成のubuntuになっているみたいなので、

sudo apt update && sudo apt -y upgrade

した後で、この後に必要な最低限のツールをインストールしておきます。

sudo apt install git curl

GitHub Actions self-hosted Runner

事前に、unameコマンドなどでCPUのアーキテクチャを調べておきます。

uname -m

今回利用した端末のアーキテクチャはarmv71だったので32bitのArmアーキテクチャです。

runnerのインストール

公式のリリースページから自身の端末のアーキテクチャに合うものを利用してインストールする。

または、runnerを登録したいリポジトリの Settings > ActionsのページからOSとアーキテクチャを選んで出てくるコマンドを実行してインストールします。

最終的にRunnerを登録する際に、Settings > Actionsのページに表示されるトークン情報が必要になるので、Settings > Actionsのページの方が楽ですかね。

32bitのArmアーキテクチャの場合はこんな感じです。

# Create a folder
mkdir actions-runner && cd actions-runner
# Download the latest runner package
curl -O -L https://github.com/actions/runner/releases/download/v2.277.1/actions-runner-linux-arm-2.277.1.tar.gz
# Extract the installer
tar xzf ./actions-runner-linux-arm-2.277.1.tar.gz

バージョンは適宜変えて下さい。

解凍できたら足りない依存コマンド等を

./bin/installdependencies.sh

でインストールします。

インストールしたら

# Create the runner and start the configuration experience
./config.sh --url https://github.com/UserName/RepoName --token YOUR_REPO_TOKEN

でrunnerを登録します。

Settings > Actionsのページに表示されるコマンドですね。

あとは、

# Last step, run it!
./run.sh

でRunnerが待機状態になります。

あとは、github actions のymlファイルの runs-on: に self-hosted を指定してあげれば登録したrunnerを利用してくれます。

最後に

家に余っているAndroid端末を有効活用できる方法が見つかって幸せ。