GitHub ActionsのCIでmailhogを使用する

Laravelのユニットテストでメールの送受信をテストする際にMailhogを利用している方も多いと思います。
私も一部のシステムでMailhogを利用していました。そのユニットテストをGitHub Actionsで実行した際にMailhogのユニットテストを通すことができずに解決まで時間がかかったため備忘録として残しておきます。
下記のエラーが発生して解決に時間がかかりました。

Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: Temporary failure in name resolution

基本的にci.ymlファイルに記載していくことになります。2つにわけて解説します。

①servicesにMailhogを追加する

Mailhogを利用するためにimageとportsを指定します。

      mailhog:
        image: "mailhog/mailhog:latest"
        ports:
          - 1025:1025
          - 8025:8025


②envを指定する

環境変数を指定します。MAIL_HOSTに注意してください。
ローカル環境はMailhogで動作するのですが、GitHub Actionsの環境では動作しないためlocalhostを指定します。
GitHub Actionsはコンテナ内のホスト名が異なるため、localhostを明示する必要があります。

    env: # 環境変数
      MAIL_HOST: localhost # MailhogのSMTPサーバー
      MAIL_PORT: 1025 # MailhogのSMTPポート
      MAIL_MAILER: smtp
      MAIL_USERNAME: null
      MAIL_PASSWORD: null
      MAIL_ENCRYPTION: null
      MAIL_FROM_ADDRESS: hello@example.com
      MAIL_FROM_NAME: test

上記の記載方法でGitHub Actionsでmailhogを利用可能になります。

見て触れて学ぶネット詐欺体験サービス「にせサギ」

にせサギはネットサギを安全に体験できるサービスです。
子供・高齢者・障害者、誰もが安全にインターネットを使える社会を目指しています。
解説の小冊子や教え方や授業案を記載した資料も無料で配布しています!

https://nisesagi.com

関連記事

ページ上部へ戻る