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 3 years have passed since last update.

GithubActionsでMySQL8.0のRSpecを動かす

Posted at

問題点

GithubActionsでRSpec(MySQL8.0)を動かそうとしたら、mysql-clientが5.7でうまく動かなかった。
RSpecの実行にて以下のエラーが発生

Mysql2::Error::ConnectionError:
Plugin caching_sha2_password could not be loaded: /usr//usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

結論

.github/workflows/rspec.yml
name: rspec
on:
  push:
    paths-ignore:
      - README.md
      - Dockerfile
      - docker-compose.yml
jobs:
  rspec:
    name: RSpec
    runs-on: ubuntu-latest
    env:
      RAILS_ENV: test
    services:
      mysql:
        image: mysql:8.0.15
        env:
          MYSQL_ROOT_PASSWORD: pass
    container:
      image: ruby:2.6.5-alpine
      env:
        MYSQL_HOST: mysql
        MYSQL_ROOT_PASSWORD: pass
    steps:
    - uses: actions/checkout@v1
    - name: Setup container
      run: |
        apk --update add build-base libxml2-dev libxslt-dev mysql-dev mysql-client openssl tzdata && \
    - name: Gem install
      run: |
        gem update --system && gem install bundler --no-document && bundle install -j4
    - name: Setup test DB
      run: |
        bundle exec rails db:setup
    - name: Run RSpec
      run: |
        bundle exec rspec

問題点

  • MySQL8.0から認証方式がcaching_sha2_passwordに変更された
  • debian系のDockerコンテナに入っているmysql-clientの5.7では新しい認証方式に対応していない
  • 対応するには、mysql-clientを8.0にするか、認証方式を旧来のものに必要がある

対応

  • debian系はリポジトリ登録したり、8.0系のクライアントを入れるのに手間がかかるので、alpineにして必要なものをいろいろ突っ込んだ
  • ライブラリ周りは必要に応じて加えたり、省いたりしてください
  • キャッシュは考慮していません
  • GithubActionsでdocker-composeのcommand的なことをやることがうまくできなかったので、認証方式を変更することは諦めました...
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?