Emphasized the game description, and manually corrected two errors in… #28
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
# This is a basic workflow to deploy your smile experiment | |
name: DEPLOY | |
# Controls when the workflow will run | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches-ignore: | |
- analysis # want this to be all branches eventually | |
- models | |
- docs | |
paths-ignore: # ignore any changes to the docs for this workflow or unimportant files | |
- 'docs/**' | |
- 'README.md' | |
- 'LICENSE' | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# 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 | |
# 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 committed to branch | |
uses: actions/checkout@v3 | |
# setup node.js | |
- name: Setup node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.15.1 # this is what i'm using locally | |
# install node packages | |
- name: Install node dependencies | |
run: npm install | |
# install node packages | |
- name: Build css from scss | |
run: npm run css-build | |
# accesses some git variables and processes them to be lower case/short/escaped | |
- name: Inject slug/short variables | |
uses: rlespinasse/[email protected] | |
# 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.event.head_commit.message }}" >> $ENV_FILE | |
VITE_GIT_LAST_MSG='${{ github.event.head_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.js "/${{ 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/[email protected] | |
with: | |
path: 'env/.env.git.local' | |
- name: Load the general config dotenv file | |
id: dotenv_config | |
uses: falti/[email protected] | |
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 css files | |
run: npm run css-build | |
# Build the web app | |
- name: Build web app | |
run: | | |
if ${{ github.ref == 'refs/heads/presentation'}}; then | |
npm run build:present | |
else | |
npm run build | |
fi | |
# 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/[email protected] | |
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/[email protected] | |
with: | |
# This data can be any valid JSON from a previous step in the GitHub Action | |
payload: | | |
{ | |
"github_username": "${{ steps.dotenv_github.outputs.VITE_GIT_OWNER }}", | |
"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 }}", | |
"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 }}" | |
} |