###### tags: `ubuntu22.04` `arm64` `buildbot` # ARM64 環境向け Buildbot Docker イメージの作成 ## 実行環境 - Mac Mini(M1, 2020) - UTM 仮想環境 ARM64 版 Ubuntu 22.04(Ubuntu Server + ubuntu-desktop) - docker 公式のインストール方法で docker engine をインストール - https://docs.docker.com/engine/install/ubuntu/ ## buildbot コンテナ実行サンプルの実行 http://docs.buildbot.net/current/tutorial/docker.html 公式ドキュメントのサンプル「First Buildbot run with Docker」を試してみる。 ```bash # clone the example repository $ git clone --depth 1 https://github.com/buildbot/buildbot-docker-example-config # Build the Buildbot container (it will take a few minutes to download packages) $ cd buildbot-docker-example-config/simple docker compose up Starting simple_db_1 ... done Starting simple_buildbot_1 ... done Starting simple_worker_1 ... done Attaching to simple_db_1, simple_buildbot_1, simple_worker_1 simple-buildbot-1 | exec /usr/bin/dumb-init: exec format error simple-buildbot-1 exited with code 1 simple-worker-1 | exec /usr/bin/dumb-init: exec format error simple-worker-1 exited with code 1 ``` うまくいかない。 ## buildbot レポジトリの clone https://github.com/buildbot/buildbot を clone する。 ```bash $ git clone https://github.com/buildbot/buildbot.git ``` ## buildbot master イメージのビルド `buildbot/Dockerfile.master` ファイルを編集する。 - `FROM` の `debian11 AS buildbot-build` を `arm64v8/ubuntu:22.04 AS buildbot-build` に変更する(1ヶ所め)。 - `FROM` の `debian:11-slim` を `arm64v8/ubuntu:22.04` に変更する(2ヶ所め)。 - イメージビルド時に `timezone` の選択メニューでストップしないように `ENV` に `DEBIAN_FRONTEND=noninteractive` を追加する。 - さらに、`TZ=Asia/Tokyo` も追加する。 ```dockerfile #FROM debian:11 AS buildbot-build FROM arm64v8/ubuntu:22.04 AS buildbot-build ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Tokyo #FROM debian:11-slim FROM arm64v8/ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Tokyo ``` `buildbot-master-arm64` イメージをビルドする。 ```bash $ cd buildbot/master $ docker build -t buildbot-master-arm64 -f ../Dockerfile.master ../ ``` ## buildbot worker イメージのビルド `worker/Dockerfile` ファイルを編集する。 - `FROM` の `ubuntu:20.04` を `arm64v8/ubuntu:22.04` に変更する。 - `ENV TZ=Asia/Tokyo` を追加する。 ```dockerfile #FROM ubuntu:20.04 FROM arm64v8/ubuntu:22.04 ENV TZ=Asia/Tokyo ``` `buildbot-worker-arm64` イメージをビルドする。 ```bash $ cd buildbot $ docker build -t buildbot-worker-arm64 -f worker/Dockerfile worker ``` ## buildbot コンテナ実行サンプルを再度実行 - `buildbot-docker-example-config/simple/docker-compose.yml` の `image` 行を編集する。 - `postgres:9.4` を `postgres:15.1` に変更する。 ```yaml #image: "buildbot/buildbot-master:master" image: "buildbot-master-arm64:latest" #image: "buildbot/buildbot-worker:master" image: "buildbot-worker-arm64:latest" #image: "postgres:9.4" image: "postgres:15.1" ``` コンテナを起動する。 ```bash $ cd buildbot-docker-example-config/simple $ docker compose up ``` Buildbot にアクセスできる。 http://localhost:8010/#/waterfall