로컬에서 작업하고 푸쉬하고
마스터 브랜치로 합치고
서버에 접속해서 빌드&배포 하고...
개발자는 귀찮음이 많아야 좋은 환경들을 만들어 간다고 합니다.
위와 같은 작업이 슬슬 귀찮아져서 자동 배포를 적용해야겠다 싶었습니다.
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로 접근 시에는 다르기때문에 절대경로로 지정해줍니다.
.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파일을 실행하도록 스크립트를 만들어줍니다.