1. 프로젝트 루트 디렉토리에 .github/workflows/main.yml 파일 생성

### [main.yml]
name: Django CI/CD
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 체크아웃 레포지토리
uses: actions/checkout@v3
- name: 파이썬 설정
uses: actions/setup-python@v3
with:
python-version: '3.11'
- name: 의존성 설치
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: 서버 배포
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
set -e
cd /home/ubuntu/dalim_api
git pull origin main
echo "DJANGO_SECRET_KEY=\"${{ secrets.SECRET_KEY }}\"" > .env
echo "DJANGO_DEBUG='${{ secrets.DEBUG }}'" >> .env
'''
# settings.py 아래와 같이 작성되어 있음. 본인 프로젝트에 맞게 적용 필요함.
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
DEBUG = os.environ.get('DJANGO_DEBUG')
'''
source venv/bin/activate
pip install -r requirements.txt
cd /home/ubuntu/dalim_api # 본인 프로젝트에 맞게 적용 필요
python3 manage.py collectstatic --noinput
sudo systemctl restart site.service
2. 해당 repo의 settings에서 Actions secrets and variables 등록



- DEBUG : True/False
- SECRET_KEY : 장고의 SECRET_KEY
- SERVER_HOST : lightsail의 퍼블릭 IPv4
- SERVER_USER : 인스턴스 사용자 이름 (ubuntu)
- SERVER_SSH_KEY : ssh키 다운받은 pem키 내용 복붙 (-----BEGIN RSA PRIVATE KEY-----...-----END RSA PRIVATE KEY-----)
3. 해당 repo의 actions 탭에서 액션 확인


배포 되지 않을 경우 로그 확인해서 원인 찾아가며 수정. (위의 경우 SECRET_KEY가 제대로 들어가지 않은 것이 원인)
'공부 > Django' 카테고리의 다른 글
Lightsail로 Django DRF https 배포하기 - 3. ssl 인증서, 무료도메인 발급 (3) | 2024.04.27 |
---|---|
Lightsail로 Django DRF https 배포하기 - 1. 서버세팅 (1) | 2024.04.25 |
CBV로 블로그 CRUD 예제 (1) | 2024.02.27 |
CBV로 Django auth 구현 (0) | 2024.02.27 |
forms.py 이용해 웹 페이지에서 CRUD하기 (0) | 2024.02.26 |
1. 프로젝트 루트 디렉토리에 .github/workflows/main.yml 파일 생성

### [main.yml]
name: Django CI/CD
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 체크아웃 레포지토리
uses: actions/checkout@v3
- name: 파이썬 설정
uses: actions/setup-python@v3
with:
python-version: '3.11'
- name: 의존성 설치
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: 서버 배포
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
set -e
cd /home/ubuntu/dalim_api
git pull origin main
echo "DJANGO_SECRET_KEY=\"${{ secrets.SECRET_KEY }}\"" > .env
echo "DJANGO_DEBUG='${{ secrets.DEBUG }}'" >> .env
'''
# settings.py 아래와 같이 작성되어 있음. 본인 프로젝트에 맞게 적용 필요함.
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
DEBUG = os.environ.get('DJANGO_DEBUG')
'''
source venv/bin/activate
pip install -r requirements.txt
cd /home/ubuntu/dalim_api # 본인 프로젝트에 맞게 적용 필요
python3 manage.py collectstatic --noinput
sudo systemctl restart site.service
2. 해당 repo의 settings에서 Actions secrets and variables 등록



- DEBUG : True/False
- SECRET_KEY : 장고의 SECRET_KEY
- SERVER_HOST : lightsail의 퍼블릭 IPv4
- SERVER_USER : 인스턴스 사용자 이름 (ubuntu)
- SERVER_SSH_KEY : ssh키 다운받은 pem키 내용 복붙 (-----BEGIN RSA PRIVATE KEY-----...-----END RSA PRIVATE KEY-----)
3. 해당 repo의 actions 탭에서 액션 확인


배포 되지 않을 경우 로그 확인해서 원인 찾아가며 수정. (위의 경우 SECRET_KEY가 제대로 들어가지 않은 것이 원인)
'공부 > Django' 카테고리의 다른 글
Lightsail로 Django DRF https 배포하기 - 3. ssl 인증서, 무료도메인 발급 (3) | 2024.04.27 |
---|---|
Lightsail로 Django DRF https 배포하기 - 1. 서버세팅 (1) | 2024.04.25 |
CBV로 블로그 CRUD 예제 (1) | 2024.02.27 |
CBV로 Django auth 구현 (0) | 2024.02.27 |
forms.py 이용해 웹 페이지에서 CRUD하기 (0) | 2024.02.26 |