【改善版】Github Actions で laravel プロジェクトのユニットテストを自動化する

2020年3月19日木曜日

Github Github Actions laravel

t f B! P L
以前投稿したものを改善しました。
全般的にキャッシュを使用するようにしたため、実行速度が改善されています。


name: Testing Laravel with MySQL
​
on:
  pull_request:
    branches:
      - develop
​
jobs:
  laravel:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        operating-system: [ubuntu-latest]
        php-versions: ['7.4']
    env:
      DB_HOST: 127.0.0.1
      DB_DATABASE: db
      DB_USERNAME: root
      DB_PASSWORD: root
      extensions: mbstring, dom, fileinfo, mysql
      key: cache-v1 # can be any string, change to clear the extension cache.
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: false
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: db
        ports:
          - 3306/tcp
    steps:
      - name: Checkout
        uses: actions/checkout@v2
​
      - name: Setup cache environment
        id: cache-env
        uses: shivammathur/cache-extensions@v1
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: ${{ env.extensions }}
          key: ${{ env.key }}
​
      - name: Cache extensions
        uses: actions/cache@v1
        with:
          path: ${{ steps.cache-env.outputs.dir }}
          key: ${{ steps.cache-env.outputs.key }}
          restore-keys: ${{ steps.cache-env.outputs.key }}
​
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: ${{ env.extensions }}
          coverage: pcov
​
      - name: Setup problem matchers for PHP
        run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
      - name: Setup problem matchers for PHPUnit
        run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
​
      - name: Start mysql service
        run: sudo /etc/init.d/mysql start
​
      - name: Get composer cache directory
        id: composer-cache
        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
​
      - name: Cache composer dependencies
        uses: actions/cache@v1
        with:
          path: ${{ steps.composer-cache.outputs.dir }}
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-
​
      - name: Install Composer dependencies
        run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
​
      - name: Prepare the application
        run: |
          php -r "file_exists('.env') || copy('.env.staging', '.env');"
          php artisan key:generate
​
      - name: Clear Config
        run: php artisan config:clear
​
      - name: Migration and seed
        run: php artisan -v migrate:refresh --seed
        env:
          DB_PORT: ${{ job.services.mysql.ports['3306'] }}
​
      - name: Test with phpunit
        run: php -d pcov.enabled=1 vendor/bin/phpunit --coverage-text
        env:
          DB_PORT: ${{ job.services.mysql.ports['3306'] }}


このブログを検索

QooQ