full stack mysql, node js express,react

JS FULL STACK 13장 백엔드 코드 배포 자동화해보기 gitHub action

우주전사버즈 2024. 2. 6. 16:53

왜 하는거지?

Fly.io에 배포된 express로 만든 Todo Crud API코드들과

내 깃허브에 배포된 코드들이 다를수도있음!

 

실제로 fly deploy를 통해 fly.io에 내 todo crud 코드들을 이미지로 압축해서 압축된 이미지가 fly.io에 올라간거고

깃허브에는 자주적으로 git push를 해주면서 따로 업데이트를 해줘야됨

 

 

그러면 그냥 Github 에다가 push 햇을때 자동적으로 도커파일을 이미지로 빌드해서 fly.io에 넘겨 배포되도록 하면 되지않을까?

이런것을 CI/CD라고 부른다고 한다.  

즉 하나의 파이프라인을 구축해서 push만 하면 fly.io에 자동적으로 배포된다! 

 

 

.github/workflows

내가만들어둔 백엔드코드가있는 디렉터리로 들어가서 

.github/workflows 라는폴더를 만든다 (. 은 숨김파일을 의미) 

 

 

 

deploy.yml

해당 폴더안에 deploy.yml이라는 파일을 만들어준뒤 다음과같이 작성

name: Fly Deploy

on:
  push:
    branches: [main]
    paths:
      - "**.js"
      - "package.json"
      - ".github/workflows/deploy.yml"
      - fly.toml
      - Dockerfile

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      # Setup Node.js environment
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "16" # Set this to your Node.js version

      - uses: superfly/flyctl-actions/setup-flyctl@master
      - run: flyctl deploy --remote-only
        env:
          FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

 

 

코드 설명

paths 안의 경로안의 파일들에서 수정사항이 일어낫을때 브랜치명이 main이라면 인지한다.

만약 본인 브랜치가 master면 master로 해줘야됨  

on:
  push:
    branches: [main]
    paths:
      - "**.js"
      - "package.json"
      - ".github/workflows/deploy.yml"
      - fly.toml
      - Dockerfile

 

수정 사항이 일어난다면 git hub 자체의 리눅스서버에서 자동적으로 배포해준다. 

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      # Setup Node.js environment
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "16" # Set this to your Node.js version

      - uses: superfly/flyctl-actions/setup-flyctl@master
      - run: flyctl deploy --remote-only
        env:
          FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

 

 

secrets.FLY_API_TOKEN 

시크릿키를 따로 발급을 받아줘야한다.

fly.io에서 

이것이 바로 시크릿키

 

백엔드 프로젝트가 존재하는 github 레포로들어가 setting 아래로 스크롤을 내려보면 다음과같은 Actions이라는 것을 찾을수 있다.

이름 : FLY_API_TOKEN 발급받은시크릿키:발급받은 토큰

 

이젠 push일어날때마다 github action 일어나는것 확인가능 

 

 

참조영상

https://youtu.be/Hgjl1-K3D_U?si=6i46JMZ4x2g2FfNe