GitHub Actions을 이용한 server 관리

Dunde·2021년 10월 29일
0

서버구축과 개발

목록 보기
5/7
post-thumbnail

GitHub Actions을 이용해 서버에 ssh로 접속하여 자동배포하는 과정을 기록합니다.

GitHub Actions

  • GitHub에 저장된 저장소를 들어가서 Actions 탭 클릭.
  • `set up a workflow yourself` 를 클릭하여 새 Action 파일을 만든다.
  • 파일을 만들었을때 크게 나누어지는 부분은 실행조건과 환경설정, 액션이다.
name: Node.js CI	# Action 식별이름  

on:		# 조건  
  push:  
    branches: [ main ]  
  pull_request:  
    branches: [ main ]  

jobs:		# 수행할 일 목록  
  build:  
    runs-on: ubuntu-latest	# 환경 설정  

    strategy: 			# 환경 설정  
      matrix:  
        node-version: [14.x]  
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/  

    steps: 							# 수행 단계  
      - name: executing remote ssh commands using password 	# 수행 단계 식별이름  
        uses: appleboy/ssh-action@master 			# ssh 접속을 사용  
        with: 					# 함께 사용할 것  
          host: ${{ secrets.HOST }} 		# GitHub secret에 저장된 HOST  
          username: ${{ secrets.USERNAME }} 	# GitHub secret에 저장된 USERNAME  
          password: ${{ secrets.PASSWORD }} 	# GitHub secret에 저장된 PASSWORD  
          port: ${{ secrets.PORT }} 		# GitHub secret에 저장된 PORT  
          script: | 				# 서버에 접속 후 사용 할 스크립트 (아래는 예시 명령어)  
            killall node  
            killall nohub  
            echo "> node exit"  
            cd project && git pull  
            echo "> git cloen update"  
            cd client && npm install  
            npm run build  
            echo "> react build"  
            cd ..  
            cd server && npm install  
            { nohup npm start > nohub.out < /dev/null & }  
            echo "> server on"  
            exit
  • 위 Action은 main branche에서 push나 pull_request가 발생하였을 때 수행하는 코드이다.
  • ssh를 이용해 특정 주소와 포트로 유저/비밀번호를 이용해 접속한 뒤 스크립트를 수행한다.
  • `host, username, password, port` 에 사용된 값은 GitHub에서 설정하여 사용한다.
    • 민감한 정보를 감추기 위함.
    • 사용법은 하단 참조.

GitHub Secrets 설정

  • GitHub 저장소의 Settings 탭에서 Secrets를 설정 할 수 있다.
  • New repository secret을 누르면 이름과 값을 설정 할 수 있다.




자세한 내용 참고 : Github Action 사용법 정리

profile
개발 시작!

1개의 댓글

comment-user-thumbnail
2022년 11월 14일

안녕하세요! 궁금한 점이 있어서 댓글 남겨봅니다!
echo "> node exit" echo "> git clone update" 여기서 echo를 쓰신 이유가 있으신가요??
echo 없이 다른 명령어들 처럼 그냥 git clone 이런식으로 하면 작동이 안되는 건지 궁금합니다!

답글 달기