GitLab CIを動かす
Last-modified: Sat, 03 Aug 2019 20:11:44 JST (1990d)
Top > GitLab CIを動かす
GitLabはプライベートリポジトリも無料で使え、さらにCIも無料で回すことが出来ます。
今回プライベートリポジトリでCIを回し、ついでにカバレッジも出してバッジを付けてみます。
パブリックなプロジェクトであれば、codecovなどが使えますが、プライベートリポジトリでは有料となってしまいます。そこでGitLab CIでテスト+カバレッジを出して、バッチを付けます。
GitLabにはバッジを付ける機能があるので、それを利用します。
- まずは新規プロジェクトを作成しましょう。右上にある新規プロジェクトボタンをクリックします。
- プロジェクトを作成します。今回はプライベートリポジトリにしました。
- テストの書かれたコードをPushします。ここでは私が作ったこのリポジトリを使いました。
- では早速CIの設定をしましょう。作成したリポジトリの設定からCI/CDをクリックします。
- CIの設定画面が出ます。上にある一般のパイプラインの横にある展開ボタンをクリックしますと、設定メニューが展開されます。
- 展開された設定メニューから、テストカバレッジ解析を見つけます。
この中にphpunitを動かす場合の設定が記載されています。右側の正規表現(ピンク色の網掛け)をコピッて上のテキストボックスに張り付け、変更を保存をクリックります。
これで、CIの結果からカバレッジ率を抽出して、GitLab側がカバレッジ率を取得することが出来るようになります。 - 次に、GitLab CIを動かすための設定ファイルを作成します。
ファイル名は「.gitlab-ci.yml」としないといけません。頭が「ドット」から始まるので注意です。# Setting for job sequence. # List up for jpb groups. stages: - test # Jobs testjob: stage: test # Setting for Docker image image: akira345/php7app-dev:latest # Setting Environments variables: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=ja_JP.UTF-8" DB_PASSWORD: ${POSTGRES_PASSWORD} DB_DATABASE: ${POSTGRES_DB} MAIL_PORT: 1025 MAIL_HOST: mailcacher TZ: "Asia/Tokyo" MEMCACHED_HOST: "memcached" #Services is required for use networking services from dockerhub. services: - name: akira345/postgres11-ja_jp-locale:latest alias: pgsql-srv - name: memcached:latest alias: memcached-srv - name: pocari/mailcatcher alias: mailcacher before_script: - cp gitlab.php.ini /usr/local/etc/php/php.ini - cp .env.gitlab-ci .env - pecl install xdebug - docker-php-ext-enable xdebug - composer install --no-interaction --prefer-dist --no-suggest --no-progress --ansi script: - php artisan key:generate - php artisan migrate --seed - vendor/bin/phpunit --configuration ./phpunit.xml --coverage-text --colors=never only: refs: - master
.gitlab-ci.ymlの説明はここが詳しいですが、少し説明します。- stages:ここに列挙されたステージ名を持つJobが列挙順に実行されます。ここではtestというステージ名を指定しています。
- testjob:Jobを設定します。ここではtestjobという名前を指定しています。
- stage:このJobが所属するステージを指定します。ここではtestというステージに所属させています。
- image: このJob内で動かすためのDockerイメージを指定します。DockerHubにあるコンテナを指定します。
- variables:このCI環境で使う環境変数です。後述するGitLab側の環境変数設定と合わせることで、パスワードなどを渡すことが出来ます。
- services:このCIで使用するサービスコンテナを指定します。name:でDockerHubにあるコンテナを、alias:で別の名前を付けることが出来ます。
- before_script:CIで実行する前処理です。ここに記載するコマンドはimageで指定したDockerコンテナ内で実行されます。
ここでは、CI用に設定したphp.iniとlaravel設定ファイルの設定、カバレッジ率を出すためにxdebugのインストールと有効化、composerで必要なものをインストールしています。 - script:CIで実行する本処理です。before_scriptと同様Dockerコンテナ内で実行されます。ここではLaravelのキーを生成、テーブルをマイグレーションして、ユニットテストの実行、カバレッジ率の算出を行っています。
ここに記載するコマンドはGitLabのテストカバレッジ解析に書いてあった設定です。 - only:ここではmasterブランチを監視して動作するようにしています。
- 環境変数の設定を行います。これは.gitlab-ci.ymlにパスワードなど機密情報を書きたくないのと、環境依存設定を同じくymlに書きたくない為です。
リポジトリの設定からCI/CDをクリックし、variablesの横にある展開ボタンをクリックします。 ここにKeyとして環境変数名を、Valueにセットする値を設定します。横にあるマスクのスイッチをONにすると、実行ログで値がマスクされます。
ここで設定した環境変数は、.gitlab-ci.yml内で${POSTGRES_DB}
のように参照できます。 - カバレッジ率のバッジをReadme.mdにつけます。いリポジトリの設定からCI/CDをクリックし、一般のパイプラインにPipeline status という設定があります。ここにこのリポジトリで使用できるバッジのリンクが記載されています。 よく見るこんな感じの奴ですね。
- ではこれらの変更をしたら、commitしてmasterブランチにpushしてみましょう。GitLabが自動検知して自動でCIが実行されます。
- CIの結果は、リポジトリのCI/CD画面で見ることが出来ます。
Counter: 853,
today: 1,
yesterday: 1
このページの参照回数は、853です。