Env/#13 #70
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Django CI # workflow 이름 | |
on: # Event | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: # Job | |
ci: # Job 이름 | |
runs-on: ubuntu-latest # Runner | |
services: # 컨테이너, docker-compose 설정과 거의 유사 | |
db: | |
image: mysql:latest | |
env: | |
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} # github에 등록한 환경변수 | |
MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }} | |
ports: | |
- 3306:3306 | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
steps: # Step | |
# 레포지토리의 소스 코드를 체크아웃하여 작업 디렉토리로 가져오는 action | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: true # 서브모듈 체크아웃 추가 | |
# mysql 컨테이너 연결 확인 | |
- name: Verify MySQL connection | |
run: | | |
mysql --version | |
mysql --host 127.0.0.1 --port 3306 -u root -p${{ secrets.MYSQL_ROOT_PASSWORD }} | |
# 파이썬 3.11.0 버전 설치 | |
- name: Set up Python 3.11.0 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11.0 | |
# .env 생성 | |
- name: Setting .env | |
run: | | |
echo "${{ secrets.ENV }}" >> .env | |
cat .env | |
# 의존성 설치 | |
- name: Install Dependencies | |
run: | | |
cd backend | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
# mysql 컨테이너에 migration, 테이블 생성 | |
- name: Run migrations | |
run: | | |
cd backend | |
python manage.py makemigrations | |
python manage.py migrate | |
env: | |
SECRET_KEY: ${{ secrets.SECRET_KEY }} | |
DB_NAME: ${{ secrets.DB_NAME }} | |
DB_USER: ${{ secrets.DB_USER }} | |
DB_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} | |
DB_HOST: ${{ secrets.DB_HOST }} | |
DB_PORT: ${{ secrets.DB_PORT }} | |
# 테스트 진행 | |
- name: Run Tests | |
env: | |
SECRET_KEY: ${{ secrets.SECRET_KEY }} | |
DB_NAME: ${{ secrets.DB_NAME }} | |
DB_USER: ${{ secrets.DB_USER }} | |
DB_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} | |
DB_HOST: ${{ secrets.DB_HOST }} | |
DB_PORT: ${{ secrets.DB_PORT }} | |
run: | | |
cd backend | |
mysql --host 127.0.0.1 --port 3306 -u root -p ${{ secrets.DB_PASSWORD }} | |
python manage.py test |