- 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での操作を想定しています
Sponsored Link
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と接続する方法を紹介しました。
この記事があなたが抱えている疑問を解決を解決する上で少しでも参考になっていれば幸いです。
