GitHub Actions에서 Laravel을 테스트하기 위해 MySQL을 사용합니다.
12896 단어 MySQLGitHubActions라라벨
전제
이 기사 에서 사용한 Laravel 프로젝트와 GitHub Actions 워크플로우를 사용자 정의합니다.
절차
워크플로 작성
다음과 같이 워크플로를 만듭니다.
name: Laravel
on:
push:
branches:
- main
- feature/**
pull_request:
branches:
- develop
- main
jobs:
laravel-tests:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE: hoge_app
MYSQL_USER: root
MYSQL_PASSWORD:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
steps:
- uses: actions/checkout@v2
- name: cache vendor
id: cache
uses: actions/cache@v1
with:
path: ./vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: composer install
if: steps.cache.outputs.cache-hit != 'true'
run: composer install -n --prefer-dist
- name: copy .env
run: cp .env.example .env
- name: generate key
run: php artisan key:generate
- name: migrate
run: php artisan migrate
env:
DB_HOST: 127.0.0.1
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DB_HOST: 127.0.0.1
run: vendor/bin/phpunit
MySQL 설정
services
에서 mysql
를 정의합니다. 환경 변수는 .env
의 내용을 반영할 수 없으므로 그대로 지정합니다.GitHub의 Secrets를 이용하면 비밀번호는 그곳에서 지정할 수도 있지만 이번은 프로젝트의
.env.example
의 내용과 동일하게 하고 있습니다.GitHub의 Secrets를 활용하여 GitHub Actions에서 안전하게 기밀 정보를 처리하십시오 - Qiita
htps : // 이 m /로 ゔ ぉ ぺ ぺ ききかい / ms / 60b209c065f076d 또는 7 아 1
options
에서 MySQL이 시작되었는지 여부를 확인합니다. services:
mysql:
image: mysql:5.7
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE: hoge_app
MYSQL_USER: root
MYSQL_PASSWORD:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
마이그레이션 및 테스트
env
에서 DB_HOST
를 지정합니다. 개발 환경이라면 .env.example
에서 mysql
와 Docker 컨테이너의 이름을 지정하고 있지만 그렇다면 GitHub에서 연결할 수 없습니다. - name: migrate
run: php artisan migrate
env:
DB_HOST: 127.0.0.1
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DB_HOST: 127.0.0.1
run: vendor/bin/phpunit
로컬에서 동작 확인
이 도구를 이용하면 로컬 환경에서 동작을 확인할 수 있습니다.
nektos/act: Run your GitHub Actions locally 🚀
htps : // 기주 b. 코 m / 네 k와 s / 아 ct # 인 s 치치 온
1점 흠집이 있고 GitHub Actions가 제공하는 서비스 컨테이너가 nektos/act에서는 현재 미실장이 되기 때문에 로컬과 GitHub 사이에 차이가 있습니다.
서비스 컨테이너 정보 - GitHub Docs
htps : // / cs. 기주 b. 코 m / 자 / 아 c 치온 s / 구이 s / 아보 t-se r
Github actions - Services fails locally · Issue #247 · nektos/act
htps : // 기주 b. 코 m / 네 k와 s / 아 ct / 모두 s / 173
다만, 워크플로우로
DB_HOST: 127.0.0.1
라고 지정하는 것으로, 개발 환경의 MySQL에 접속할 수 있으므로, 개발 환경의 Docker 컨테이너를 기동한 채로, act
커멘드를 실행해 주면 로컬 환경에서도 워크플로우를 실행할 수 있습니다 .> cd <プロジェクトのディレクトリ>
> ./vendor/bin/sail up -d
> act -P ubuntu-latest=nektos/act-environments-ubuntu:18.04
실행 결과를 보면,
Run migrate
는 실행되고 있지만, 마이그레이션 자체는 실행되고 있지 않은 것을 확인할 수 있습니다. (개발 환경에서 마이그레이션이 완료된 경우)개발 환경의 Docker 컨테이너를 떨어뜨리면 워크플로가 오류가 되는지 확인할 수 있습니다.
> ./vendor/bin/sail down
> act -P ubuntu-latest=nektos/act-environments-ubuntu:18.04
GitHub에서 동작 확인
워크플로를 GitHub 리포지토리로 푸시하여 워크플로가 작동하는지 확인합니다.
> git branch feature/use-mysql-on-github-actions
> git checkout feature/use-mysql-on-github-actions
> git add .github/workflows/unittest.yml
> git commit -m 'Fix: GitHub ActionsのワークフローでMySQLを利用するようにしました。'
> git push git push --set-upstream origin feature/use-mysql-on-github-actions
GitHub에서 확인하면 오류없이 테스트를 실행할 수 있는지 확인할 수 있습니다.
했어.
참고
GitHub Actions를 사용하여 Laravel 테스트를 자동화해 보았습니다. - Qiita
htps : // 코 m / 카이 _ 코 / ms / 4f850f7308 에 b0d3 에 0b48
GitHub의 Secrets를 활용하여 GitHub Actions에서 안전하게 기밀 정보를 처리하십시오 - Qiita
htps : // 이 m /로 ゔ ぉ ぺ ぺ ききかい / ms / 60b209c065f076d 또는 7 아 1
nektos/act: Run your GitHub Actions locally 🚀
htps : // 기주 b. 코 m / 네 k와 s / 아 ct # 인 s 치치 온
Number of ways to setup database in Github actions | by Darren Liew | Medium htps : // 메이 m. 이 m / @ daden / mbe r-f-y ys--sets p-dabase-in-gi-bu-b-c-chion s-2cd48df9
GitHub Actions를 사용하여 Laravel 응용 프로그램을 CI/CD로 만들기 | SEEDS Creators 'Blog | Co., Ltd.
Mysql service never comes up healthy in action - Code to Cloud/GitHub Actions - GitHub Support Community
htps //w w. 그래도 ds-std. 이. jp/b㎉g/c 후 rs/2020-08-19-233031/
Reference
이 문제에 관하여(GitHub Actions에서 Laravel을 테스트하기 위해 MySQL을 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kai_kou/items/c9dc50a4967d746c145a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)