diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..1ae320bd --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +name: Build and Deploy + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: "21.2.0" + + - name: Install dependencies + run: | + echo -e "\e[34mInstalling dependencies...\e[0m" + cd server + npm install + + - name: Build project + run: | + echo -e "\e[34mBuilding project...\e[0m" + cd server + npm run build + ls + if [ ! -d "dist" ]; then + echo -e "\e[31mBuild failed: 'dist' directory not found.\e[0m" + exit 1 + else + echo -e "\e[32mBuild succeeded.\e[0m" + fi + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: dist + path: server/dist + + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Download build artifacts + uses: actions/download-artifact@v3 + with: + name: dist + path: server/dist/ + + - name: Deploy server to Vercel + run: | + echo -e "\e[34mDeploying to Vercel...\e[0m" + npm install -g vercel + cd server + ls dist + if [ ! -d "dist" ]; then + echo -e "\e[31mBuild failed: 'dist' directory not found.\e[0m" + exit 1 + fi + npx vercel --prod --token ${{ secrets.VERCEL_TOKEN }} --yes + + - name: Deploy client to Vercel + run: | + echo -e "\e[34mDeploying to Vercel...\e[0m" + npm install -g vercel + cd client + npx vercel --prod --token ${{ secrets.VERCEL_TOKEN }} --yes diff --git a/.gitignore b/.gitignore index 907aa4c4..7d1bee05 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,6 @@ dev dist-ssr client/dist *.local -dist # Editor directories and files .vscode/* diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..e985853e --- /dev/null +++ b/client/.gitignore @@ -0,0 +1 @@ +.vercel diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 00000000..e985853e --- /dev/null +++ b/server/.gitignore @@ -0,0 +1 @@ +.vercel diff --git a/server/package.json b/server/package.json index 8df370d0..3c1160ea 100644 --- a/server/package.json +++ b/server/package.json @@ -5,7 +5,7 @@ "main": "index.ts", "scripts": { "start": "npm run build && node dist/index.js", - "dev": "node --loader ts-node/esm src/index.js", + "dev": "node --loader ts-node/esm index.js", "test": "npm run build && playwright test", "build": "tsc" }, diff --git a/server/vercel.json b/server/vercel.json index 957d5ead..309aacb2 100644 --- a/server/vercel.json +++ b/server/vercel.json @@ -1,12 +1,6 @@ { "version": 2, - "builds": [ - { - "src": "package.json", - "use": "@vercel/node", - "config": { "distDir": "dist" } - } - ], + "builds": [], "routes": [ { "src": "/(.*)",