PostgreSQLの使用

多くのアプリケーションがデータベースとして PostgreSQL に依存しているため、テストを実行するためには最終的に PostgreSQL が必要になります。 以下では、GitLab Runner の Docker と Shell executor を使ってこれを実行する方法を説明します。

Docker executorでPostgreSQLを使用します。

GitLabRunnerをDocker executorと一緒に使っている場合は、基本的にすべての設定が済んでいます。

まず、.gitlab-ci.yml

services:
  - postgres:12.2-alpine

variables:
  POSTGRES_DB: nice_marmot
  POSTGRES_USER: runner
  POSTGRES_PASSWORD: ""
  POSTGRES_HOST_AUTH_METHOD: trust
Note:POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_HOST_AUTH_METHOD変数は GitLab UI で設定することはできません。設定するには、UI で変数に代入し、その変数をPOSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_HOST_AUTH_METHOD変数に代入して.gitlab-ci.ymlを作成します。

そして、例えばデータベースを使用するようにアプリケーションを設定します:

Host: postgres
User: runner
Password: ''
Database: nice_marmot

なぜHostpostgres を使用したのか気になる方は、サービスがどのようにジョブにリンクしているのかをご覧ください。

また、Docker Hubで利用可能な他のDockerイメージも利用できます。例えば、PostgreSQL 9.3を利用する場合、サービスはpostgres:9.3になります。

postgres イメージはいくつかの環境変数を受け入れることができます。 詳細はDocker Hubのドキュメントを参照してください。

PostgreSQLをShell executorで使用します。

GitLab RunnerをShell executorで使用している手動で設定したサーバーでPostgreSQLを使用することもできます。

まずPostgreSQLサーバをインストールします:

sudo apt-get install -y postgresql postgresql-client libpq-dev

次のステップはユーザを作成することで、PostgreSQLにログインします:

sudo -u postgres psql -d template1

次に、アプリケーションで使用するユーザー(ここではrunner)を作成します。以下のコマンドの$password を実際に強力なパスワードに変更します。

template1=#これはPostgreSQLプロンプトの一部です__。__

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 認証を使用するために、psql に localhost に接続するよう明示的に指示しています。 この手順を省略すると、アクセスが拒否されます。

最後に、データベースを使用するようにアプリケーションを設定します:

Host: localhost
User: runner
Password: $password
Database: nice_marmot

プロジェクト例

GitLab.comで公開されている共有ランナーを使ってPostgreSQLのサンプルプロジェクトを立ち上げました。

ハックしたいのであれば、フォークしてコミットし、変更をプッシュするだけです。 数瞬のうちに公開ランナーによって変更が選択され、ジョブが開始されます。