GitHub Actions の ubuntu-latest に内包されている PostgreSQL を使う

結論

以下のようなアクションを書くと、

  • ホストは localhost
  • ポート番号は 5432
  • ユーザー名は postgres_user
  • パスワードは postgres_password

な PostgreSQL が起動できます。

services での構築は不要です。

    - name: PostgreSQL を起動する
      run: |
        # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#postgresql
        sudo systemctl start postgresql.service
    - name: PostgreSQL の起動待ち(ヘルスチェック)をする
      run: |
        until : > /dev/tcp/localhost/5432; do
          echo -n .
          sleep 1
        done

        echo 'PostgreSQL の起動が確認できました'
    - name: PostgreSQL のユーザー(ロール)のセットアップを行う
      # バージョン番号が埋め込みになっているのが良くない
      run: |
        sudo bash -c "echo \"local all all md5\" >> /etc/postgresql/$major_version_number/main/pg_hba.conf"

        sudo su postgres -c "psql postgres -c 'create role $username;'"
        sudo su postgres -c "psql postgres -c \"alter role $username with login password '$password';\""
        sudo su postgres -c "psql postgres -c \"alter role $username with superuser\""
      env:
        username: postgres_user
        password: postgres_password
        major_version_number: 14

補足

  • 内包されているバージョンは原則として最新版 なので、バージョン指定ができないのは痛いところです
  • まっさらな PostgreSQL なので、ユーザー(ロール)作成のところでやや技巧的なことをやっています
  • サクッと使うならばこれでもいいような気がします
  • MySQL なども同様にできると思います
Powered by はてなブログ