Github actions

  1. self-hosted runner 등록

레포지토리 > Settings > Actions > Runners > New Self-hosted runner

Untitled

페이지 하단에 명시된 명령을 수행해 배포 서버에 actions runner를 설치한다.

배포 서버에 actions runner를 설치하기 전에 먼저 새로운 계정을 만들고 해당 계정으로 로그인해야 한다.

다음으로 pm2로 actions runner를 실행한 뒤 startup 프로세스로 등록한다.

su action
cd /home/action/actions-runner
pm2 start -n github-actions-runner run.sh
pm2 save # startup 프로세스로 등록
  1. 테스트용 .github/workflows/main.yml 생성

    name: 배포
    
    on:
      push:
        branches: [main]
    
    jobs:
      deploy:
        runs-on: self-hosted
    
        steps:
          - uses: actions/checkout@v3
          - run: echo "안녕"
    
  2. push해서 action이 잘 작동하는지 확인

    Untitled

    Untitled

  3. 배포 action 생성

    main.yml

    name: 배포
    
    on:
      push:
        branches: [main]
    
    env:
      DATABASE_URL: ${{ secrets.DATABASE_URL }}
      REDIS_HOST: ${{ secrets.REDIS_HOST }}
      REDIS_PORT: ${{ secrets.REDIS_PORT }}
      REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }}
    
    jobs:
      deploy:
        runs-on:
          self-hosted
        steps:
          - name: 체크아웃
            uses: actions/checkout@v3
    
          - name: client 모듈 설치
            working-directory: ./client
            run: npm install
    
          - name: client 빌드
            working-directory: ./client
            run: |
              npm run build
              rm -rf /var/www/build
              cp -rf ./build /var/www/
    
          - name: server 모듈 설치
            working-directory: ./server
            run: npm install
    
          - name: server 환경변수 파일 생성
            working-directory: ./server
            run: |
              echo DATABASE_URL=$DATABASE_URL > .env
              echo REDIS_HOST=$REDIS_HOST >> .env
              echo REDIS_PORT=$REDIS_PORT >> .env
              echo REDIS_PASSWORD=$REDIS_PASSWORD >> .env
    
          - name: pm2 프로세스 재실행
            working-directory: ./server
            run: pm2 restart japari