banner

[DX] git actions로 ssh 접속하여 자동 배포 하기

#dx#git#actions#ssh#ci/cd

2023.07.21

로컬에서 작업하고 푸쉬하고
마스터 브랜치로 합치고
서버에 접속해서 빌드&배포 하고...

개발자는 귀찮음이 많아야 좋은 환경들을 만들어 간다고 합니다.
위와 같은 작업이 슬슬 귀찮아져서 자동 배포를 적용해야겠다 싶었습니다.
goorm ide로 ubuntu 서버를 사용하고 있고 vue3로 제작된 웹 페이지를 운영하는 환경입니다.

🔑마스터 브랜치에 코드가 변경되면 빌드&배포가 실행되게 할 수 없을까?

goorm ide에 jenkins를 설치해서 ci/cd환경을 구축해보려 했는데 설치가 잘 되지 않아 그냥 계속 수동으로 빌드&배포를 진행해왔습니다.
수개월간 방치하다 문득 git actions가 떠올랐습니다.
git actions로 브랜치에 코드 변화 감지를 할 수 있고 명령어를 실행시킬 수 있기에 ssh 접근도 가능한지 알아봤습니다.

git actions로 ssh 접속하여 빌드&배포 스크립트를 실행시키게 하면 되겠다!

📃배포 스크립트 만들기

#!/bin/bash

project() {
    cd /workspace/project
    git pull
    npm run build
    pm2 restart project
}

project

workspace의 project폴더로 이동한 후 git pull을 받고 빌드를 하고 pm2를 재시작하는 스크립트입니다.
cd 경로를 지정할 때 상대경로로 지정하게 되면 수동으로는 잘 동작하지만, ssh로 접근 시에는 다르기때문에 절대경로로 지정해줍니다.

💻git actions 스크립트 만들기

.github/workflows/main.yml

name: remote ssh command
on: [push]
jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using password
      uses: appleboy/ssh-action@master
      with:
        host: -
        username: -
        password: -
        port: -
        script: /workspace/baepo.sh

github 레포지토리로 이동해서 main.yml 파일을 위와 같이 만들어줍니다.
host와 username, password, port를 잘 지정해주고 먼저 만들어놨던 baepo.sh파일을 실행하도록 스크립트를 만들어줍니다.

끝까지 읽어주셔서 감사합니다.

0시간 동안 운영중...

Copyright © 2023, All right reserved.