diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..9cd6a95 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,46 @@ +name: Deploy + +on: + push: + branches: [ main ] + +jobs: + lint-build-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '20' + + - name: Install dependencies + run: | + if [ -f package-lock.json ]; then + npm ci + else + npm install + fi + + - name: Run linting + run: npm run lint + + - name: Build + run: npm run build + + - name: Deploy to VPS + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + run: | + mkdir -p ~/.ssh + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan -H 51.210.247.57 >> ~/.ssh/known_hosts + ssh debian@51.210.247.57 << 'EOF' + cd /home/debian/siri-shortcuts + git pull origin main + cd /home/debian/infrastructure + docker-compose up -d --build siri-shortcuts + EOF \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..81a8d48 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:18-alpine AS builder + +WORKDIR /app + +COPY package*.json ./ +RUN npm install + +COPY . . +RUN npm run build + +FROM node:18-alpine + +WORKDIR /app + +ENV NODE_ENV=production + +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json + +EXPOSE 3000 + +CMD ["npm", "start"] \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index ddc1344..65fe011 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata } from 'next'; +import Script from 'next/script'; import { ReactNode } from 'react'; export const metadata: Metadata = { @@ -10,6 +11,11 @@ export default function RootLayout({ children }: { children: ReactNode }) { return ( {children} +