chore: Update AWS credentials configuration and deploy script for kno… #71
Workflow file for this run
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: | |
- H010-UserHistory | |
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" | |
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-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 | |
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 | |
id: npm_install | |
run: npm install | |
working-directory: knowx | |
- name: SST Deploy | |
id: sst_deploy | |
run: sudo 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(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" |