From c017207267443a693b7745400fd1380db1da67f9 Mon Sep 17 00:00:00 2001 From: Borgar Barland <142639383+borgaar@users.noreply.github.com> Date: Thu, 9 Jan 2025 20:29:05 +0100 Subject: [PATCH] dockerized and added deployment workflow --- .github/workflows/deploy.yml | 45 ++++++++++++++++++++++++++++++++++++ Makefile | 9 ++++++++ next.config.js | 4 +++- prisma/schema.prisma | 5 ---- 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..72e7889 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,45 @@ +name: Deploy + +on: + push: + branches: ["devops(dockerfile)/dev"] + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + concurrency: + group: deployment_lock + cancel-in-progress: false + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Set up SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.KEY }}" > ~/.ssh/key + chmod 600 ~/.ssh/key + ssh-keyscan ${{ secrets.HOST }} >> ~/.ssh/known_hosts + + - name: Create .env file + run: | + echo 'DATABASE_URL="${{ secrets.DATABASE_URL }}"' >> .env + echo 'NEXTAUTH_URL="${{ secrets.NEXTAUTH_URL }}"' >> .env + echo 'NEXT_PUBLIC_LEPTON_API_URL="${{ secrets.NEXT_PUBLIC_LEPTON_API_URL }}"' >> .env + echo 'ALLOWED_GROUP_SLUGS="${{ secrets.ALLOWED_GROUP_SLUGS }}"' >> .env + echo 'NEXTAUTH_SECRET="${{ secrets.NEXTAUTH_SECRET }}"' >> .env + + - name: Copy .env to VPS + run: | + scp -v -i ~/.ssh/key .env ${{ secrets.USER }}@${{ secrets.HOST }}:${{ secrets.PATH }} + + + - name: Deploy to VPS + run: | + ssh -v -i ~/.ssh/key ${{ secrets.USER }}@${{ secrets.HOST }} << 'ENDSSH' + cd ${{ secrets.PATH }} + chmod 0600 .env + git pull + make prod + ENDSSH diff --git a/Makefile b/Makefile index e41bfbf..a5eeab7 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,12 @@ .PHONY: db db: docker compose up -d + +.PHONY: prod +prod: + - docker container stop blitzed + - docker container rm blitzed + - docker image rm blitzed + docker build -t blitzed:latest . + prisma migrate deploy + docker run --env-file .env -p 4000:3000 --name blitzed -d blitzed:latest diff --git a/next.config.js b/next.config.js index 9bfe4a0..04cf1ed 100644 --- a/next.config.js +++ b/next.config.js @@ -5,6 +5,8 @@ await import("./src/env.js"); /** @type {import("next").NextConfig} */ -const config = {}; +const config = { + output: "standalone", +}; export default config; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d6e451b..ece9d08 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -5,11 +5,6 @@ generator client { provider = "prisma-client-js" } -generator erDiagram { - provider = "prisma-erd-generator" - output = "../ER_diagram.pdf" -} - datasource db { provider = "postgresql" url = env("DATABASE_URL")