Skip to content

[autofix.ci] apply automated fixes #692

[autofix.ci] apply automated fixes

[autofix.ci] apply automated fixes #692

Workflow file for this run

# This is a basic workflow to deploy your smile experiment
name: deploy
on:
workflow_dispatch:
inputs:
github_sha:
description: 'The GitHub SHA you want to deploy'
required: false
type: string
push:
branches-ignore:
- 'feat-*'
- 'fix-*'
- 'refactor-*'
- 'test-*'
- 'chore-*'
- 'style-*'
- 'docs-*'
- 'ci-*'
paths-ignore: # ignore any changes to the docs for this workflow or unimportant files
- 'docs/**'
- '.github/workflows/docs-deploy.yml'
- '**/*.md'
- 'LICENSE'
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: smile-deploy
cancel-in-progress: false
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
deploy:
# The type of runner that the job will run on
runs-on: ubuntu-latest
env:
GITHUB_COMMIT_MESSAGE: '${{ github.event.head_commit.message }}'
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
## TODO CHANGE THIS TO CHECK OUT THE BRANCH THAT WAS COMMITTED TO
- name: Checkout code commited to branch
uses: actions/checkout@v4
with:
# This will checkout the SHA if triggered by workflow_dispatch, or the commit's branch if triggered by a push
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.github_sha || github.ref }}
# setup node.js
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version-file: '.node_version'
# install node packages
- name: Install node dependencies
run: npm install
# accesses some git variables and processes them to be lower case/short/escaped
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v5
with:
short-length: 7
# Configure git-specific .env file
- name: Expose git-specific information to the Vite environment
env:
ENV_FILE: 'env/.env.git.local'
run: |
escape_quotes() {
# Get the input string
input="$1"
# Escape single quotes
input="${input//\'/\'}"
# Escape double quotes
input="${input//\"/\\\"}"
# Return the escaped string
echo "$input"
}
echo "------"
echo "# DO NOT EDIT THIS FILE IT IS AUTOMATICALLY GENERATED" > $ENV_FILE
if test -z "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}"
then
echo "VITE_PROJECT_NAME = unknown" >> $ENV_FILE
VITE_PROJECT_NAME='unknown'
else
echo "VITE_PROJECT_NAME = ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}" >> $ENV_FILE
VITE_PROJECT_NAME='${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}'
fi
if test -z "${{ env.GITHUB_SHA_SHORT }}"
then
echo "VITE_GIT_HASH = x0x0x0x0" >> $ENV_FILE
VITE_GIT_HASH='x0x0x0x0'
else
echo "VITE_GIT_HASH = ${{ env.GITHUB_SHA_SHORT }}" >> $ENV_FILE
VITE_GIT_HASH='${{ env.GITHUB_SHA_SHORT }}'
fi
if test -z "${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}"
then
echo "VITE_GIT_OWNER = unknown_owner" >> $ENV_FILE
VITE_GIT_OWNER='unknown_owner'
else
echo "VITE_GIT_OWNER = ${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}" >> $ENV_FILE
VITE_GIT_OWNER='${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}'
fi
if test -z "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}"
then
echo "VITE_GIT_REPO_NAME = unknown_repo" >> $ENV_FILE
VITE_GIT_REPO_NAME='unknown_repo'
else
echo "VITE_GIT_REPO_NAME = ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}" >> $ENV_FILE
VITE_GIT_REPO_NAME='${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}'
fi
if test -z "${{ env.GITHUB_REF_SLUG }}"
then
echo "VITE_GIT_BRANCH_NAME = unknown_branch" >> $ENV_FILE
VITE_GIT_BRANCH_NAME='unknown_branch'
else
echo "VITE_GIT_BRANCH_NAME = ${{ env.GITHUB_REF_SLUG }}" >> $ENV_FILE
VITE_GIT_BRANCH_NAME='${{ env.GITHUB_REF_SLUG }}'
fi
if test -z "${{ github.event.head_commit.message }}"
then
echo "VITE_GIT_LAST_MSG = (no commit message)" >> $ENV_FILE
VITE_GIT_LAST_MSG='(no commit message)'
else
echo "VITE_GIT_LAST_MSG = $GITHUB_COMMIT_MESSAGE" >> $ENV_FILE
VITE_GIT_LAST_MSG="$GITHUB_COMMIT_MESSAGE"
fi
echo "VITE_DEPLOY_BASE_PATH = '/${VITE_GIT_OWNER}/${VITE_GIT_REPO_NAME}/${VITE_GIT_BRANCH_NAME}/'" >> $ENV_FILE
CODENAME=$(node scripts/codenamize.cjs "/${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}/${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}/${{ env.GITHUB_REF_SLUG }}")
echo "VITE_CODE_NAME = ${CODENAME}" >> $ENV_FILE
cat $ENV_FILE
# put the full path name in VITE_DEPLOY_BASE_PATH
# Configure secure information configuration
- name: Expose secret information to the Vite environment
env:
SECRET_APP_CONFIG: ${{ secrets.SECRET_APP_CONFIG }}
SECRET_ENV_FILE: 'env/.env.local'
run: |
echo "------"
echo $SECRET_APP_CONFIG | base64 --decode > $SECRET_ENV_FILE
# load the environment
- name: Load the github dotenv file
id: dotenv_github
uses: falti/dotenv-action@v1.1
with:
path: 'env/.env.git.local'
- name: Load the general config dotenv file
id: dotenv_config
uses: falti/dotenv-action@v1.1
with:
path: './env/.env.local'
# echo all the environment variables
- name: echo the environment variables
run: |
echo "deploy url: ${{ secrets.EXP_DEPLOY_PATH }}${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }}"
# place the deploy settings into the environment files
# this one needs to be made available to vite.config.js
- name: create deploy file
env:
DEPLOY_ENV_FILE: 'env/.env.deploy.local'
run: |
echo "VITE_DEPLOY_URL = 'https://${{ secrets.EXP_DEPLOY_HOST }}${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }}'" > $DEPLOY_ENV_FILE
echo 'VITE_CODE_NAME_DEPLOY_URL = "https://${{ secrets.EXP_DEPLOY_HOST }}/e/${{ steps.dotenv_github.outputs.VITE_CODE_NAME }}"' >> $DEPLOY_ENV_FILE
cat $DEPLOY_ENV_FILE
# Build the web app
- name: Build web app
run: |
if ${{ github.ref == 'refs/heads/presentation' || secrets.EXP_DEPLOY_MODE == 'presentation' }}; then
npm run build:present
elif ${{ secrets.EXP_DEPLOY_MODE == 'development' }}; then
npm run build:dev
else
npm run build
fi
- name: list files
run: |
ls -la ./dist
ls -la ./dist/assets
# make remote folder if necessar
- name: create the remote folders if they don't exist
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EXP_DEPLOY_HOST }}
username: ${{ secrets.EXP_DEPLOY_USER }}
key: ${{ secrets.EXP_DEPLOY_KEY }}
port: ${{ secrets.EXP_DEPLOY_PORT }}
script: mkdir -p ${{ secrets.EXP_DEPLOY_PATH }}/${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }}; mkdir -p ${{ secrets.EXP_DEPLOY_PATH }}/e; mkdir -p ${{ secrets.EXP_DEPLOY_PATH }}/hashes
# link to code name path
- name: link to the code name path
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EXP_DEPLOY_HOST }}
username: ${{ secrets.EXP_DEPLOY_USER }}
key: ${{ secrets.EXP_DEPLOY_KEY }}
port: ${{ secrets.EXP_DEPLOY_PORT }}
script: rm ${{ secrets.EXP_DEPLOY_PATH }}/e/${{ steps.dotenv_github.outputs.VITE_CODE_NAME }}; ln -sf ${{ secrets.EXP_DEPLOY_PATH }}/${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }} ${{ secrets.EXP_DEPLOY_PATH }}/e/${{ steps.dotenv_github.outputs.VITE_CODE_NAME }}
# Deploy files to web server
- name: rsync to server
uses: burnett01/rsync-deployments@5.2
with:
switches: -avrz --delete
path: dist/
remote_path: ${{ secrets.EXP_DEPLOY_PATH }}/${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }} # this should be configured with branch name and versioning
remote_host: ${{ secrets.EXP_DEPLOY_HOST }}
remote_port: ${{ secrets.EXP_DEPLOY_PORT }}
remote_user: ${{ secrets.EXP_DEPLOY_USER }}
remote_key: ${{ secrets.EXP_DEPLOY_KEY }}
# send a notification at the end
- name: Send notification to lab slack
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: ${{ env.SLACK_WEBHOOK_URL != '' }} # this should only run if SLACK_WEBHOOK exists
id: slack
uses: slackapi/slack-github-action@v1.25.0
with:
# This data can be any valid JSON from a previous step in the GitHub Action
payload: |
{
"github_username": "${{ github.actor }}",
"deploy_url": "https://${{ secrets.EXP_DEPLOY_HOST }}${{ steps.dotenv_github.outputs.VITE_DEPLOY_BASE_PATH }} although you should tell people https://${{ secrets.EXP_DEPLOY_HOST }}/e/${{ steps.dotenv_github.outputs.VITE_CODE_NAME }} . Your QR Code is to the site is here: https://${{ secrets.EXP_DEPLOY_HOST }}/e/${{ steps.dotenv_github.outputs.VITE_CODE_NAME }}/qr.svg",
"github_hash": "https://github.com/${{ steps.dotenv_github.outputs.VITE_GIT_OWNER }}/${{ steps.dotenv_github.outputs.VITE_GIT_REPO_NAME }}/commit/${{ steps.dotenv_github.outputs.VITE_GIT_HASH }}"
}