chore: Update frontend_deploy.yml to use npm run dev instead of npm s… #116
This file contains 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: KnowX Frontend Deploy | |
on: | |
push: | |
branches: | |
- tests-Diego | |
permissions: | |
actions: write | |
id-token: write | |
contents: read | |
jobs: | |
test-e2e: | |
name: "Frontend E2E Tests" | |
environment: prod | |
runs-on: ubuntu-latest | |
env: | |
API_ROOT_ROUTE: ${{ secrets.API_ROOT_ROUTE }} | |
DB_URL: ${{ secrets.DB_URL }} | |
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} | |
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} | |
GITHUB_ID: ${{ secrets.NEXTAUTH_GITHUB_ID }} | |
GITHUB_SECRET: ${{ secrets.NEXTAUTH_GITHUB_SECRET }} | |
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
EMAIL_SERVER_HOST: ${{ secrets.EMAIL_SERVER_HOST }} | |
EMAIL_SERVER_PORT: ${{ secrets.EMAIL_SERVER_PORT }} | |
EMAIL_SERVER_USER: ${{ secrets.EMAIL_SERVER_USER }} | |
EMAIL_SERVER_PASSWORD: ${{ secrets.EMAIL_SERVER_PASSWORD }} | |
EMAIL_FROM: ${{ secrets.EMAIL_FROM }} | |
SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
working-directory: knowx | |
- name: Install Dependencies | |
run: npm install | |
working-directory: knowx | |
- name: Make envfile | |
uses: SpicyPizza/[email protected] | |
with: | |
envkey_API_ROOT_ROUTE: ${{ secrets.API_ROOT_ROUTE }} | |
envkey_DB_URL: ${{ secrets.DB_URL }} | |
envkey_NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} | |
envkey_NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} | |
envkey_GITHUB_ID: ${{ secrets.NEXTAUTH_GITHUB_ID }} | |
envkey_GITHUB_SECRET: ${{ secrets.NEXTAUTH_GITHUB_SECRET }} | |
envkey_GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
envkey_GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
envkey_EMAIL_SERVER_HOST: ${{ secrets.EMAIL_SERVER_HOST }} | |
envkey_EMAIL_SERVER_PORT: ${{ secrets.EMAIL_SERVER_PORT }} | |
envkey_EMAIL_SERVER_USER: ${{ secrets.EMAIL_SERVER_USER }} | |
envkey_EMAIL_SERVER_PASSWORD: ${{ secrets.EMAIL_SERVER_PASSWORD }} | |
envkey_EMAIL_FROM: ${{ secrets.EMAIL_FROM }} | |
envkey_SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }} | |
directory: knowx | |
- name: Run Tests | |
uses: cypress-io/github-action@v6 | |
with: | |
build: npm run build | |
start: npm run dev | |
working-directory: knowx | |
env: | |
CYPRESS_GITHUB_USERNAME: ${{ secrets.EMAIL_SERVER_USER }} | |
CYPRESS_GITHUB_PASSWORD: ${{ secrets.EMAIL_SERVER_PASSWORD }} | |
CYPRESS_COOKIE_NAME: "next-auth.session-token" | |
CYPRESS_SITE_NAME: ${{ secrets.NEXTAUTH_URL }} | |
CYPRESS_NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} | |
- name: Send Deploy Failure Message | |
if: failure() | |
run: curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=💥 Front Testing Failed" | |
- name: Send Deploy Success Message | |
if: success() | |
run: | | |
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🧪 Front Testing Successful" | |
unit-tests: | |
name: "Frontend Unit Tests" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: knowx | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Node setup | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: install dependencies | |
run: npm install | |
- name: run tests | |
run: npm run test:ci | |
# - name: Upload coverage reports to Codecov | |
# uses: codecov/[email protected] | |
# with: | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
# fail_ci_if_error: true | |
deploy-dev: | |
needs: [test-e2e, unit-tests] | |
name: "Deploy to AWS - DEV" | |
environment: dev | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cofigure AWS | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: us-east-1 | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Install SST | |
run: | | |
ls | |
wget https://github.com/sst/ion/releases/download/v0.0.193/sst-linux-amd64.deb | |
sudo dpkg -i sst-linux-amd64.deb | |
sst version | |
- name: Copy Secrets | |
run: | | |
sst secret set APIRootRoute $API_ROOT_ROUTE --stage dev | |
sst secret set DBUrl $DB_URL --stage dev | |
sst secret set NextAuthUrl $NEXTAUTH_URL --stage dev | |
sst secret set NextAuthSecret $NEXTAUTH_SECRET --stage dev | |
sst secret set GithubId $GITHUB_ID --stage dev | |
sst secret set GithubSecret $GITHUB_SECRET --stage dev | |
sst secret set GoogleClientId $GOOGLE_CLIENT_ID --stage dev | |
sst secret set GoogleClientSecret $GOOGLE_CLIENT_SECRET --stage dev | |
sst secret set EmailServerHost $EMAIL_SERVER_HOST --stage dev | |
sst secret set EmailServerPort $EMAIL_SERVER_PORT --stage dev | |
sst secret set EmailServerUser $EMAIL_SERVER_USER --stage dev | |
sst secret set EmailServerPassword $EMAIL_SERVER_PASSWORD --stage dev | |
sst secret set EmailFrom $EMAIL_FROM --stage dev | |
sst secret set SendgridApiKey $SENDGRID_API_KEY --stage dev | |
working-directory: knowx | |
env: | |
API_ROOT_ROUTE: ${{ secrets.API_ROOT_ROUTE }} | |
DB_URL: ${{ secrets.DB_URL }} | |
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} | |
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} | |
GITHUB_ID: ${{ secrets.NEXTAUTH_GITHUB_ID }} | |
GITHUB_SECRET: ${{ secrets.NEXTAUTH_GITHUB_SECRET }} | |
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
EMAIL_SERVER_HOST: ${{ secrets.EMAIL_SERVER_HOST }} | |
EMAIL_SERVER_PORT: ${{ secrets.EMAIL_SERVER_PORT }} | |
EMAIL_SERVER_USER: ${{ secrets.EMAIL_SERVER_USER }} | |
EMAIL_SERVER_PASSWORD: ${{ secrets.EMAIL_SERVER_PASSWORD }} | |
EMAIL_FROM: ${{ secrets.EMAIL_FROM }} | |
SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }} | |
- name: NPM install | |
run: npm install | |
working-directory: knowx | |
- name: Deploy | |
id: deploy | |
run: | | |
sst deploy --stage dev > deployment_output.txt | |
echo "deployment_output_path=deployment_output.txt" >> $GITHUB_OUTPUT | |
working-directory: knowx | |
- name: Extract URL from Deployment Output | |
id: extract_url | |
run: | | |
output=$(cat ${{ steps.deploy.outputs.deployment_output_path }}) | |
urls=$(echo "$output" | grep -oE 'https?://[^ ]+') | |
last_url=$(echo "$urls" | tail -n1) | |
echo "url=$last_url" >> $GITHUB_OUTPUT | |
working-directory: knowx | |
- name: Send Deploy Failure Message | |
if: failure() | |
run: curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🚨 Frontend Deploy Failed" | |
- name: Send Deploy Success Message | |
if: success() | |
run: | | |
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=✅ Frontend DEV Deploy Successful" | |
url=${{ steps.extract_url.outputs.url }} | |
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🚀 Deployment DEV URL: $url" | |
deploy-prod: | |
needs: [test-e2e, unit-tests, deploy-dev] | |
name: "Deploy to AWS - PRODUCTION" | |
environment: dev | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cofigure AWS | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: us-east-1 | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Install SST | |
run: | | |
ls | |
wget https://github.com/sst/ion/releases/download/v0.0.193/sst-linux-amd64.deb | |
sudo dpkg -i sst-linux-amd64.deb | |
sst version | |
- name: Copy Secrets | |
run: | | |
sst secret set APIRootRoute $API_ROOT_ROUTE --stage prod | |
sst secret set DBUrl $DB_URL --stage prod | |
sst secret set NextAuthUrl $NEXTAUTH_URL --stage prod | |
sst secret set NextAuthSecret $NEXTAUTH_SECRET --stage prod | |
sst secret set GithubId $GITHUB_ID --stage prod | |
sst secret set GithubSecret $GITHUB_SECRET --stage prod | |
sst secret set GoogleClientId $GOOGLE_CLIENT_ID --stage prod | |
sst secret set GoogleClientSecret $GOOGLE_CLIENT_SECRET --stage prod | |
sst secret set EmailServerHost $EMAIL_SERVER_HOST --stage prod | |
sst secret set EmailServerPort $EMAIL_SERVER_PORT --stage prod | |
sst secret set EmailServerUser $EMAIL_SERVER_USER --stage prod | |
sst secret set EmailServerPassword $EMAIL_SERVER_PASSWORD --stage prod | |
sst secret set EmailFrom $EMAIL_FROM --stage prod | |
sst secret set SendgridApiKey $SENDGRID_API_KEY --stage prod | |
working-directory: knowx | |
env: | |
API_ROOT_ROUTE: ${{ secrets.API_ROOT_ROUTE }} | |
DB_URL: ${{ secrets.DB_URL }} | |
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} | |
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} | |
GITHUB_ID: ${{ secrets.NEXTAUTH_GITHUB_ID }} | |
GITHUB_SECRET: ${{ secrets.NEXTAUTH_GITHUB_SECRET }} | |
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
EMAIL_SERVER_HOST: ${{ secrets.EMAIL_SERVER_HOST }} | |
EMAIL_SERVER_PORT: ${{ secrets.EMAIL_SERVER_PORT }} | |
EMAIL_SERVER_USER: ${{ secrets.EMAIL_SERVER_USER }} | |
EMAIL_SERVER_PASSWORD: ${{ secrets.EMAIL_SERVER_PASSWORD }} | |
EMAIL_FROM: ${{ secrets.EMAIL_FROM }} | |
SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }} | |
- name: NPM install | |
run: npm install | |
working-directory: knowx | |
- name: Deploy | |
id: deploy | |
run: | | |
sst deploy --stage prod > deployment_output.txt | |
echo "deployment_output_path=deployment_output.txt" >> $GITHUB_OUTPUT | |
working-directory: knowx | |
- name: Extract URL from Deployment Output | |
id: extract_url | |
run: | | |
output=$(cat ${{ steps.deploy.outputs.deployment_output_path }}) | |
urls=$(echo "$output" | grep -oE 'https?://[^ ]+') | |
last_url=$(echo "$urls" | tail -n1) | |
echo "url=$last_url" >> $GITHUB_OUTPUT | |
working-directory: knowx | |
- name: Send Deploy Failure Message | |
if: failure() | |
run: curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🚨 Frontend PROD Deploy Failed" | |
- name: Send Deploy Success Message | |
if: success() | |
run: | | |
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=✅ Frontend PROD Deploy Successful" | |
url=${{ steps.extract_url.outputs.url }} | |
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🚀 Deployment PROD URL: $url" |