Prepare CHANGELOG for the PHP 7.0.1 security release #64
Workflow file for this run
This file contains hidden or 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
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| javascript: | |
| name: JS & CSS (Node ${{ matrix.node }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: ['20', '22'] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| # Reproducible install from the committed lockfile — this is the check | |
| # that guards against the transitive dependency drift consumers hit with | |
| # `npm i`. | |
| - run: npm ci | |
| # Dogfooding the flat config over the repo is Node-independent, so run it | |
| # once rather than on every matrix leg. | |
| - name: Lint the repo with the flat config (dogfooding) | |
| if: matrix.node == '22' | |
| run: npm run lint-js | |
| - name: Smoke tests (eslint-config + stylelint-config) | |
| run: npm test | |
| changeset-guard: | |
| name: Changeset guard | |
| # Only on PRs (a push to master has no base to diff against), and skip the | |
| # changesets "Version Packages" PR, which intentionally removes changesets. | |
| if: github.event_name == 'pull_request' && github.head_ref != 'changeset-release/master' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| fetch-depth: 0 | |
| # A change to a published package's manifest (version, dependencies, | |
| # peers) is consumer-facing and must ship with a changeset. Catches the | |
| # class of change Dependabot or a quick fix can miss — e.g. bumping a peer | |
| # in packages/*/package.json without recording it (see the v7 alphas). | |
| - name: Require a changeset when a published package's manifest changes | |
| env: | |
| BASE: ${{ github.base_ref }} | |
| run: | | |
| git fetch --no-tags origin "$BASE" | |
| manifest_changed=$(git diff --name-only "origin/${BASE}...HEAD" \ | |
| | grep -E '^packages/[^/]+/package\.json$' || true) | |
| # Only a newly ADDED changeset counts — editing an existing one does | |
| # not version a new change (and in pre mode does not trigger a release). | |
| changeset_added=$(git diff --name-status "origin/${BASE}...HEAD" \ | |
| | awk '$1 ~ /^A/ { print $2 }' \ | |
| | grep -E '^\.changeset/.+\.md$' | grep -vE '^\.changeset/README\.md$' || true) | |
| if [ -n "$manifest_changed" ] && [ -z "$changeset_added" ]; then | |
| echo "::error::A published package's package.json changed but this PR adds no changeset. Run 'npx changeset' (or 'npx changeset --empty' if there is genuinely no consumer impact)." | |
| exit 1 | |
| fi | |
| echo "Changeset guard OK." | |
| php: | |
| name: PHP ${{ matrix.php }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php: ['7.4', '8.0', '8.2', '8.4'] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - name: Set up PHP | |
| uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 | |
| with: | |
| php-version: ${{ matrix.php }} | |
| - name: Cache Composer downloads | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: ~/.cache/composer/files | |
| key: composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} | |
| restore-keys: composer-${{ matrix.php }}- | |
| # No composer.lock is committed (this is a library), so resolve fresh. | |
| - name: Install Composer dependencies | |
| run: composer update --no-progress --no-interaction --prefer-dist | |
| - name: Smoke tests (Required + Required-Strict) | |
| run: composer test |