Skip to content

Update frontend_deploy.yml to include npm install step #108

Update frontend_deploy.yml to include npm install step

Update frontend_deploy.yml to include npm install step #108

name: KnowX Frontend Deploy
on:
push:
branches:
- tests-Diego
permissions:
actions: write
id-token: write
contents: read
jobs:
# test:
# name: "Frontend Tests"
# environment: prod
# runs-on: ubuntu-latest
# 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 start
# working-directory: knowx
# - 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"
deploy:
# needs: test
name: "Deploy to AWS"
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
sst secret set DBUrl $DB_URL
sst secret set NextAuthUrl $NEXTAUTH_URL
sst secret set NextAuthSecret $NEXTAUTH_SECRET
sst secret set GithubId $GITHUB_ID
sst secret set GithubSecret $GITHUB_SECRET
sst secret set GoogleClientId $GOOGLE_CLIENT_ID
sst secret set GoogleClientSecret $GOOGLE_CLIENT_SECRET
sst secret set EmailServerHost $EMAIL_SERVER_HOST
sst secret set EmailServerPort $EMAIL_SERVER_PORT
sst secret set EmailServerUser $EMAIL_SERVER_USER
sst secret set EmailServerPassword $EMAIL_SERVER_PASSWORD
sst secret set EmailFrom $EMAIL_FROM
sst secret set SendgridApiKey $SENDGRID_API_KEY
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
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 Deploy Successful"
url=${{ steps.extract_url.outputs.url }}
curl -s -X POST "${{ secrets.DISCORD_WEBHOOK }}" -d "content=🚀 Deployment URL: $url"
# dev_deploy:
# # needs: test
# 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-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# role-duration-seconds: 1200
# aws-region: us-east-1
# # - name: Caller Identity
# # run: aws sts get-caller-identity
# # - name: Setup AWS
# # run: |
# # sudo mkdir ~/.aws
# # sudo chmod 777 ~/.aws
# # sudo printf "[default]\nregion = us-east-1" > ~/.aws/config.txt
# # sudo printf "[default]\naws_access_key_id = ${{ secrets.AWS_ACCESS_KEY_ID }}\naws_secret_access_key = ${{ secrets.AWS_SECRET_ACCESS_KEY }}" > ~/.aws/credentials.txt
# - name: Install SST
# run: |
# wget https://github.com/sst/ion/releases/download/v0.0./sst-linux-amd64.deb
# sudo dpkg -i sst-linux-amd64.deb
# sst version
# working-directory: knowx
# - name: Check secrets
# run: |
# echo $API_ROOT_ROUTE >> secrets.txt
# echo $DB_URL >> secrets.txt
# echo $NEXTAUTH_URL >> secrets.txt
# echo $NEXTAUTH_SECRET >> secrets.txt
# echo $GITHUB_ID >> secrets.txt
# echo $GITHUB_SECRET >> secrets.txt
# echo $GOOGLE_CLIENT_ID >> secrets.txt
# echo $GOOGLE_CLIENT_SECRET >> secrets.txt
# echo $EMAIL_SERVER_HOST >> secrets.txt
# echo $EMAIL_SERVER_PORT >> secrets.txt
# echo $EMAIL_SERVER_USER >> secrets.txt
# echo $EMAIL_SERVER_PASSWORD >> secrets.txt
# echo $EMAIL_FROM >> secrets.txt
# echo $SENDGRID_API_KEY >> secrets.txt
# 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: 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
# id: npm_install
# run: npm install
# working-directory: knowx
# - name: AWS check
# run: curl http://169.254.169.254/latest/meta-data
# working-directory: knowx
# - name: SST Deploy
# id: sst_deploy
# run: sudo sst deploy --stage dev
# 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(DEV) 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"
# production_deploy:
# needs: dev_deploy
# name: "Deploy to AWS - PRODUCTION"
# environment: prod
# 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: |
# wget https://github.com/sst/ion/releases/download/v0.0.193/sst-linux-amd64.deb
# sudo dpkg -i sst-linux-amd64.deb
# sst version
# working-directory: knowx
# - 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: Deploy
# id: deploy
# run: |
# npm install
# sudo 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"