카테고리:

3 분 소요

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라는 이름으로 키가 발급된다.

id_rsa라는 이름으로 키가 발급된 화면

이후 생성한 ssh key를 등록하여야 하는데 등록하는 명령어는 아래와 같다.

ssh-copy-id [SERVER-ID]@[SERVER-IP]
yes
[비밀번호 입력]

비밀키가 생성된 화면1

이후, ~/.ssh/ 경로에 id_rsa를 살펴보면 아래와 같이 비밀키가 생성되어 있음을 확인할 수 있다.

이 비밀키를 Github Repo에 등록하여야 하므로, 복사해두어야 한다.

  • ~/.ssh/id_rsa

비밀키가 생성된 화면2

Github 설정하기

Github의 이를 적용할 Repo에 들어가 Settings → Secrets and variables → Actions → New repository secret에 위에서 복사한 비밀키를 기입하여 아래와 같이 작성하고 Add secret을 클릭하여 등록한다.

※ —–END RSA PRIVATE KEY—– 밑의 개행을 없애고 등록해야한다.

Github에 비밀키를 등록한 화면

이후 해당 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이 시작되며 아래와 같이 출력된다. 이후 서버에 변경된 파일이 업로드된다.

테스트에 성공한 화면

참고

https://github.com/marketplace/actions/web-deploy-anything

태그: Actions, CI/CD, CodeDeploy, github, github Actions, repo, Secret, SSH, vultr, 배포

업데이트: