Skip to content

Merge pull request #162 from wizelineacademy/development #19

Merge pull request #162 from wizelineacademy/development

Merge pull request #162 from wizelineacademy/development #19

Workflow file for this run

name: CICD
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
Build:
name: Build
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"
- name: Install dependencies
run: |
npm install -g pnpm && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env
- name: Check environment variables
run: |
cat apps/web/.env
- name: Build
run: |
pnpm build
- name: Check build
run: |
ls
Release:
name: Release
needs: [Build, DeployStagingWeb, DeployStagingDocs]
permissions:
contents: write
issues: write
pull-requests: write
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: ./.github/workflows/release.yml
Check:
name: Check PR
permissions:
contents: write
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"
- name: Install dependencies
run: |
npm install -g pnpm && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env
- name: Check environment variables
run: |
cat apps/web/.env
DeployStagingWeb:
name: Deploy to Staging Web
permissions:
contents: write
if: github.event.ref == 'refs/heads/main'
needs: [Build]
runs-on: ubuntu-latest
environment:
name: Production Web
url: "http://52.54.237.87:3000"
steps:
- uses: actions/checkout@v2
- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"
- name: Move to docs directory
run: cd apps/web
- name: Check current directory
run: |
pwd
- name: Install dependencies
run: |
npm install -g pnpm
cd apps/web && pnpm install --no-frozen-lockfile
- name: Setup environment variables
run: echo "${{ secrets.APPS_WEB_ENV }}" >> apps/web/.env
- name: Check environment variables
run: |
cat apps/web/.env
- name: Build
run: |
cd apps/web && pnpm build
- name: Clean LightSail directory
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "rm -rf apps/web"
- name: Deploy to Lightsail
run: |
sudo apt-get install -y sshpass
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" rsync -avz apps/web [email protected]:/home/ubuntu/apps
- name: Set custom package.json
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && rm package.json && mv package.prod.json package.json"
- name: Install server dependencies
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && pnpm install"
- name: Prisma generate
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && npx prisma generate"
- name: Start server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/web && pm2 stop web && pm2 delete web && pm2 start pnpm --name "web" -- start"
- name: Remove web node_modules
run: |
rm -rf apps/web/node_modules
- name: Create output artifact
uses: actions/upload-artifact@v2
with:
name: web
path: apps/web
DeployStagingDocs:
name: Deploy to Staging Docs
permissions:
contents: write
if: github.event.ref == 'refs/heads/main'
needs: [Build]
runs-on: ubuntu-latest
environment:
name: Production Docs
url: "http://52.54.237.87:3001"
steps:
- uses: actions/checkout@v2
- name: Install Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "18.x"
- name: Move to docs directory
run: cd apps/docs
- name: Check current directory
run: |
pwd
- name: Install dependencies
run: |
npm install -g pnpm
cd apps/web && pnpm install --no-frozen-lockfile
- name: Build
run: |
cd apps/docs && pnpm build
- name: Clean LightSail directory
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "rm -rf apps/docs"
- name: Deploy to Lightsail
run: |
sudo apt-get install -y sshpass
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" rsync -avz --exclude node_modules apps/docs [email protected]:/home/ubuntu/apps
- name: Set custom package.json
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && rm package.json && mv package.prod.json package.json"
- name: Install server dependencies
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && pnpm install"
- name: Start server
run: |
sshpass -p "${{ secrets.LIGHTSAIL_SSH_PASS }}" ssh -o StrictHostKeyChecking=no [email protected] "cd apps/docs && pm2 stop docs && pm2 delete docs && pm2 start pnpm --name "docs" -- start -- -p 3001"
- name: Remove docs node_modules
run: |
rm -rf apps/docs/node_modules
- name: Create output artifact
uses: actions/upload-artifact@v2
with:
name: docs
path: apps/docs