DjangoCRUDBoard CI/CD 1. workflows
https://github.com/DPS0340/DjangoCRUDBoard
- .github/workflows - ci.yml, cd.yml
- init-letsencrypt.sh
- deploy.sh
- beforeinstall.sh
- afterinstall.sh
- appspec.yml
- docker-compose.yml
- nginx-app.conf
- nginx-release.conf
- Workflow
(1) CI.yml
name: CI #이름
on: #동작 방식 / 서순
push: #푸쉬 될때
branches: #해당 브랜치가 master 브랜치에 푸쉬 될때 동작
- master
jobs: # 세부적인 동작에 대한 서순
docker-build: #이름
runs-on: ubuntu-latest #동작 환경 설정 즉, 액션이 돌아갈 가상환경 머신 설정
steps: # 단계
-
name: Set up QEMU #기본 설정 1
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx #기본 설정 2
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub #도커 허브에 로그인
uses: docker/login-action@v1 #명령을 불러올 레포지토리
with: #매개변수 저장
username: ${{ secrets.DOCKERHUB_USERNAME }} #깃허브 레포 시크릿 사용 깃허브 settings
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
id: docker_build #해시값 명시시 사용할 id 값
uses: docker/build-push-action@v2
with:
push: true #빌드된 이미지를 도커허브에 업로드
tags: a891/djangocrudboard:latest
build-args: Django_secret_key=${{ secrets.DJANGO_SECRET_KEY }} # 빌드시 Dockerfile에서 쓰일 스크릿 키 값을 쌍으로 불러와 저장, 이때까지 매개변수이고 도커파일에서 환경변수화함.
-
name: Image digest #이미지의 해시값을 불러옴
run: echo ${{ steps.docker_build.outputs.digest }} #이미지의 해시값 출력
(2) CD.yml
name: CD
on:
push:
branches:
- master
jobs:
upload:
runs-on: ubuntu-latest
steps: #cd에서도 checkout 필수
- name: Checkout code
uses: actions/checkout@v2 #master branch 코드를 불러옴
- name: Upload S3 for Codedeploy
uses: jakejarvis/s3-sync-action@master #s3 업로드 해주는 레포 주소
with:
args: --acl public-read --follow-symlinks --delete
env: #환경 변수 설정
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'ap-northeast-2' # optional: defaults to us-east-1
deploy:
runs-on: ubuntu-latest
needs: upload #업로드 다음 deploy를 작동시킴. s3로 코드를 업데이트하고 배포를 동작시켜야하기 때문.
steps: #env로 설정하지않고 steps로 설정한 이유는 후의 step 실행에도 사용하기 위함. env는 steps 실행 후 사라짐.
- name: Configuring aws credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: 'ap-northeast-2'
- name: Triggering AWS codedeploy
uses: webfactory/[email protected]
참고 링크: https://velog.io/@swchoi0329/Travis-CI-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94#3-travis-ci%EC%99%80-aws-s3-%EC%97%B0%EB%8F%99
ec2 접속 codedeploy 에이전트 설치가 중요했음.
aws 웹 접속 s3 권한 public으로 바꿈
Author And Source
이 문제에 관하여(DjangoCRUDBoard CI/CD 1. workflows), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qkr0677/DjangoCRUDBoard-CICD-1.-workflows저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)