added search and GA #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Strapi & Next.js via SSH | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup SSH | |
| uses: webfactory/ssh-agent@v0.9.0 | |
| with: | |
| ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| - name: Deploy and Build via SSH | |
| env: | |
| SSH_HOST: 152.67.0.194 | |
| run: | | |
| ssh -o StrictHostKeyChecking=no ubuntu@$SSH_HOST << 'EOF' | |
| # Get System and User Envs | |
| source ~/.zshrc | |
| echo "Starting deployment on server..." | |
| APP_DIR="/var/www/bitmutex-website" | |
| REPO_URL="https://github.com/aamitn/bitmutex-website.git" | |
| # Check if the directory exists and clone if it doesn't | |
| if [ ! -d "$APP_DIR" ]; then | |
| echo "Directory $APP_DIR does not exist. Cloning repository..." | |
| cd /var/www/ | |
| git clone "$REPO_URL" "$APP_DIR" | |
| fi | |
| cd "$APP_DIR" | |
| echo "Discarding local changes..." | |
| git reset --hard | |
| # Remove all untracked files except uploads | |
| git clean -fd -e "${APP_DIR}/server/public/uploads" -e "${APP_DIR}/server/public/uploads/*" | |
| echo "Syncing repository..." | |
| pnpm run repo:sync | |
| echo "Setting environment variables..." | |
| # Root .env | |
| echo "CLOUDFLARE_R2_ACCOUNT_ID=${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }}" > ./.env | |
| echo "CLOUDFLARE_R2_ACCESS_KEY_ID=${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }}" >> ./.env | |
| echo "CLOUDFLARE_R2_SECRET_ACCESS_KEY=${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }}" >> ./.env | |
| echo "CLOUDFLARE_R2_BUCKET_NAME=bitmutex-website-strapi-backup" >> ./.env | |
| # Client .env | |
| mkdir -p ./client | |
| echo "STRAPI_BASE_URL=https://strapiadmin.bitmutex.com" > ./client/.env | |
| echo "NEXT_PUBLIC_STRAPI_BASE_URL=https://strapiadmin.bitmutex.com" >> ./client/.env | |
| echo "PREVIEW_SECRET=${{ secrets.PREVIEW_SECRET }}" >> ./client/.env | |
| echo "NEXT_PUBLIC_BASE_URL=https://bitmutex.com" >> ./client/.env | |
| echo "HOST=localhost" >> ./client/.env | |
| echo "NEXT_PUBLIC_STATUS_PAGE_URL=https://status.bitmutex.com" >> ./client/.env | |
| echo "SMTP_HOST=smtp.zoho.in" >> ./client/.env | |
| echo "SMTP_PORT=587" >> ./client/.env | |
| echo "SMTP_USER=noreply@bitmutex.com" >> ./client/.env | |
| echo "SMTP_PASS=${{ secrets.SMTP_PASS }}" >> ./client/.env | |
| echo "NEXT_PUBLIC_APPOINTMENT_URL=https://cal.com/bitmutex" >> ./client/.env | |
| echo "ADMIN_EMAIL=amitnandileo@gmail.com" >> ./client/.env | |
| echo "NODE_ENV=production" >> ./client/.env | |
| echo "IMAGE_HOSTNAME=localhost" >> ./client/.env | |
| echo "NEXT_PUBLIC_GITHUB_TOKEN=${{ secrets.NEXT_PUBLIC_GITHUB_TOKEN }}" >> ./client/.env | |
| echo "NEXT_PUBLIC_ALGOLIA_APP_ID=${{ secrets.NEXT_PUBLIC_ALGOLIA_APP_ID }}" >> ./client/.env | |
| echo "NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY=${{ secrets.NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY }}" >> ./client/.env | |
| # Server .env with base64 decoding for admin and db passwords | |
| mkdir -p ./server | |
| echo "PORT=1337" > ./server/.env | |
| echo "APP_KEYS=${{ secrets.APP_KEYS }}" >> ./server/.env | |
| echo "API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}" >> ./server/.env | |
| echo "ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET }}" >> ./server/.env | |
| echo "TRANSFER_TOKEN_SALT=${{ secrets.TRANSFER_TOKEN_SALT }}" >> ./server/.env | |
| echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> ./server/.env | |
| echo "CLIENT_URL=http://localhost:3000" >> ./server/.env | |
| echo "DISCORD_BOT_TOKEN=${{ secrets.DISCORD_BOT_TOKEN }}" >> ./server/.env | |
| echo "DISCORD_CHANNEL_ID=1349063933599678618" >> ./server/.env | |
| echo "DISCORD_GUILD_ID=1349059955885473823" >> ./server/.env | |
| echo "DISCORD_ADMIN_ID=146662188122243072" >> ./server/.env | |
| echo "DATABASE_CLIENT=postgres" >> ./server/.env | |
| echo "DATABASE_NAME=${{ secrets.DATABASE_NAME }}" >> ./server/.env | |
| echo "DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}" >> ./server/.env | |
| # Decode base64 encoded passwords | |
| DATABASE_PASSWORD=$(echo "${{ secrets.DATABASE_PASSWORD_BASE64 }}" | base64 -d) | |
| ADMIN_PASSWORD=$(echo "${{ secrets.ADMIN_PASSWORD_BASE64 }}" | base64 -d) | |
| # Use printf to handle special characters properly | |
| printf 'DATABASE_PASSWORD=%s\n' "$DATABASE_PASSWORD" >> ./server/.env | |
| echo "SMTP_USERNAME=smtp.zoho.in" >> ./server/.env | |
| echo "SMTP_PASSWORD=${{ secrets.SMTP_PASS }}" >> ./server/.env | |
| echo "SMTP_DEFAULT_FROM=noreply@bitmutex.com" >> ./server/.env | |
| echo "SMTP_DEFAULT_REPLY_TO=support@bitmtuex.com" >> ./server/.env | |
| echo "AUTO_CREATE_ADMIN=true" >> ./server/.env | |
| # Use printf to handle special characters properly | |
| printf 'ADMIN_PASSWORD=%s\n' "$ADMIN_PASSWORD" >> ./server/.env | |
| # Algolia Search Settings | |
| echo "ALGOLIA_APP_ID=${{ secrets.ALGOLIA_APP_ID }}" >> ./server/.env | |
| echo "ALGOLIA_ADMIN_KEY=${{ secrets.ALGOLIA_ADMIN_KEY }}" >> ./server/.env | |
| echo "Installing root dependencies..." | |
| pnpm install | |
| echo "Installing client & server dependencies..." | |
| pnpm run spawn | |
| echo "Stopping Strapi as it need to be restarted during build process..." | |
| pm2 stop bitmutex-strapi | |
| echo "Building the application..." | |
| pnpm run build | |
| echo "Reloading PM2..." | |
| pm2 reload ecosystem.config.cjs | |
| echo "Deployment complete!" | |
| EOF |