diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..76557e8 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,44 @@ +name: Deploy Homepage + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Install + run: npm install + + - name: Build + run: npm run build + + # build/standalone is the output directory for the Next.js app + # now we want to deploy a container with the built app + - name: Build Docker image + run: docker build -t homepage:latest -f Dockerfile.build . + - name: Stop and remove existing container + run: | + docker stop website-server || true + docker rm website-server || true + - name: Run Docker container + run: | + docker run -d \ + --expose=80 \ + --network=web \ + --name website-server \ + homepage:latest + - name: Clean up Docker image + run: docker rmi homepage:latest || true + - name: Clean up unused Docker resources + run: docker system prune -f --volumes || true + - name: Notify deployment success + run: echo "Deployment successful!" + diff --git a/next.config.ts b/next.config.ts index e9ffa30..4d02752 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,6 +2,8 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ + output: "standalone", + distDir: "build", }; export default nextConfig; diff --git a/tsconfig.json b/tsconfig.json index c133409..9bb32ec 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -19,9 +23,19 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "next-env.d.ts", + "build/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] }