[CI/CD] AWS가 아닌 환경에서 GitHub Actions로 자동 배포하기
카테고리: ETC
CI/CD
CI/CD(Continuous Integration and Continuous Delivery/Deployment)는 소프트웨어 개발에서 코드 변경을 자동으로 빌드, 테스트, 배포하는 프로세스를 의미한다. CI/CD는 개발 속도를 높이고, 품질을 개선하며, 지속적으로 사용자에게 끊김 없는 서비스를 제공하는 데 중요한 역할을 한다.
보통은 CI/CD 도구로 Jenkins와 Github, AWS CodePipeline, AWS CodeDeploy를 사용한다. 대부분의 블로그는 AWS CodeDeploy를 위주로 CI/CD를 설명한다. 본 포스팅에서는 AWS가 아닌 VPS 환경(Azure, Vultr 등)에서 Github Actions를 이용하여 자동 배포하는 방법을 설명하고자 한다.
※ 본 게시글은 Ubuntu 24.04 LTS 버전을 기준으로 작성되었습니다.
서버 설정하기
먼저 서버에 ssh-keygen을 이용하여 ssh key를 생성하여야 한다.
ssh-keygen -m PEM -t rsa -b 4096
위의 명령어를 입력하면 아래와 같은 내용들이 출력되는데, 기타 다른 내용들은 입력할 필요없이 Enter를 치면 id_rsa라는 이름으로 키가 발급된다.
이후 생성한 ssh key를 등록하여야 하는데 등록하는 명령어는 아래와 같다.
ssh-copy-id [SERVER-ID]@[SERVER-IP]
yes
[비밀번호 입력]
이후, ~/.ssh/ 경로에 id_rsa를 살펴보면 아래와 같이 비밀키가 생성되어 있음을 확인할 수 있다.
이 비밀키를 Github Repo에 등록하여야 하므로, 복사해두어야 한다.
- ~/.ssh/id_rsa
Github 설정하기
Github의 이를 적용할 Repo에 들어가 Settings → Secrets and variables → Actions → New repository secret에 위에서 복사한 비밀키를 기입하여 아래와 같이 작성하고 Add secret을 클릭하여 등록한다.
※ —–END RSA PRIVATE KEY—– 밑의 개행을 없애고 등록해야한다.
이후 해당 Repo의 .github/workflows 경로에 아래의 내용을 채우고 main.yml이라는 파일명으로 Commit 하고 Push 한다.
- .github/workflows/main.yml
on: push
name: Publish Website
jobs:
web-deploy:
name: 🚀 Deploy Website Every Commit
runs-on: ubuntu-latest
steps:
- name: 🚚 Get Latest Code
uses: actions/checkout@v3
- name: 📂 Sync Files
uses: SamKirkland/web-deploy@v1
with:
target-server: [SERVER-IP]
remote-user: [SERVER-ID]
private-ssh-key: $
destination-path: [SERVER-PATH]
테스트하기
제대로 설정되었다면 해당 Repo에 파일을 Commit 하고 Push 하면 Actions이 시작되며 아래와 같이 출력된다. 이후 서버에 변경된 파일이 업로드된다.