Skip to content

GitHub Actions

Lee Dogyeong edited this page Dec 5, 2020 · 2 revisions

배경

그동안 사용하던 Traivs CI가 크레딧 소진으로 더 사용할 수 없게 되어서(오픈소스는 무료로 알고 있었는데?..) 이 기회에 CI/CD를 GitHub Actions로 바꾸면서 간단하게 정리


설정 과정

  1. 깃허브 저장소의 Settings - Secrets 에서 ENV 값 추가 image

  2. .github/workflows/ 경로에 .yml 확장자의 설정파일을 추가한다

name: BE Deployment

on:
  push:
    branches:
      - release-BE

jobs:
  deploy:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.16.x]

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      - name: Npm Install
        working-directory: ./WEB/BE
        run: npm install

      - name: Make envfile
        working-directory: ./WEB/BE
        run: |
          touch .env
          echo NODE_ENV = production >> .env
          echo DBUSER = ${{ secrets.ENV_DBUSER }} >> .env
          echo DBPASS = ${{ secrets.ENV_DBPASS }} >> .env
          echo DBHOST = localhost >> .env
          echo DBDATABASEWEB = ${{ secrets.ENV_DBDATABASEWEB }} >> .env
          echo DBDATABASEiOS = ${{ secrets.ENV_DBDATABASEiOS }} >> .env
          echo SALTROUNDS = ${{ secrets.ENV_SALTROUNDS }} >> .env
          echo ENCRYPTIONKEY = ${{ secrets.ENV_ENCRYPTIONKEY }} >> .env
          echo SECRETKEYNAME = ${{ secrets.ENV_SECRETKEYNAME }} >> .env
          echo SECRETKEYALGORITHM = ${{ secrets.ENV_SECRETKEYALGORITHM }} >> .env
          echo SECRETKEYLABEL = ${{ secrets.ENV_SECRETKEYLABEL }} >> .env
          echo RECAPTCHAKEY = ${{ secrets.ENV_RECAPTCHAKEY }} >> .env
          echo EMAILURL = ${{ secrets.ENV_EMAILURL }} >> .env
          echo EMAILACCESSKEY = ${{ secrets.ENV_EMAILACCESSKEY }} >> .env
          echo EMAILSECRETKEY = ${{ secrets.ENV_EMAILSECRETKEY }} >> .env
          echo SESSIONKEY = ${{ secrets.ENV_SESSIONKEY }} >> .env
          cat .env

      - name: Deploy to Express Server
        uses: burnett01/[email protected]
        with:
          switches: -avzr --delete-after
          path: WEB/BE/
          remote_path: ~/TOTP/
          remote_host: ${{ secrets.BE_HOST }}
          remote_user: ${{ secrets.BE_USERNAME }}
          remote_key: ${{ secrets.BE_KEY }}
          remote_port: ${{ secrets.BE_PORT }}

      - name: Restart Forever
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.BE_HOST }}
          username: ${{ secrets.BE_USERNAME }}
          key: ${{ secrets.BE_KEY }}
          port: ${{ secrets.BE_PORT }}
          script: forever restartall

      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          SLACK_USERNAME: 'DDIS Bot'
  1. 설정된 브랜치에 push되면 Actions 탭에서 job이 돌아가는 것 확인 image

느낀점

  • Travis랑 설정하는게 비슷해서 전보다 빠르게 설정할 수 있었다
  • 다른사람들이 만들어놓은 action을 코드 한 줄로 바로 쓸 수 있어서 편하다!
    • ssh연결같은 귀찮은 작업을 편하게 할 수 있다 👍
  • 깃허브 저장소 안에서 다 설정할 수 있어서 좋은듯

Clone this wiki locally