Skip to content

Build, test and deploy website (if needed) #44

Build, test and deploy website (if needed)

Build, test and deploy website (if needed) #44

name: build_test_deploy
run-name: Build, test and deploy website (if needed)
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# with:
# fetch-depth: 0
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: 20
cache: yarn
- name: Next cache
uses: actions/cache@v3
with:
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
path: |
${{ github.workspace }}/.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package.json') }}
- name: Yarn
run: yarn
- name: Build
run: yarn build
- name: "Fix security.txt"
run: mkdir out/.well-known && (cd out/.well-known && ln -s ../security.txt) && ls -al out/.well-known
- name: ".htaccess"
run: cp .htaccess out/
- name: Test HTML code
run: |
sudo apt-get update -y
sudo apt-get install python3-pip libcurl4 -y
pip3 install html5validator
sudo gem install --no-document html-proofer
./proof_html.sh || exit 0
- name: rsync deploy
uses: burnett01/rsync-deployments@5.2.1
if: ${{ github.ref == 'refs/heads/main' }}
with:
switches: -avzr --delete
path: out/
remote_path: htdocs/beta
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_user: ${{ secrets.DEPLOY_USER }}
remote_key: ${{ secrets.DEPLOY_KEY }}
- name: Deploy GiutHub pages
uses: JamesIves/github-pages-deploy-action@v4
if: ${{ github.ref == 'refs/heads/main' }}
with:
folder: out/admin # The folder the action should deploy.