앞서 기본 node.js 서버를 CI 테스트 해보았다. 이제 엘리스 1차 프로젝트였던 kruger사이트 서버를 heroku에 배포하려고 한다.
heroku app을 만들어주고..
root에 .github/workflows/이름.yml
이번에도 docker image는 dockerhub가 아닌 github packages에 올렸다.
name: Publish Docker image
# workflow가 trigger될 이벤트를 명시한다. push하면 실행!
on:
push:
branches: main
pull_request:
branches: main
# workflow에서 실행할 job
jobs:
build-and-push-image:
# job이 돌아갈 환경을 명시한다.
runs-on: ubuntu-latest
# 하나의 job에서 실행할 step 명시한다.
steps:
- name: Checkout repository
# uses는 다른 오픈소스 커뮤니티에 있는 actions를 가지고 와서 실행하라고 job에게 알려준다.
# checkout@v3는 레파지토리 환경을 runner로 복사한다.
uses: actions/checkout@v3
# Docker Buildx 설정을 위한 GitHub 작업이다.
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
# Docker 레지스트리에 대해 로그인하기 위한 GitHub 작업이다.
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.TOKEN }}
# Buildx 로 Docker 이미지를 빌드하고 푸시하는 GitHub 작업이다.
- name: Build and push Docker image
uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
push: true
tags: ghcr.io/${{ secrets.DOCKER_HUB_USERNAME }}/kruger-back:latest
# heroku 배포
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: akhileshns/heroku-deploy@v3.12.12
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: 'git-cicd-kruger'
heroku_email: ${{secrets.HEROKU_EMAIL}}
env_file: '.env'
usedocker: true
node.js서버를 테스트 해 봤던것과 달라진건... heroku 배포 부분정도 뿐이었다.
아래 깃허브에서 보고 쉽게 했다.
env_file은 폴더에 있는 .env path를 적어주면 된다. 역시 깃허브에 설명되어있다.
HEROKU_API_KEY도 아래 깃허브를 참고하면 방법이 설명 되어있다.
HEROKU_EMAIL은 heroku에 등록되어있는 이메일이다.