Github Action을 사용한 배포 자동화

반디·2023년 7월 3일
0

개발기

목록 보기
11/16

Github Action을 사용한 배포 자동화 실습

1. actions 탭에서 workflow 설정

2. 배포를 위한 workflow

  • .github/workflows/deploy_ssh.yml
    ssh-action을 이용: ssh로 접속한 후, 스크립트를 실행
name: CICD-SSH
on:
  push:
      branches: [ main ] #main 브랜치로 push나 merge가 될 때 사용할 것 
      paths: #이 경로에 있는 파일이 변경된 후에만 실행!
        - 'part2/04-cicd/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using ssh key
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }} 
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SSH_KEY }}
        port: 22
        script: |
            cd .ssh/${{ github.event.repository.name }}/part2/04-cicd #경로주의
            sh deploy_ssh.sh

3. 배포를 위한 shell script: deply_ssh.sh

  • pull 받은 후, 라이브러리 설치
#!/bin/bash
git pull origin main
PWD=`pwd`
. $PWD/venv/bin/activate
pip install -r requirements.txt

4. github action 적용 확인

  • branch 생성 후, app.py에서 title을 변경 \rightarrow main 브랜치에 merge

  • actions에서 workflow 확인

  • error 발생 \rightarrow GCP의 key값, repo의 secret 설정이 잘 되었는지 확인
    ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

  • deploy 결과 확인

GCP 인스턴스 고정 IP 주소 설정

  • 고정 IP를 별도로 설정하지 않으면 인스턴스 중지 후 새로 시작할 때마다 IP 주소가 변경됨
    인스턴스 클릭하여 설정 확인

  • 콘솔 - VPC 네트워크 - IP 주소

  • 우측 메뉴에서 고정 IP로 승급 선택하여 고정 IP 주소 할당

    \star 인스턴스 삭제 시 고정 IP도 함께 삭제해야함!! (자동으로 삭제 안됨)

참고문헌

profile
꾸준히!

0개의 댓글