2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[メモ]ArmでMySQLをGitHub Actionsで動かしたかった

Posted at

先日、GitHub Actionsはpublicリポジトリなら無料でArm Runnerを利用できるようになりました。

それによって、setup-rubyもArm対応されCIのArm化に挑戦したのですが、一点引っかかった点があったので、どう解決したかのメモです。

実際のコード

  • こちらは元々RSpecを実行していたgithub actionsのファイルをarmにしたものです
    • bundle installして、rspecコマンドを実行するだけ
  • 現時点での変更点はRunnerをArmに書き換えているだけです
    • privateリポジトリの場合はarm runnerを用意してください
name: Test

on:
  push:

jobs:
  rspec:
-   runs-on: ubuntu-latest
+   runs-on: ubuntu-24.04-arm
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - run: bundle exec rspec
    services:
      mysql:
        image: mysql:8.0.28
        env:
          MYSQL_USER: nobody
          MYSQL_PASSWORD: nobody
          MYSQL_ROOT_HOST: "%"
          MYSQL_ROOT_PASSWORD: root
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
        ports:
          - 3306:3306
        volumes:
          - mysql-data:/var/lib/mysql

ただし、こちらはエラーが出ます。

no matching manifest for linux/arm64/v8 in the manifest list entries
Error: Docker pull failed with exit code 1

エラーメッセージを読むとわかる通り、MySQLコンテナがarm対応をしていないんですね。
platformオプションを下記のように書く、ということも考えましたが、GitHub Actionsで直書きする場合platformオプションは対応していません。

    services:
      mysql:
        image: mysql:8.0.28
+       platform: linux/amd64
        env:
          MYSQL_USER: nobody
          MYSQL_PASSWORD: nobody
          MYSQL_ROOT_HOST: "%"
          MYSQL_ROOT_PASSWORD: root
          MYSQL_ALLOW_EMPTY_PASSWORD: yes

実はこのMySQLコンテナ、バージョンを一つ挙げるとArm環境でも問題なく動作します。

    services:
      mysql:
-       image: mysql:8.0.28
+       image: mysql:8.0.29
        env:
          MYSQL_USER: nobody
          MYSQL_PASSWORD: nobody
          MYSQL_ROOT_HOST: "%"
          MYSQL_ROOT_PASSWORD: root
          MYSQL_ALLOW_EMPTY_PASSWORD: yes

8.0.28で対応したということが書いてあるドキュメントもありましたが、自分が試したところだと8.0.29以降で動作しました。
8.0.28を続ける必要がある場合、docker-compose.ymlを作っての対応なども考えられますが、上げられるのであれば上げてしまうのがいいでしょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?