Update frontend_deploy.yml to include npm install step #108
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: | |
# 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" |