概要
GitHubActions
を利用したテストワークフローの構築について社内布教用にまとめてみた
経緯
@ucan-lab さんのハンズオンに参加して個人的に導入はしているがチーム内で技術共有をしてなかったので布教用としてまとめることにしました
なお、今回のworkflow
については以下のハンズオン資料を流用させていただいています。
解説
GitHub リポジトリの [Actions] タブに表示されるワークフローの名前。
name: Laravel Testing
-
on:
ワークフローを発火させるトリガーを指定します -
pull_request:
PRが作成されたタイミングをトリガーします -
branches
:特定のブランチに対してのPRに対してだけトリガーします(デフォルトは全てのブランチが対象です)
on:
pull_request:
branches:
- main
-
runs-on: ubuntu-latest
: 実行する仮想マシンを指定します(今回はubuntu
の最新版) -
steps
:ジョブのステップをグループ化する -
uses: actions/checkout@v2
: リポジトリをチェックアウトし、ワークフローがアクセス可能にする
jobs:
laravel-testing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name
:GitHubに表示するステップの名前
run
:コマンドを実行するようにジョブに指示を出します
steps:
- name: Docker Version
run: docker version
run: |
:複数コマンド順に実行します
docker-compose exec -T
:擬似TTY(疑似端末)への割り当てを無効にする
ttyとは、標準入出力となっている端末デバイス(制御端末、controlling terminal)の名前を表示するUnix系のコマンドである。元来ttyとはteletypewriter(テレタイプライター)のことを指す。
steps:
- name: OS Version
# -T 擬似TTY(標準出力の接続先デバイス)への割り当てを無効
run: |
docker-compose exec -T app cat /etc/os-release
docker-compose exec -T app cat /etc/debian_version
全体
.github/workflows/laravel-testing.yml
name: Laravel Testing
on:
pull_request:
branches:
- main
jobs:
laravel-testing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Docker Version
run: docker version
- name: Build Docker Images
run: docker-compose build
- name: Create & Start Docker Containers
run: docker-compose up -d
- name: OS Version
# -T 擬似TTY(標準出力の接続先デバイス)への割り当てを無効
run: |
docker-compose exec -T app cat /etc/os-release
docker-compose exec -T app cat /etc/debian_version
- name: PHP Version
run: docker-compose exec -T app php --version
- name: Composer Version
run: docker-compose exec -T app composer --version
- name: Install Dependencies
run: docker-compose exec -T app composer install
- name: Laravel Version
run: docker-compose exec -T app php artisan --version
- name: Laravel Setting
run: |
docker-compose exec -T app cp .env.example .env
docker-compose exec -T app php artisan key:generate
- name: Laravel Migrate Testing
run: docker-compose exec -T app php artisan migrate
- name: Laravel Rollback Testing
run: docker-compose exec -T app php artisan migrate:refresh
- name: Laravel Seeding Testing
run: docker-compose exec -T app php artisan db:seed
- name: Laravel PHPUnit Testing
run: docker-compose exec -T app php artisan test