diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..e293579 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,38 @@ +name: Deploy Backend to EC2 + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup SSH key + uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: ${{ secrets.EC2_SSH_KEY }} + + - name: Deploy Backend to EC2 + run: | + ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USERNAME }}@${{ secrets.EC2_HOST }} -p ${{ secrets.EC2_PORT }} << 'EOF' + cd /home/ec2-user/easyToFind-Backend + + echo "DB_HOST=${{ secrets.DB_HOST }}" > .env + echo "DB_PORT=${{ secrets.DB_PORT }}" >> .env + echo "DB_USER=${{ secrets.DB_USER }}" >> .env + echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env + echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env + echo "PORT=${{ secrets.PORT }}" >> .env + echo "CORS_ORIGIN=${{ secrets.CORS_ORIGIN }}" >> .env + echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> .env + + git pull origin main + npm install + pm2 restart easytofind-backend + EOF diff --git a/bin/www b/bin/www index 3572c9f..f0f51c9 100644 --- a/bin/www +++ b/bin/www @@ -13,7 +13,7 @@ require("dotenv").config(); * Get port from environment and store in Express. */ -const port = normalizePort(PORT || "3000"); +const port = normalizePort(PORT || "3001"); app.set("port", port); /** diff --git a/common/envConstants.js b/common/envConstants.js index d1bf3b3..17ed2fd 100644 --- a/common/envConstants.js +++ b/common/envConstants.js @@ -2,7 +2,7 @@ const dotenv = require("dotenv"); dotenv.config(); const constants = { - PORT: process.env.PORT || "3000", + PORT: process.env.PORT || "3001", DB_HOST: process.env.DB_HOST, DB_USER: process.env.DB_USER, DB_PORT: process.env.DB_PORT, diff --git a/package.json b/package.json index 37e8eba..1982b70 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "scripts": { - "start": "nodemon ./bin/www", + "start": "node ./bin/www", "import-csv": "node scripts/importCsvData.js", "test-api": "node scripts/testApi.js", "test-db": "node scripts/testDatabase.js"