PostgreSQLを使用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
多くのアプリケーションがデータベースとしてPostgreSQLに依存しているため、それを使用してテストを実行する必要があります。
Docker executorでPostgreSQLを使用する
GitLab.com UIで設定された変数をサービスコンテナに渡すには、変数を定義する必要があります。変数はグループまたはプロジェクトとして定義し、次の回避策に示すようにジョブで変数を呼び出す必要があります。
Postgres 15.4以降のバージョンでは、引用符(")、バックスラッシュ()、またはドル記号($)が含まれている場合、拡張スクリプトにスキーマまたはオーナー名は代入されません。CI/CD変数が設定されていない場合、値は環境変数名を文字列として代わりに使用します。たとえば、POSTGRES_USER: $USERとすると、POSTGRES_USER変数が「$USER」に設定され、Postgresに次のエラーが表示されます。
Fatal: invalid character in extension回避策は、GitLab CI/CD変数で変数を設定するか、文字列形式で変数を設定することです。
GitLabでPostgres変数を設定します。GitLab.com UIで設定された変数は、サービスコンテナに渡されません。
.gitlab-ci.ymlファイルで、Postgresイメージを指定します。default: services: - postgres.gitlab-ci.ymlファイルで、定義した変数を追加します。variables: POSTGRES_DB: $POSTGRES_DB POSTGRES_USER: $POSTGRES_USER POSTGRES_PASSWORD: $POSTGRES_PASSWORD POSTGRES_HOST_AUTH_METHOD: trustpostgresをHostに使用する方法の詳細については、サービスがジョブにどのようにリンクされているかを参照してください。データベースを使用するようにアプリケーションを設定します(例)。
Host: postgres User: $POSTGRES_USER Password: $POSTGRES_PASSWORD Database: $POSTGRES_DB
または、.gitlab-ci.ymlファイルに文字列として変数を設定することもできます。
variables:
POSTGRES_DB: DB_name
POSTGRES_USER: username
POSTGRES_PASSWORD: password
POSTGRES_HOST_AUTH_METHOD: trustDocker Hubで利用可能な他のDockerイメージを使用できます。たとえば、PostgreSQL 16.10を使用するには、サービスをpostgres:16.10にします。
postgresイメージは、いくつかの環境変数を受け入れることができます。詳細については、Docker Hubのドキュメントを参照してください。
Shell executorでPostgreSQLを使用する
Shell executorでGitLab CI/CD Runnerを使用している手動で設定されたサーバーでPostgreSQLを使用することもできます。
まず、PostgreSQLサーバーをインストールします。
sudo apt-get install -y postgresql postgresql-client libpq-dev次のステップはユーザーを作成することなので、PostgreSQLにサインインします。
sudo -u postgres psql -d template1次に、アプリケーションで使用されるユーザー(この場合はrunner)を作成します。次のコマンドの$passwordを強力なパスワードに変更します。
PostgreSQLプロンプトの一部であるため、次のコマンドにtemplate1=#を入力しないようにしてください。
template1=# CREATE USER runner WITH PASSWORD '$password' CREATEDB;作成されたユーザーには、データベースを作成する権限(CREATEDB)があります。次の手順では、そのユーザーに対してデータベースを明示的に作成する方法について説明します。権限により、テストフレームワークは必要に応じてデータベースを作成および削除できます。
データベースを作成し、ユーザーrunnerにすべての権限を付与します。
template1=# CREATE DATABASE nice_marmot OWNER runner;すべてうまくいった場合は、データベースセッションを終了できます。
template1=# \q次に、すべてが整っていることを確認するために、ユーザーrunnerを使用して、新しく作成されたデータベースに接続してみます。
psql -U runner -h localhost -d nice_marmot -Wこのコマンドは、md5認証を使用するためにlocalhostに接続するようにpsqlに明示的に指示します。このステップを省略すると、アクセスが拒否されます。
最後に、データベースを使用するようにアプリケーションを設定します(例)。
Host: localhost
User: runner
Password: $password
Database: nice_marmotプロジェクトの例
パブリックに利用可能なインスタンスRunnersを使用して、GitLab.comで実行される便利なPostgreSQLプロジェクトの例を設定しました。
ハックしませんか?フォークし、コミットし、変更をプッシュします。しばらくすると、パブリックRunnerによって変更が選択され、ジョブが開始されます。