From c759ac4e8ef9b5418ac75edf05b6f5d988a22607 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Sat, 16 May 2026 15:02:03 -0700 Subject: [PATCH 1/3] fix(ci): de-scope test-utils from npm; fix template release notes Make @beakerstack/test-utils workspace-only (private, changeset ignored). Replace git-cliff-action@v3 Docker build with git-cliff binary install. --- .changeset/config.json | 3 ++- .changeset/fiery-terms-wash.md | 5 ---- .github/workflows/release-template.yml | 32 +++++++++++++++++++------- .github/workflows/release.yml | 6 ----- CONTRIBUTING.md | 2 +- packages/test-utils/README.md | 10 ++------ packages/test-utils/package.json | 6 ++--- 7 files changed, 31 insertions(+), 33 deletions(-) delete mode 100644 .changeset/fiery-terms-wash.md diff --git a/.changeset/config.json b/.changeset/config.json index e4764606..e83be5fc 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -14,7 +14,8 @@ "web", "mobile-app", "@beakerstack/shared", - "@beakerstack/shared-tests" + "@beakerstack/shared-tests", + "@beakerstack/test-utils" ], "privatePackages": { "version": false, diff --git a/.changeset/fiery-terms-wash.md b/.changeset/fiery-terms-wash.md deleted file mode 100644 index 7dc8061c..00000000 --- a/.changeset/fiery-terms-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@beakerstack/test-utils': patch ---- - -Initial release of test-utils package. Provides wait() and testId() helpers for use in BeakerStack-based test suites. diff --git a/.github/workflows/release-template.yml b/.github/workflows/release-template.yml index 1e721f3c..0b7ca294 100644 --- a/.github/workflows/release-template.yml +++ b/.github/workflows/release-template.yml @@ -40,16 +40,32 @@ jobs: echo "tag=${YEAR}.${PADDED_N}" >> $GITHUB_OUTPUT fi + # orhun/git-cliff-action@v3 builds a Docker image on Debian buster; apt repos are EOL (404). + - name: Install git-cliff + env: + GIT_CLIFF_VERSION: 2.13.1 + run: | + arch=$(uname -m) + case "$arch" in + x86_64) arch_suffix=x86_64 ;; + aarch64) arch_suffix=aarch64 ;; + *) echo "unsupported arch: $arch"; exit 1 ;; + esac + curl -fsSL \ + "https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-${arch_suffix}-unknown-linux-gnu.tar.gz" \ + | tar xz -C /tmp + sudo mv "/tmp/git-cliff-${GIT_CLIFF_VERSION}/git-cliff" /usr/local/bin/git-cliff + git-cliff --version + - name: Generate release notes - uses: orhun/git-cliff-action@v3 - with: - config: cliff.toml - args: >- - --tag-pattern '^[0-9]{4}\.' - --tag ${{ steps.tag.outputs.tag }} - --latest + run: | + git-cliff \ + --config cliff.toml \ + --tag-pattern '^[0-9]{4}\.' \ + --tag "${{ steps.tag.outputs.tag }}" \ + --latest \ + --output RELEASE_NOTES.md env: - OUTPUT: RELEASE_NOTES.md GITHUB_REPO: ${{ github.repository }} - name: Create annotated tag diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41b8deb4..163203f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,12 +34,6 @@ jobs: - name: Install dependencies run: npm ci - - name: Build test-utils package - run: npm run build --workspace=@beakerstack/test-utils - - - name: Test test-utils package - run: npm run test --workspace=@beakerstack/test-utils - - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@v1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 41a5e5d5..2b69d3bd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -109,7 +109,7 @@ When extracting reusable code into a new `@beakerstack/*` package: 4. Add a changeset for the initial release. 5. Follow the standard branch flow. The release workflow handles the first publish. -See `packages/test-utils/` for a minimal working example. +See `packages/test-utils/` for package layout (workspace-only scaffold; not published to npm). ## Documentation diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 167ac904..1fe50795 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -1,14 +1,8 @@ # @beakerstack/test-utils -Testing utilities for [BeakerStack](https://github.com/Artificer-Innovations/BeakerStack)-based projects. +Internal workspace scaffold for a publishable `@beakerstack/*` package layout. Not published to npm; use the workspace import from the monorepo root. -## Installation - -```bash -npm install --save-dev @beakerstack/test-utils -``` - -## Usage +## Usage (monorepo) ```typescript import { wait, testId } from '@beakerstack/test-utils'; diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 2db38287..7a289ceb 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,7 @@ { "name": "@beakerstack/test-utils", - "version": "0.0.0", + "version": "0.0.1", + "private": true, "description": "Testing utilities for BeakerStack-based projects", "keywords": [ "beakerstack", @@ -37,9 +38,6 @@ "README.md", "LICENSE" ], - "publishConfig": { - "access": "public" - }, "scripts": { "build": "tsup src/index.ts --format cjs,esm --dts --clean", "clean": "rm -rf dist", From 0673c41ee9cd837f5ffa1f9076090a90cd34a4bb Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Sat, 16 May 2026 15:05:02 -0700 Subject: [PATCH 2/3] Revert "fix(ci): de-scope test-utils from npm; fix template release notes" This reverts commit c759ac4e8ef9b5418ac75edf05b6f5d988a22607. --- .changeset/config.json | 3 +-- .changeset/fiery-terms-wash.md | 5 ++++ .github/workflows/release-template.yml | 32 +++++++------------------- .github/workflows/release.yml | 6 +++++ CONTRIBUTING.md | 2 +- packages/test-utils/README.md | 10 ++++++-- packages/test-utils/package.json | 6 +++-- 7 files changed, 33 insertions(+), 31 deletions(-) create mode 100644 .changeset/fiery-terms-wash.md diff --git a/.changeset/config.json b/.changeset/config.json index e83be5fc..e4764606 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -14,8 +14,7 @@ "web", "mobile-app", "@beakerstack/shared", - "@beakerstack/shared-tests", - "@beakerstack/test-utils" + "@beakerstack/shared-tests" ], "privatePackages": { "version": false, diff --git a/.changeset/fiery-terms-wash.md b/.changeset/fiery-terms-wash.md new file mode 100644 index 00000000..7dc8061c --- /dev/null +++ b/.changeset/fiery-terms-wash.md @@ -0,0 +1,5 @@ +--- +'@beakerstack/test-utils': patch +--- + +Initial release of test-utils package. Provides wait() and testId() helpers for use in BeakerStack-based test suites. diff --git a/.github/workflows/release-template.yml b/.github/workflows/release-template.yml index 0b7ca294..1e721f3c 100644 --- a/.github/workflows/release-template.yml +++ b/.github/workflows/release-template.yml @@ -40,32 +40,16 @@ jobs: echo "tag=${YEAR}.${PADDED_N}" >> $GITHUB_OUTPUT fi - # orhun/git-cliff-action@v3 builds a Docker image on Debian buster; apt repos are EOL (404). - - name: Install git-cliff - env: - GIT_CLIFF_VERSION: 2.13.1 - run: | - arch=$(uname -m) - case "$arch" in - x86_64) arch_suffix=x86_64 ;; - aarch64) arch_suffix=aarch64 ;; - *) echo "unsupported arch: $arch"; exit 1 ;; - esac - curl -fsSL \ - "https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-${arch_suffix}-unknown-linux-gnu.tar.gz" \ - | tar xz -C /tmp - sudo mv "/tmp/git-cliff-${GIT_CLIFF_VERSION}/git-cliff" /usr/local/bin/git-cliff - git-cliff --version - - name: Generate release notes - run: | - git-cliff \ - --config cliff.toml \ - --tag-pattern '^[0-9]{4}\.' \ - --tag "${{ steps.tag.outputs.tag }}" \ - --latest \ - --output RELEASE_NOTES.md + uses: orhun/git-cliff-action@v3 + with: + config: cliff.toml + args: >- + --tag-pattern '^[0-9]{4}\.' + --tag ${{ steps.tag.outputs.tag }} + --latest env: + OUTPUT: RELEASE_NOTES.md GITHUB_REPO: ${{ github.repository }} - name: Create annotated tag diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 163203f0..41b8deb4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,12 @@ jobs: - name: Install dependencies run: npm ci + - name: Build test-utils package + run: npm run build --workspace=@beakerstack/test-utils + + - name: Test test-utils package + run: npm run test --workspace=@beakerstack/test-utils + - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@v1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b69d3bd..41a5e5d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -109,7 +109,7 @@ When extracting reusable code into a new `@beakerstack/*` package: 4. Add a changeset for the initial release. 5. Follow the standard branch flow. The release workflow handles the first publish. -See `packages/test-utils/` for package layout (workspace-only scaffold; not published to npm). +See `packages/test-utils/` for a minimal working example. ## Documentation diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 1fe50795..167ac904 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -1,8 +1,14 @@ # @beakerstack/test-utils -Internal workspace scaffold for a publishable `@beakerstack/*` package layout. Not published to npm; use the workspace import from the monorepo root. +Testing utilities for [BeakerStack](https://github.com/Artificer-Innovations/BeakerStack)-based projects. -## Usage (monorepo) +## Installation + +```bash +npm install --save-dev @beakerstack/test-utils +``` + +## Usage ```typescript import { wait, testId } from '@beakerstack/test-utils'; diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 7a289ceb..2db38287 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,6 @@ { "name": "@beakerstack/test-utils", - "version": "0.0.1", - "private": true, + "version": "0.0.0", "description": "Testing utilities for BeakerStack-based projects", "keywords": [ "beakerstack", @@ -38,6 +37,9 @@ "README.md", "LICENSE" ], + "publishConfig": { + "access": "public" + }, "scripts": { "build": "tsup src/index.ts --format cjs,esm --dts --clean", "clean": "rm -rf dist", From 8efb2892ffa158c03343e36be50e5008dc981f43 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Sat, 16 May 2026 15:23:18 -0700 Subject: [PATCH 3/3] fix(ci): install git-cliff binary for template release notes (#229) * fix(ci): install git-cliff binary for template release notes Replace git-cliff-action@v3 Docker build; Debian buster apt repos are EOL. * fix(ci): verify git-cliff release tarball SHA256 before install Pin digests for x86_64 and aarch64 linux-gnu assets (v2.13.1). --- .github/workflows/release-template.yml | 42 +++++++++++++++++++++----- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-template.yml b/.github/workflows/release-template.yml index 1e721f3c..12f0ea0a 100644 --- a/.github/workflows/release-template.yml +++ b/.github/workflows/release-template.yml @@ -40,16 +40,42 @@ jobs: echo "tag=${YEAR}.${PADDED_N}" >> $GITHUB_OUTPUT fi + # orhun/git-cliff-action@v3 builds a Docker image on Debian buster; apt repos are EOL (404). + # When bumping GIT_CLIFF_VERSION, update expected_sha256 from the release asset digests on GitHub. + - name: Install git-cliff + env: + GIT_CLIFF_VERSION: 2.13.1 + run: | + arch=$(uname -m) + case "$arch" in + x86_64) + arch_suffix=x86_64 + expected_sha256=9a1263f24e59a2f508c7b3d3283c9dea94a8bf697f96dbc18cc783cac6284546 + ;; + aarch64) + arch_suffix=aarch64 + expected_sha256=9619b7f0c584229f8a2331c1905afe88bd938bdc9102926c2073836a42f02455 + ;; + *) echo "unsupported arch: $arch"; exit 1 ;; + esac + archive="git-cliff-${GIT_CLIFF_VERSION}-${arch_suffix}-unknown-linux-gnu.tar.gz" + curl -fsSL \ + "https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/${archive}" \ + -o "/tmp/${archive}" + echo "${expected_sha256} /tmp/${archive}" | sha256sum -c - + tar xzf "/tmp/${archive}" -C /tmp + sudo mv "/tmp/git-cliff-${GIT_CLIFF_VERSION}/git-cliff" /usr/local/bin/git-cliff + git-cliff --version + - name: Generate release notes - uses: orhun/git-cliff-action@v3 - with: - config: cliff.toml - args: >- - --tag-pattern '^[0-9]{4}\.' - --tag ${{ steps.tag.outputs.tag }} - --latest + run: | + git-cliff \ + --config cliff.toml \ + --tag-pattern '^[0-9]{4}\.' \ + --tag "${{ steps.tag.outputs.tag }}" \ + --latest \ + --output RELEASE_NOTES.md env: - OUTPUT: RELEASE_NOTES.md GITHUB_REPO: ${{ github.repository }} - name: Create annotated tag