GitHub Actions

GitHub ActionsでLaravelのテストを実行する際にRedisと接続する方法【PHPUnit】

GitHub ActionsでLaravelのテストを実行する際にRedisと接続する方法【PHPUnit】
  • GitHub ActionsでRedisを使ったテストを実行したいんだけど、上手く接続できない。。
  • php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution [tcp://redis:6379]とかRedisException: Connection refusedとかのエラーが出て全くRedisに接続できない。。
  • 調べても解決策が出てこない。。(泣)

 

この記事はこういった方向け。

GitHub ActionsでPHPUnitを実行する際にRedisと接続する方法をご紹介します。

 

※この記事で紹介するコードはLaravelでの操作を想定しています

GitHub ActionsでLaravelのテストを実行する際にRedisと接続する方法【PHPUnit】

結論からお伝えすると、以下のようなコード(ymlファイル)を定義することで、GitHub Actionsでテスト(PHPUnit)を実行する際にRedisと接続することができます。

name: setup_test

on: push

defaults:
  run:
    working-directory: ./app 

jobs:
  setup-test:
    runs-on: ubuntu-latest
    services: 
      redis:
        image: redis
        ports:
          - 6379:6379

    steps:
    - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
      with:
        php-version: '8.0'
    - uses: actions/checkout@v2
    - name: Install Dependencies
      run: composer install #キャッシュ処理は省略しています
    - name: Execute tests via PHPUnit
      run: vendor/bin/phpunit
      env:
        APP_KEY: ${{ secrets.TEST_APP_KEY }}
        REDIS_HOST: localhost #127.0.0.1でもOK
        REDIS_PORT: 6379

 

ポイントは二つあります。

一つ目はservicesの部分です。

ここでは(runs-onで指定している)ubuntu(OS)上で実行するコンテナを指定します。

今回はRedisと接続する必要があるため、Redisイメージ を指定しています。

また、portsでDockerホストのポート6379をRedisコンテナのポート6379にマップしています。

 

二つ目は一番最後のenvの部分です。

ここではアプリ側からRedisに接続するための接続情報を定義しています。

それぞれの説明は以下の通りです。

  • APP_KEY:Laravelを動作させるために必要なキー情報です(環境変数に登録しています)
  • REDIS_HOST:接続するRedisを指定します。localhostまたは127.0.0.1で接続可能です(REDIS_HOST: redisでは接続できませんでした)
  • REDIS_HOST:接続するRedisのポートを指定しています

 

GitHub ActionsでLaravelのテストを実行する際にRedisと接続する方法 おわりに

この記事では、GitHub ActionsでLaravelのテスト(PHPUnit)を実行する際にRedisと接続する方法を紹介しました。

この記事があなたが抱えている疑問を解決を解決する上で少しでも参考になっていれば幸いです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA