From 0d853e695f0777a227482f6fc345b5bddbb2c5df Mon Sep 17 00:00:00 2001 From: shrt Date: Mon, 17 Mar 2025 16:02:54 +0100 Subject: [PATCH] updated ci/cd pipeline --- .gitea/workflows/deploy.yml | 9 +++++++-- Dockerfile | 4 ---- deploy.sh | 15 +++++++++++++++ docker-compose.yml | 4 +++- 4 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 deploy.sh diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index defca1f..dc9c209 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -9,6 +9,11 @@ jobs: deploy: runs-on: linux steps: - - name: Test Step + - name: Setup SSH Key run: | - echo "Hello World from Gitea Actions!" + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan -H "${{ secrets.SSH_HOST }}" >> ~/.ssh/known_hosts + - name: Deploy via SSH + run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "bash ~/deploy.sh ${{ secrets.PROJECT_DEPLOYMENT_PATH }}" diff --git a/Dockerfile b/Dockerfile index 8e68c52..97c5bae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,11 @@ -# Use official Node.js image FROM node:18-alpine -# Install pnpm globally RUN npm install -g pnpm WORKDIR /app -# Copy package manager files first for caching COPY package.json pnpm-lock.yaml ./ -# Install dependencies using pnpm RUN pnpm install --frozen-lockfile COPY . . diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..7f57fd4 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +PROJECT_PATH=$1 + +echo "Deploying project..." +cd "$PROJECT_PATH" || { echo "Directory not found: $PROJECT_PATH"; exit 1; } +git pull origin main +docker-compose up -d --build +echo "Deployment finished!" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 71449e4..54363de 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,10 +13,12 @@ services: - "traefik.enable=true" - "traefik.http.routers.pablo-shortman-me.rule=Host(`pablo.shortman.me`)" - "traefik.http.routers.pablo-shortman-me.entrypoints=websecure" + - "traefik.http.services.pablo-shortman-me.loadbalancer.server.port=3000" - "traefik.http.routers.pablo-shortman-me.tls.certresolver=myresolver" + expose: + - "3000" networks: - webproxy - networks: webproxy: external: true