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
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
なぜHost
にpostgres
を使用したのか気になる方は、サービスがどのようにジョブにリンクしているのかをご覧ください。
また、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のサンプルプロジェクトを立ち上げました。
ハックしたいのであれば、フォークしてコミットし、変更をプッシュするだけです。 数瞬のうちに公開ランナーによって変更が選択され、ジョブが開始されます。