Added more information about CWI #744
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 the name of our workflow. | |
# Github will show it on its Website UI | |
name: deploy | |
# This configures our workflow to be triggered | |
# only when we push to the master branch | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
types: [opened, synchronize, reopened, closed] | |
branches: | |
- master | |
workflow_dispatch: | |
env: | |
RUBY_VERSION: "3.1.2" | |
BUNDLER_VERSION: "2.3.21" | |
# Here is where we define our jobs. | |
# Which means the tasks we want Github to execute | |
jobs: | |
build: | |
name: build | |
# Here we specify in whith OS we want it to run | |
runs-on: ubuntu-latest | |
# Now we define which actions will take place. | |
# One after another | |
steps: | |
# This is the first action. It will make sure that we have | |
# all the necessary files from our repo, including our custom actions | |
# This action here is actually from a remote repo available from Githup itself | |
- name: 🛎 Checkout master | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 1 | |
- name: ⚡️ Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends bats build-essential ca-certificates curl make shellcheck libgsl-dev libffi-dev minify liblapacke-dev libopenblas-dev | |
sudo gem install bundler:${{ env.BUNDLER_VERSION }} | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} # Not needed with a .ruby-version file | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
- name: ⚡️ Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- name: ⚡️ Setting up dependencies | |
continue-on-error: true | |
run: | | |
npm install | |
- name: Checking Jekyll configuration | |
run: bundle exec jekyll doctor | |
- name: 🔨 Build site | |
run: | | |
bundle exec jekyll build --lsi --profile | |
env: | |
JEKYLL_ENV: production | |
- name: Optimize | |
run: | | |
minify -r -o _site/ --html-keep-document-tags --html-keep-end-tags --html-keep-default-attrvals --html-keep-whitespace --verbose _site | |
- name: Cache jekyll | |
uses: actions/cache@v3 | |
with: | |
path: "_site/" | |
key: ${{ runner.os }}-${{ github.sha }} | |
# npm run build:js | |
# - name: 🔨 Test calculations JS | |
# run: | | |
# npm run test | |
deploy: | |
if: github.event_name == 'push' | |
name: deploy | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Use cache | |
uses: actions/cache@v3 | |
with: | |
path: "_site/" | |
key: ${{ runner.os }}-${{ github.sha }} | |
- name: 🎉 Deploy to GitHub Pages 🎊 | |
if: success() | |
uses: crazy-max/ghaction-github-pages@v2 | |
with: | |
target_branch: gh-pages | |
build_dir: _site | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build_and_deploy_azure: | |
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') | |
needs: build | |
runs-on: ubuntu-latest | |
name: Build and Deploy Azure | |
steps: | |
- name: Use cache | |
uses: actions/cache@v3 | |
with: | |
path: "_site/" | |
key: ${{ runner.os }}-${{ github.sha }} | |
- name: Remove exercise images | |
uses: JesseTG/[email protected] | |
with: | |
path: ./_site/assets/images/exercises/ | |
- name: Remove exercise Pdfs | |
uses: JesseTG/[email protected] | |
with: | |
path: ./_site/assets/pdf/ | |
- name: Build And Deploy | |
id: builddeploy | |
uses: Azure/static-web-apps-deploy@v1 | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_CALM_COAST_0BC93F003 }} | |
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) | |
action: "upload" | |
###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### | |
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig | |
skip_app_build: true | |
app_location: "/_site" # App source code path | |
api_location: "" # Api source code path - optional | |
output_location: "" # Built app content directory - optional | |
###### End of Repository/Build Configurations ###### | |
env: | |
JEKYLL_ENV: development | |
test: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Use cache | |
uses: actions/cache@v3 | |
with: | |
path: "_site/" | |
key: ${{ runner.os }}-${{ github.sha }} | |
- name: ⚡️ Cache HTMLProofer | |
id: cache-htmlproofer | |
uses: actions/cache@v2 | |
with: | |
path: tmp/.htmlproofer | |
key: ${{ runner.os }}-htmlproofer | |
- name: 📉 Check HTML | |
uses: chabad360/htmlproofer@master | |
with: | |
directory: "./_site" | |
# The directory to scan | |
arguments: | | |
--only-4xx | |
--ignore-status-codes "400,403,409,429" | |
--ignore-empty-alt | |
--ignore-urls "/bjsm.bmj.com/" | |
--cache '{ "timeframe": { "external": "30d" } }' | |
# The arguments to pass to HTMLProofer | |
clean: | |
needs: [build,deploy,test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Use cache | |
uses: actions/cache@v3 | |
with: | |
path: "_site/" | |
key: ${{ runner.os }}-${{ github.sha }} | |
- name: ☁️ Cleaning up | |
run: bundle exec jekyll clean | |
close_pull_request_azure: | |
if: github.event_name == 'pull_request' && github.event.action == 'closed' | |
runs-on: ubuntu-latest | |
name: Close Pull Request Job | |
steps: | |
- name: Close Pull Request | |
id: closepullrequest | |
uses: Azure/static-web-apps-deploy@v1 | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_CALM_COAST_0BC93F003 }} | |
action: "close" | |
lighthouse: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@master | |
- name: Lighthouse | |
uses: foo-software/lighthouse-check-action@master | |
with: | |
urls: 'https://www.motionsplan.dk/,https://www.motionsplan.dk/bmi-beregner-boern-unge-teenagere/,https://www.motionsplan.dk/skridt-pr-km-10000/,https://www.motionsplan.dk/idealvaegt/' | |
lighthouse_staging_azure: | |
name: Lighthouse report | |
needs: build_and_deploy_azure | |
if: github.event_name == 'pull_request' && github.event.action != 'closed' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Static Web App - get preview URL | |
id: static_web_app_preview_url | |
uses: azure/CLI@v1 | |
with: | |
inlineScript: | | |
CUSTOM_DOMAIN='calm-coast-0bc93f003.1.azurestaticapps.net' | |
LOCATION='westeurope' | |
PREVIEW_URL="https://${CUSTOM_DOMAIN/.[1-9]./-${{github.event.pull_request.number }}.$LOCATION.1.}" | |
echo "::set-output name=PREVIEW_URL::$PREVIEW_URL" | |
- name: Static Web App - wait for preview | |
id: static_web_app_wait_for_preview | |
uses: nev7n/wait_for_response@v1 | |
with: | |
url: '${{ steps.static_web_app_preview_url.outputs.PREVIEW_URL }}' | |
responseCode: 200 | |
timeout: 600000 | |
interval: 1000 | |
- name: Audit URLs using Lighthouse | |
id: lighthouse_audit | |
uses: treosh/lighthouse-ci-action@v8 | |
with: | |
urls: | | |
${{ steps.static_web_app_preview_url.outputs.PREVIEW_URL }} | |
${{ steps.static_web_app_preview_url.outputs.PREVIEW_URL }}/idealvaegt/ | |
configPath: ./.github/workflows/lighthousesrc.json | |
uploadArtifacts: true | |
temporaryPublicStorage: true | |
runs: 5 | |
- name: Format lighthouse score | |
id: format_lighthouse_score | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
const lighthouseCommentMaker = require('./.github/workflows/lighthouseCommentMaker.js'); | |
const lighthouseOutputs = { | |
manifest: ${{ steps.lighthouse_audit.outputs.manifest }}, | |
links: ${{ steps.lighthouse_audit.outputs.links }} | |
}; | |
const comment = lighthouseCommentMaker({ lighthouseOutputs }); | |
core.setOutput("comment", comment); | |
- name: Add Lighthouse stats as comment | |
id: comment_to_pr | |
uses: marocchino/[email protected] | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
number: ${{ github.event.pull_request.number }} | |
header: lighthouse | |
message: ${{ steps.format_lighthouse_score.outputs.comment }} |