This repository has been archived by the owner on Jul 15, 2024. It is now read-only.
chore: docker deploy #58
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Next.js App | |
on: | |
push: | |
branches: | |
- main | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.actor }}/large-file-upload:latest | |
DOCKERFILE: ./deploy/Dockerfile | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup Nodejs | |
uses: actions/[email protected] | |
with: | |
node-version: 20 | |
- run: node -v | |
- run: corepack enable pnpm | |
- run: corepack install | |
- run: pnpm -v | |
- run: pnpm install --frozen-lockfile | |
- run: pnpm test -- --run | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Setup Nodejs | |
uses: actions/[email protected] | |
with: | |
node-version: 20 | |
- run: node -v | |
- run: corepack enable pnpm | |
- run: corepack install | |
- run: pnpm -v | |
- run: pnpm install --frozen-lockfile | |
- run: pnpm run build | |
publish: | |
name: Publish Image | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Login | |
run: | | |
echo ${{ secrets.PAT }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: Build and Push Image | |
run: | | |
docker build . -f ${{ env.DOCKERFILE }} -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
deploy: | |
needs: publish | |
name: Deploy Image | |
runs-on: ubuntu-latest | |
steps: | |
- name: Deploy to Kubernetes | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.VPS_HOST }} | |
username: ${{ secrets.VPS_USER }} | |
key: ${{ secrets.VPS_SSH_KEY }} | |
port: ${{ secrets.VPS_PORT }} | |
script: | | |
cd ${{ secrets.VPS_WORK_DIR }} | |
docker compose pull | |
docker compose up -d | |
exit |