Project Management/Github

django : 제로부터 시작하는 인스타그램 devops 4편 | github action을 사용해서 CI/CD구축하기 - 학습 정리

bluebamus 2023. 6. 8.

영상 정보 : https://www.youtube.com/watch?v=7bf4rK2rMPM 

소스 정보 : https://github.com/tkdlek11112/django_zero_to_instagram_devops_youtube/blob/main/content/views.py

 

GitHub - tkdlek11112/django_zero_to_instagram_devops_youtube: 데브옵스 유튜브버전

데브옵스 유튜브버전. Contribute to tkdlek11112/django_zero_to_instagram_devops_youtube development by creating an account on GitHub.

github.com

1. 요약 

   1. 해당 영상은 기본적인 학습을 다루고 있으나 DRF를 기반으로 하고 있다는 점에서 차후 학습할 가치가 있다.

   2. github action과 관련하여 CI와 CD를 분리하고 있다는 것에서 해당 영상 학습을 하게 되었다.

 

2. 학습 정리 

   1. CI 코드 :

name: Django CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.7, 3.8, 3.9]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run Tests
      run: |
        python manage.py test --settings=Jinstagram.settings_local

         1. max-parallel: 4라는 항목이 있으며 이는 matrix job을 동시에 실행할 수 있는 최대 job수 이다.

         2. 나머지 코드들은 다른 예시들과 유사하다.

   2. CD 코드 :

name: Django CD

on:
  workflow_run:
    workflows: [ "Django CI" ]
    types:
      - completed

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - name: connect ec2
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          port: 22
          script: |
            cd /home/ubuntu/django_zero_to_instagram_devops_youtube
            git pull
            sudo systemctl restart uwsgi

         1. on, 트리거 항목이 달라졌다. 해당 항목의 의미는 Django CI라는 workflows가 성공적으로 종료되면이다.

         2. ssh-action 라이브러리를 사용하여 배포를 시도한다.

댓글