metanorma/metanorma-cli

View on GitHub
.github/workflows/fonts-check.yml

Summary

Maintainability
Test Coverage
name: fonts-check

on:
  schedule:
  - cron: '0 0 * * *'
  workflow_dispatch:
  pull_request:

permissions:
  contents: write

jobs:
  prepare:
    uses: metanorma/ci/.github/workflows/prepare-rake.yml@main

  list-flavors:
    runs-on: ubuntu-latest
    outputs:
      flavors: ${{ steps.result.outputs.list }}
    steps:
      - uses: actions/checkout@v4

      - id: result
        run: |
          cat .github/workflows/samples-smoke-matrix.json | \
            jq -r '.flavor[].id' | \
            sed 's/-private$//g'   | \
            sed 's/jcgm/bipm/g'   | \
            sort | uniq | \
            jq -R -s -c 'split("\n") | map(select(length > 0))' > flavors.json
          cat flavors.json

          echo "list=$(cat flavors.json tr '\n' ' ')" >> $GITHUB_OUTPUT

  test-flavor-fonts:
    name: Test fonts for ${{ matrix.flavor }}
    runs-on: ubuntu-latest
    needs: [prepare, list-flavors]

    concurrency:
      group: 'fonts-check-${{ matrix.flavor }}'
      cancel-in-progress: true

    strategy:
      max-parallel: 5
      fail-fast: false
      matrix:
        flavor: ${{ fromJson(needs.list-flavors.outputs.flavors) }}

    steps:
    - uses: actions/checkout@v4

    - uses: metanorma/ci/gh-rubygems-setup-action@main
      with:
        token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}

    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ needs.prepare.outputs.default-ruby-version }}
        bundler-cache: true

    - if: ${{ matrix.flavor == 'bsi' }}
      uses: metanorma/ci/fontist-setup@main
      with:
        private-fonts-pat: ${{ secrets.METANORMA_CI_PAT_TOKEN }}

    - run: |
        if [ "${{ matrix.flavor }}" = "bsi" ]; then
          bundle add metanorma-${{ matrix.flavor }} --source "https://rubygems.pkg.github.com/metanorma"
        else
          bundle add metanorma-${{ matrix.flavor }}
        fi
        bundle exec bin/font-test ${{ matrix.flavor }}

  create-issue:
    runs-on: ubuntu-latest
    needs: test-flavor-fonts
    if: failure()
    steps:
    - uses: actions/github-script@v7
      with:
        github-token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
        script: |
          const workflowUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
          const issueTitle = 'Font check failed';
          const issueBody = `Font check failed failed for ${workflowUrl}`;

          const { data: issues } = await github.rest.issues.listForRepo({
            owner: context.repo.owner,
            repo: context.repo.repo,
            state: 'open'
          });

          const existingIssue = issues.find(issue => issue.title === issueTitle);
          if (existingIssue) {
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: existingIssue.number,
              body: issueBody
            });
          } else {
            await github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: issueTitle,
              body: issueBody,
              assignees: ['CAMOBAP']
            });
          }