[Django] GitHub CI에 Django Test 및 Redis 적용하기

GitHub CI, Django, Test, Redis

Featured image

[Django] GitHub CI에 Django Test 및 Redis 적용하기

1. GitHub CI란?

CI/CD 모식도

github_actions


GitHub Blog를 만들기 위해 사용하는 jekyll.yml도 존재한다.

다음은 workflow를 추천받지 않고 스스로 설정하고자 했을 때 만들어지는 default main.yml의 모습이다. main.yml




2. Django Workflows 뜯어보기

name: Django CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  test-host:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [ 3.8.3 ]

    services:
      mysql:
        image: mysql:5.7
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_DATABASE: 'waffle_backend_assignment_2'
          MYSQL_USER: 'waffle-backend'
          MYSQL_PASSWORD: 'seminar'
          MYSQL_ROOT_PASSWORD: 1234
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

      redis:
        image: redis
        ports:
          - 6379:6379
        options: >-
          --health-cmd "redis-cli ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
    - uses: actions/checkout@v2

    - name: Verify MySQL connection
      run: |
        mysql --version
        mysql --host 127.0.0.1 --port 3306 -u root -p1234 -e "SHOW DATABASES"

    - name: Set up Python 3.8.3
      uses: actions/setup-python@v2
      with:
        python-version: 3.8.3

    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run migrations
      run: |
        cd waffle_backend
        python manage.py migrate

    - name: Run Tests
      run: |
        cd waffle_backend
        mysql --host 127.0.0.1 --port 3306 -u root -p1234 -e "grant all privileges on test_waffle_backend_assignment_2.* to 'waffle-backend'@'%';"
        python manage.py test
      env:
        SYSTEM_ENV: GITHUB_WORKFLOW