DjangoCRUDBoard CI/CD 1. workflows

박근우·2021년 2월 22일
0

https://github.com/DPS0340/DjangoCRUDBoard

  1. 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/create-aws-codedeploy-deployment@v0.2.2

참고 링크: 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으로 바꿈

profile
공대생의 은밀한 취미

0개의 댓글