Refs #169. Pin and verify pristine distribution assets, upgrade to 1.15.2, and add tested maintainer tooling plus desktop and touch browser checks.
84 lines
3.1 KiB
YAML
84 lines
3.1 KiB
YAML
name: Update vendored Viewer.js
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '30 7 * * *'
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: 'Stable version to vendor; leave blank for the latest npm release'
|
|
required: false
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: viewerjs-update
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
update:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
actions: write
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
ref: ${{ github.event.repository.default_branch }}
|
|
- uses: actions/setup-node@v7
|
|
with:
|
|
node-version: '24'
|
|
cache: npm
|
|
cache-dependency-path: tools/vendor/package-lock.json
|
|
- run: npm ci --prefix tools/vendor --ignore-scripts
|
|
- name: Update the dependency and regenerate assets
|
|
env:
|
|
VIEWER_VERSION: ${{ inputs.version }}
|
|
run: |
|
|
if [ -n "$VIEWER_VERSION" ]; then
|
|
npm run --prefix tools/vendor update -- --version "$VIEWER_VERSION"
|
|
else
|
|
npm run --prefix tools/vendor update
|
|
fi
|
|
- name: Detect changes
|
|
id: changes
|
|
run: |
|
|
if git diff --quiet -- tools/vendor/package.json tools/vendor/package-lock.json web/lib/viewerjs; then
|
|
echo 'changed=false' >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo 'changed=true' >> "$GITHUB_OUTPUT"
|
|
fi
|
|
- if: steps.changes.outputs.changed == 'true'
|
|
run: |
|
|
npm run --prefix tools/vendor check
|
|
npm run --prefix tools/vendor test
|
|
node --test tests/js/*.test.js
|
|
npx --prefix tools/vendor playwright install --with-deps chromium
|
|
npm run --prefix tools/vendor test:browser
|
|
- name: Open the update PR
|
|
if: steps.changes.outputs.changed == 'true'
|
|
env:
|
|
BASE_BRANCH: ${{ github.event.repository.default_branch }}
|
|
run: |
|
|
version=$(node -p "require('./web/lib/viewerjs/provenance.json').version")
|
|
branch="deps/viewerjs-$version"
|
|
existing=$(gh pr list --repo "$GITHUB_REPOSITORY" --state all --head "$branch" --json number --jq 'length')
|
|
if [ "$existing" != '0' ]; then
|
|
echo "A PR already exists for Viewer.js $version; leaving it for review."
|
|
exit 0
|
|
fi
|
|
remote=$(git ls-remote origin "refs/heads/$branch")
|
|
if [ -z "$remote" ]; then
|
|
git switch -c "$branch"
|
|
git add tools/vendor/package.json tools/vendor/package-lock.json web/lib/viewerjs
|
|
git -c user.name='github-actions[bot]' -c user.email='41898282+github-actions[bot]@users.noreply.github.com' commit -m "deps: update vendored Viewer.js to $version"
|
|
git push origin "HEAD:refs/heads/$branch"
|
|
fi
|
|
gh pr create --repo "$GITHUB_REPOSITORY" --base "$BASE_BRANCH" --head "$branch" --title "deps: update vendored Viewer.js to $version" --body-file tools/vendor/update-pr.md
|
|
gh workflow run viewerjs-check.yml --repo "$GITHUB_REPOSITORY" --ref "$branch"
|