GitLab CIを動かす

Last-modified: Sat, 03 Aug 2019 20:11:44 JST (20d)
Top > GitLab CIを動かす

GitLabはプライベートリポジトリも無料で使え、さらにCIも無料で回すことが出来ます。

今回プライベートリポジトリでCIを回し、ついでにカバレッジも出してバッジを付けてみます。
パブリックなプロジェクトであれば、codecovなどが使えますが、プライベートリポジトリでは有料となってしまいます。そこでGitLab CIでテスト+カバレッジを出して、バッチを付けます。
GitLabにはバッジを付ける機能があるので、それを利用します。

  1. まずは新規プロジェクトを作成しましょう。右上にある新規プロジェクトボタンをクリックします。
    gitlab00.jpg
  2. プロジェクトを作成します。今回はプライベートリポジトリにしました。
    gitlab01.jpg
  3. テストの書かれたコードをPushします。ここでは私が作ったこのリポジトリを使いました。
  4. では早速CIの設定をしましょう。作成したリポジトリの設定からCI/CDをクリックします。
    gitlab03.jpg
  5. CIの設定画面が出ます。上にある一般のパイプラインの横にある展開ボタンをクリックしますと、設定メニューが展開されます。
    gitlab04.jpg
  6. 展開された設定メニューから、テストカバレッジ解析を見つけます。
    この中にphpunitを動かす場合の設定が記載されています。右側の正規表現(ピンク色の網掛け)をコピッて上のテキストボックスに張り付け、変更を保存をクリックります。
    これで、CIの結果からカバレッジ率を抽出して、GitLab側がカバレッジ率を取得することが出来るようになります。
    gitlab02.jpg
  7. 次に、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ブランチを監視して動作するようにしています。
  8. 環境変数の設定を行います。これは.gitlab-ci.ymlにパスワードなど機密情報を書きたくないのと、環境依存設定を同じくymlに書きたくない為です。
    リポジトリの設定からCI/CDをクリックし、variablesの横にある展開ボタンをクリックします。
    gitlab05.jpg
    ここにKeyとして環境変数名を、Valueにセットする値を設定します。横にあるマスクのスイッチをONにすると、実行ログで値がマスクされます。
    ここで設定した環境変数は、.gitlab-ci.yml内で
    ${POSTGRES_DB}
    のように参照できます。
  9. カバレッジ率のバッジをReadme.mdにつけます。いリポジトリの設定からCI/CDをクリックし、一般のパイプラインにPipeline status という設定があります。ここにこのリポジトリで使用できるバッジのリンクが記載されています。
    gitlab06.jpg
    よく見るこんな感じの奴ですね。
    gitlab07.jpg
  10. ではこれらの変更をしたら、commitしてmasterブランチにpushしてみましょう。GitLabが自動検知して自動でCIが実行されます。
  11. CIの結果は、リポジトリのCI/CD画面で見ることが出来ます。
    gitlab08.jpg

Counter: 18, today: 1, yesterday: 0

このページの参照回数は、18です。