diff --git a/.github/workflows/ci-master.yml b/.github/workflows/ci-master.yml new file mode 100644 index 0000000..9189524 --- /dev/null +++ b/.github/workflows/ci-master.yml @@ -0,0 +1,47 @@ +name: CI - master + +on: + push: + branches: + - master + +jobs: + ci-tests: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Cache node_modules + uses: actions/cache@v3 + id: tests + env: + cache-name: tests + with: + path: ./node_modules/ + key: tests-${{ hashFiles('./package-lock.json') }} + restore-keys: tests-${{ hashFiles('./package-lock.json') }} + timeout-minutes: 4 + - name: Install dependencies + if: steps.tests.outputs.cache-hit != true + run: npm ci + - name: Build + run: npm run build + - name: Run tests + run: npm test + + publish-pages: + runs-on: ubuntu-latest + needs: ci-tests + if: success() + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: master + - name: Configure Git + run: | + git config user.name "Allen" + git config user.email "accounts@stupid-genius.com" + - name: Publish to pages branch + run: ./publish.sh + diff --git a/build.sh b/build.sh index 3016285..3ec3c42 100755 --- a/build.sh +++ b/build.sh @@ -12,5 +12,7 @@ else echo SPA build fi cp app/client/* dist/client/ 2> /dev/null || : -cp -R app/client/images dist/client/ +if [ -d "app/client/images" ] && [ -n "app/client/images/*" ]; then + cp -R app/client/images dist/client/ +fi echo Build complete diff --git a/package.json b/package.json index 99afef5..4118220 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "license": "GPL-3.0", "main": "app/server/index.js", "engines": { - "node": "^16.14.0" + "node": ">=16" }, "dependencies": { "ejs": "2.5.5", diff --git a/publish.sh b/publish.sh new file mode 100755 index 0000000..962d9af --- /dev/null +++ b/publish.sh @@ -0,0 +1,36 @@ +#!/bin/bash +#publish to gh-pages + +set -e +shopt -s extglob + +ORIGBRANCH=$(git rev-parse --abbrev-ref HEAD) +cleanup(){ + set +e + git switch $ORIGBRANCH + git branch -D publish + echo Cleanup complete +} +trap cleanup INT HUP TERM QUIT ABRT EXIT + +MESG=$(git show --no-patch --format=%s master) +echo Preparing repo +git checkout --orphan publish +npm ci +NODE_ENV=production npm run build spa +rm -rf ./!(dist) || : +rm -rf .github +rm -f .[^.]* || : +mv dist/client/* . +rmdir dist/client +rmdir dist +git add -A +git commit -m "Prepping to publish ($(git rev-parse --short master))" + +echo Publish to gh-pages +git fetch origin gh-pages:gh-pages +git checkout gh-pages +git read-tree -mu publish +git commit -m "Publishing: $MESG" +git push origin gh-pages +echo Publishing complete