Files
Jarek Potiuk 772f27d055 ci: verify committed dist/ matches a clean rebuild
Apache Infrastructure's verify-action-build tool (used to auto-review
Dependabot bumps of this action) flagged a drift in v0.0.10: the
committed dist/ matches only when rebuilt against the v0.0.9 lockfile,
not the v0.0.10 lockfile shipped alongside it. In practice this means
the release commit bumped package.json/package-lock.json version strings
but the dist/ was built earlier with the previous toolchain.

This is one of several ways to address that class of problem. The other
path is to simply rebuild dist/ and recommit for the current release;
that leaves the door open for it to happen again on the next release.

Adding this CI job is the preventive fix: it runs 'npm ci && npm run
build' on Node 24 (matching action.yml 'using: node24') and fails if
the committed dist/ differs from the rebuilt output. A release with a
stale dist/ will then be caught in CI rather than by downstream
consumers.

The existing build job keeps Node 18.x for format/lint/test; the new
job pins 24.x so the rebuild matches what the action actually runs on.
2026-07-29 12:54:27 +02:00

123 lines
3.0 KiB
YAML

# Copyright 2023 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 18.x
cache: npm
- name: npm install
run: npm install
- name: Prettier Format Check
run: npm run format-check
- name: ESLint Check
run: npm run lint
- name: Build & Test
run: npm run test
verify-dist:
name: Verify dist/ is up to date
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.x
cache: npm
- name: npm ci
run: npm ci
- name: Rebuild dist/
run: npm run build
- name: Check dist/ matches committed output
run: |
if ! git diff --exit-code -- dist/; then
echo "::error::Committed dist/ does not match a clean rebuild from source."
echo "::error::Run 'npm ci && npm run build' locally and commit the updated dist/ before releasing."
exit 1
fi
test:
name: Test version
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
version:
- ""
- v0.4.0
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set Node.js
uses: actions/setup-node@v7
with:
node-version: 18.x
cache: npm
- name: npm install
run: npm install
- name: Run sccache-cache
uses: ./
with:
version: ${{ matrix.version }}
- name: Run sccache for check
shell: bash
run: ${SCCACHE_PATH} --start-server
test_disable_annotations:
name: Test disable_annotations version
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set Node.js
uses: actions/setup-node@v7
with:
node-version: 18.x
cache: npm
- name: npm install
run: npm install
- name: Run sccache-cache
uses: ./
with:
disable_annotations: true
- name: Run sccache for check
shell: bash
run: ${SCCACHE_PATH} --start-server