전체적인 흐름은 아래와 같다.
1단계: Local PC에서 Streamlit 코드 작성하고 테스트
2단계: 테스트가 완료된 이후, Github Repo에 소스코드 Push
3단계: Repository에 Push가 되자마자 Github Actions을 통해 GCE 서버로 해당 소스코드를 다운로드 받음
4단계: 실 운영 중인 서버에 코드가 반영되어 업데이트가 되도록 함.
사전 준비
- Secrets and Variables 설정
- SSH_KEY 개인키 설정
- HOST : GCE 서버 외부 (External) IP 주소 설정
- USERNAME : GCE 서버 username 설정
준비 방법
- 사전에 만들어둔 깃허브 Repository 접속
- [Settings > Secrets and variables > Actions] 클릭
- New repository secret 클릭
- Name에 "SSH_KEY" 입력
- GCP 콘솔에서 [Compute Engine > VM 인스턴스] 접속
- 미리 만들어둔 인스턴스 활성화 시킨 후, SSH메뉴에서 '브라우저 창에서 보기' 클릭
- cat ~/.ssh/id_rsa 입력
- ----BEGIN 부분 부터 ----END 부분까지 전부 복사
- 다시 깃허브로 돌아와서 Secret에 붙여넣기 후, add secret 클릭
- 다시 New repository secret 클릭
- Name에 "HOST" 입력
- Secret에 외부 IP 값 입력 후, Add secret 클릭
- 마지막으로 한 번 더 New repository secret 클릭
- Name에 "USERNAME" 입력
- Secret에 SSH 브라우저 창에 나오는 @ 앞 아이디 입력(지메일 아이디일거임)
- SSH 브로우저 창에서 cd [Repository]로 이동 후, vi deploy.sh 입력하여 파일 생성(로컬에서 코드 업데이트를 하면 자동으로 GCP 서버에 반영되게 하기 위함. 이걸 깃허브 액션 배포 자동화라고 함.) 내용은 아래와 같이 작성.
- #!/bin/bash
- git pull origin main
- git add . -> git commit -m "updated" -> git push
Streamlit 파일 생성
- vi .github/workflows/streamlit-gcp-project.yml 입력 후, 아래와 같이 입력 후, 저장(git add, git commit, git push까지)
name: CICD-SSH
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using ssh key
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
port: 22
script: |
whoami
ls -al
cd ${{ github.event.repository.name }}
echo "Hello World!"
chmod +x deploy.sh
sh deploy.sh
echo "Done----"
-> 결국 deploy.sh 를 실행하려고 하는 것(git pull)
2. 오류 발생하면, [깃허브 프로필 > Setting > SSH and GPG keys]에서 키 복사 후 GCP, 메타데이터 SSH KEYS에도 Public Key 재입력
'클라우드' 카테고리의 다른 글
깃허브 액션(Github Actions) 기초 사용 방법 with GCP (0) | 2025.01.07 |
---|---|
GCP 가상머신 만들기 (0) | 2024.11.10 |
댓글