Prisma for CD

00_8_3·2022년 8월 6일
0

Migration To Prisma

목록 보기
10/11

Prisma와 지속적인 배포

Dockerfile 변경에 따른 CD파일 수정

Dockerfile에서 .env와 .json 파일을 COPY해주는 부분이 추가됨에 따라

기존에 Github Actions에서 도커 이미지를 빌드할 때 에러가 발생하여 CD 스크립트를 수정해야 했습니다.

(깃헙컨테이너 저장소에 push하기 위해서)

.env.json의 파일들은 credential한 것이기 때문에 스크립트에 명시 하거나 레포지토리에 commit 하면 안되기 때문에

레포지토리의 secret에 저장해서 꺼내 써야합니다.

.env

- name: Generate Environment Variables File for Production
        run: |
          echo "TEST=$TEST" >> .env
        env:
          TEST: ${{ secrets.TEST }}

.json

- name: create-json
        id: create-json
        uses: jsdaniell/create-json@1.1.2
        with:
          name: "test.json"
          json: ${{ secrets.JSON }}

env의 경우 각 환경변수 마다 github actions 컨테이너에서 .env에 주입해야하지만 json는 레파지토리의 secret에 json 자체를 저장해서 꺼내 쓸 수 있습니다.

Prisma 폴더 전송과 migrate

prisma schema와 migrations가 들어있는 prisma 폴더의 경우 src 폴더와 같은 위치에 있기 때문에 수정사항이 생길 때 마다 db에 반영 해주기 위해 ec2에 전송을 해줍니다.

- name: Upload prisma to ec2
        uses: garygrossgarten/github-action-scp@release
        with:
          local: ./prisma
          remote: /home/ubuntu/volunteer-server/prisma/
          host: ${{ secrets.HOST }}
          username: ${{ secrets.SSH_USER }}
          privateKey: ${{ secrets.SSH_KEY }}
          recursive: true

새로 배포된 migrations를 prod db에 반영하기 위해
ec2 스크립트 실행에
npx prisma migrate deploy를 추가해줍니다.

- name: Update ec2
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /home/ubuntu/volunteer-server
            export NVM_DIR=~/.nvm
            source ~/.nvm/nvm.sh
            npx prisma migrate deploy
            npm ci
            pm2 kill
            nf -e .env run npm run pm2

수정.

다시 생각해보니 cd에 .env를 불러왔기 때문에
ec2에 prisma폴더를 전송 후 서버에서 직접 migrate을 실행하는 것 보다는
github actions에서 migrate을 실행해주는게 좋아 보입니다.

- name: Migrate for Production
        run: |
          npx prisma migrate deploy

0개의 댓글