Build, test and deploy website (if needed) #44
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: 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. |