0
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?

More than 1 year has passed since last update.

github actionsのrunner-osのアップデートの際サービスコンテナを使ってmysqlのバージョン対応した話

Last updated at Posted at 2023-01-18

github actionsのrunner-osを今までubuntu-18.0.4を使ってたが、今更ながら
アップデートしました。
https://github.com/actions/runner-images/issues/6002

変更後

workflow.yml
jobs:
   runs-on: ubuntu-latest

困ったこと

これで再プッシュして一件落着かと思ったが、プッシュ後データベースのマイグレーションjobでテストが落ち、調べているとubuntu-latestのラベルを指定するとubuntu-22.0.4のイメージを使うことになるらしい。
https://github.com/actions/runner-images#available-images
んでこちらのイメージだとプリインストールされているmysqlは8系だよとのこと。
https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md

CI回してるサービスはmysql5.7系なのでここで詰まった。

解決法

github actionではサービスコンテナというものがあった。
これは私の中での解釈はローカルでdocker-composeにサービス名とイメージ指定すればコンテナ立ち上がって、別コンテナからアクセスできるのと同じでgithub action上でもジョブ内からコンテナにアクセスできるという理解。

workflow.yml
test:
    runs-on: ubuntu-latest
    services:
      mysql:
        # 使いたいイメージを指定
        image: mysql:5.7
        ports:
          - 3306:3306
        env:
          MYSQL_ROOT_PASSWORD: root
        # ヘルスチェック
        options: >-
          --health-cmd "mysqladmin ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    - name: Database migration
        env:
          RAILS_ENV: test
        # mysqlのバージョン確認とマイグレージョン実行
        # mysql -vを実行するとプリインストールされている8系が出るので立ち上げたサービスコンテナに接続
        run: |
          echo 'select version();' | mysql -h 127.0.0.1 --port 3306 -u root -proot
          cp -v config/database.test.yml config/database.yml
          bin/rails db:prepare    

公式にはサービスコンテナへのアクセスの方法としてlocalhost:<port> または 127.0.0.1:<port>でいけるよと書いてましたが、localhost指定だとConnection Errorになったので
127.0.0.1に変更して解決しました。原因わかる方教えてください。

config/database.test.yml
test:
  adapter: mysql2
  encoding: utf8mb4
  charset: utf8mb4
  collation: utf8mb4_general_ci
  host: 127.0.0.1   #localhostだと接続できず
  port: 3306
  username: root
  password: root
  database: test
0
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
0
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?