gitlab-ciの勉強

# How to php:alpine
# https://github.com/daper/docker-alpine-php/blob/master/5.6/Dockerfile

# サブモジュールを更新する場合にはこれを有効にする
variables:
	GIT_SUBMODULE_STRATEGY: recursive

before_script:
	- curl -fsSL https://getcomposer.org/download/1.4.2/composer.phar > composer.phar

# ユニットテスト、コーディング規約チェック、静的解析の順に実行します。
# テストが失敗した時点でCIは終了してしまうので、優先度の高いチェックを先に持っていきます。

stages:
	- phpunit
	- phpcs
	- phan

phpunit:
	stage: phpunit
	image: php:alpine 
	# 公式のpostgresコンテナを関連付け、一緒に起動します。
	services:
	- postgres:10
	script:
	- apk --update upgrade

	# PHPの設定はプロダクトによって変わりますので、適宜変更してください
	# 以下はあくまでサンプル構成です
	- apk add autoconf automake make postgresql-client postgresql-dev # ・・・以降割愛
	- docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql
	- docker-php-ext-install -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) pgsql pdo pdo_pgsql # ・・・以降割愛

	# 立ち上げたPostgreSQLに、ユニットテストに必要なDBを作成し、テストデータを流し込みます。
	# DBと連携するWebシステムのため、プログラムからアクセスするDBとして利用します。
	- cat /path/to/project/test/create_db.sql | psql -h postgres -U postgres

	# テストデータの作成手続きは、シェル化してしまうのがおすすめです。
	# 作成したDBにコマンドラインシェルで接続して、テストデータのINSERTを流していってください。
	- /path/to/project/test/create_table.sh

	# 外部モジュールのインストール
	# PHPUnitはコンポーザでインストールしています
	- php composer.phar install --prefer-dist --no-progress --ansi --dev

	# PHPUnitの実行
	- vendor/bin/phpunit
	cache:
		key: vendor
		paths:
		- vendor/

phpcs:
	stage: phpcs
	image: php:alpine 
	script:
		- apk --update upgrade

		# PHPの設定はプロダクトによって変わりますので、適宜変更してください
		# 以下はあくまでサンプル構成です
		- apk add autoconf automake make postgresql-client postgresql-dev # ・・・以降割愛
		- docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql
		- docker-php-ext-install -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) pgsql pdo pdo_pgsql # ・・・以降割愛

		# 外部モジュールのインストール
		# PHP CodeSnifferはコンポーザでインストールしています
		- php composer.phar install --prefer-dist --no-progress --ansi --dev

		# PHP CodeSnifferの実行
		- vendor/bin/phpcs ./path/to/test/target/
	cache:
		key: vendor
		paths:
			- vendor/

phan:
	stage: phan
	image: php:alpine 

	script:
		- apk --update upgrade

		# PHPのインストール設定はプロダクトによって変わりますので、適宜変更してください
		# 以下はあくまでサンプル構成です
		- apk add autoconf automake make postgresql-client postgresql-dev # ・・・以降割愛
		- docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql
		- docker-php-ext-install -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) pgsql pdo pdo_pgsql # ・・・以降割愛

		# phanのインストール
		- pecl install ast-0.1.6
		- docker-php-ext-enable ast
		- curl -L https://github.com/phan/phan/releases/download/0.8.8/phan.phar -o /usr/bin/phan
		- chmod 755 /usr/bin/phan

		# 外部モジュールのインストール
		- php composer.phar install --prefer-dist --no-progress --ansi --dev
		- phan --version

		# 静的解析の実行
		- phan -z -x -k .phan/config.php

	cache:
		paths:
		- vendor/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104