diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..601b7c0 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,75 @@ +name: Build + +on: + push: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + + outputs: + coverage: ${{ steps.coverage.outputs.value }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install + run: npm ci + + - name: Test and Coverage + run: npm run coverage + + - name: Parse coverage + uses: sergeysova/jq-action@v2 + id: coverage + with: + cmd: 'jq .total.statements.pct coverage/coverage-summary.json' + + - name: Build demo + run: npm run build:demo + + - name: Upload demo artifact + uses: actions/upload-pages-artifact@v1 + with: + path: ./docs + + badge: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Create badge + uses: schneegans/dynamic-badges-action@v1.6.0 + with: + auth: ${{ secrets.GIST_SECRET }} + gistID: 7f2a04de5e494f9a3820832520ee2562 + filename: badge.json + label: Code Coverage + message: ${{ needs.build.outputs.coverage }}% + valColorRange: ${{ needs.build.outputs.coverage }} + maxColorRange: 100 + minColorRange: 0 + + deploy: + runs-on: ubuntu-latest + needs: build + + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1