프로젝트 배포 스크립트 만들기

이춘길·2022년 2월 20일
0
post-thumbnail

선행

SSH 통신 사전적 정의


목표

  1. CI / CD를 구축하고 싶지만 여건이 안될 때
  2. CI / CD 구축이 헤비 스펙일 때
  3. 라이트하면서 간단하게 프로젝트를 배포하고 싶을때

1. SSH 키 생성

  • SSH 키 연동을 통해 패스워드 없이 실서버에 접속하기 위함
  • 커스텀 경로 지정을 하고자 한다면, 경로를 입력한다.
  • 패스워드는 불편할 수도 있으니 패스 !!!
$ ssh-keygen -t rsa -b 4096 -C "Email_Address"

2. SSH 키 서버 저장

2-1) 직접 서버에 등록

  1. 클라이언트에서 id_rsa.pub 내용을 복사한다.
  2. 서버로 이동하여 .ssh/authorized_keys 내에 붙여넣기 후 저장한다.

2-2) 클라이언트 유틸리티 활용

$ ssh-copy-id id_rsa.pub 서버계정@서버id // 기본 포트 일 경우
$ ssh-copy-id id_rsa.pub '-p 포트 서버계정@서버id' // 기본 포트가 아닐 경우

3. 접속 테스트

  • 위 과정을 정상적으로 수행했다면, 별도 패스워드 없이 접속이 가능하다.
$ ssh [host_name]@[server_ip]

4. 스크립트 작성

  • 서버에 프로젝트가 Clone이 되었다는 가정
  • 최초 배포 이 후, 배포할 때 사용할 수 있다.
HOST=[server_ip]
USER=[server_host_name]
DEST_REPO=[project_repository]
BRANCH=[project_branch]

ssh $USER@$HOST "cd $DEST_REPO && git checkout $BRANCH && git reset --hard HEAD~1 && git pull && yarn && yarn build && service nginx restart"

스크립트 설명

  1. 프로젝트로 이동
  2. 배포하고자 하는 브랜치로 checkout
  3. 충돌 방지를 위해 현재 commit에서 한칸 뒤로 이동
  4. pull을 통해 최신 리모트 반영
  5. build 수행
  6. nginx 재실행 (저는 SPA라 nginx로 배포했습니다)

5. 주의사항

5-1) SSH 통신이 가능한 상태인지 확인

  • 커넥션 성공 여부 파악
  • 커넥션에 실패한다면 두 가지 작업이 필요하다
    1) Server outbound 규칙 port 22 추가
    2) Server 방화벽 port 22 해제
$ telnet bitbucket.org 22
profile
일지를 꾸준히 작성하자.

0개의 댓글