From db2d68ab1d0b5c0f392205180d6350a191adb80a Mon Sep 17 00:00:00 2001 From: Hayden Hargreaves Date: Wed, 5 Mar 2025 21:15:35 -0700 Subject: [PATCH] Working on CI/CD --- .github/workflows/deploy.yml | 39 +++++++++++++++++++++++++ backend/package.json | 2 +- backend/src/server.ts | 3 +- docker-compose.yml | 11 ++++--- frontend/src/components/PathDisplay.jsx | 21 +++++++------ frontend/src/pages/Dashboard.jsx | 21 +++++++++---- 6 files changed, 77 insertions(+), 20 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..2a1c184 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,39 @@ +name: Docker Deploy + +on: + push: + branches: + - master + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Docker login + run: docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" -p "${{ secrets.DOCKERHUB_TOKEN }}" + + - name: Build and push Docker images + run: | + docker-compose build + docker-compose push + + - name: Deploy to server + uses: appleboy/ssh-action@v1.2.1 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + password: ${{ secrets.SERVER_PASSWORD }} + script: | + docker-compose -f /path/to/your/docker-compose.yml down + docker-compose -f /path/to/your/docker-compose.yml pull + docker-compose -f /path/to/your/docker-compose.yml up -d + env: + FILE_GOPHERNEST_USER: ${{ secrets.FILE_GOPHERNEST_USER }} + FILE_GOPHERNEST_PASSWORD: ${{ secrets.FILE_GOPHERNEST_PASSWORD }} + FILE_GOPHERNEST_JWT_SECRET: ${{ secrets.FILE_GOPHERNEST_JWT_SECRET }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index 1543875..f2e682b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "npx tsc", "start": "node dist/server.js", - "dev": "source .env && ts-node-dev src/server.ts" + "dev": "ts-node-dev src/server.ts" }, "keywords": [], "author": "", diff --git a/backend/src/server.ts b/backend/src/server.ts index 88520cd..445a1c3 100644 --- a/backend/src/server.ts +++ b/backend/src/server.ts @@ -10,6 +10,7 @@ import {appendDirectoryToArchive, appendFileToArchive} from "./download"; import path from "node:path"; import {verifyToken} from "./authenicate"; import jwt from "jsonwebtoken"; +import {config} from "dotenv"; /** * App details @@ -22,7 +23,7 @@ const ROOT: string = "/home/azpect"; * Configure the .env file, this is for testing only * TODO: Remove this */ -// config({path: ".env"}); +config({path: ".env"}); /** * Invalid file extensions for the file editor. diff --git a/docker-compose.yml b/docker-compose.yml index 0302672..c76559e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,10 @@ services: - "5000:5000" volumes: # TODO: This will need to be configured, need to rebuild part of the program for that though - - /home/azpect:/media/vault - env_file: - # TODO: This will need to be configured to use GH secrets, ez though - - ./backend/.env + - /home/azpect/Documents:/home/azpect/Documents + environment: + FILE_GOPHERNEST_USER: ${FILE_GOPHERNEST_USER} + FILE_GOPHERNEST_PASSWORD: ${FILE_GOPHERNEST_PASSWORD} + FILE_GOPHERNEST_JWT_SECRET: ${FILE_GOPHERNEST_JWT_SECRET} + DOCKERHUB_USERNAME: ${DOCKERHUB_USERNAME} + DOCKERHUB_TOKEN: ${DOCKERHUB_TOKEN} \ No newline at end of file diff --git a/frontend/src/components/PathDisplay.jsx b/frontend/src/components/PathDisplay.jsx index 591d548..5e7fd51 100644 --- a/frontend/src/components/PathDisplay.jsx +++ b/frontend/src/components/PathDisplay.jsx @@ -5,12 +5,13 @@ * @returns {JSX.Element} * @constructor */ -function HomeButton({onClick}) { +function HomeButton({onClick, enabled}) { return (