apify-test-tools 0.9.1-beta.8 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/.github/actions/checkout-restore-dependencies/action.yaml +3 -29
  2. package/.github/scripts/check-major-tag-refs.mjs +1 -1
  3. package/.github/workflows/_move_major_tag.yaml +11 -3
  4. package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +2 -2
  5. package/.github/workflows/public_platform-tests.yaml +1 -13
  6. package/.github/workflows/public_pr-build-test.yaml +4 -26
  7. package/.github/workflows/public_push-build-latest.yaml +4 -15
  8. package/.github/workflows/public_review.yaml +1 -8
  9. package/.github/workflows-package-version +1 -1
  10. package/CHANGELOG.md +8 -3
  11. package/CONTRIBUTING.md +11 -7
  12. package/README.md +169 -56
  13. package/bin/build-from-local.ts +15 -11
  14. package/bin/build.ts +127 -67
  15. package/bin/git.ts +140 -0
  16. package/bin/main.ts +128 -91
  17. package/bin/slack.ts +5 -2
  18. package/bin/types.ts +0 -73
  19. package/bin/utils/config/parser.ts +6 -5
  20. package/bin/utils/config/structures/base.ts +5 -1
  21. package/bin/utils/config/structures/grouped.ts +40 -0
  22. package/bin/utils/config/structures/legacy.ts +3 -1
  23. package/bin/utils.ts +7 -15
  24. package/dist/bin/build-from-local.d.ts +2 -2
  25. package/dist/bin/build-from-local.d.ts.map +1 -1
  26. package/dist/bin/build-from-local.js +11 -6
  27. package/dist/bin/build-from-local.js.map +1 -1
  28. package/dist/bin/build.d.ts +26 -4
  29. package/dist/bin/build.d.ts.map +1 -1
  30. package/dist/bin/build.js +90 -47
  31. package/dist/bin/build.js.map +1 -1
  32. package/dist/bin/git.d.ts +40 -0
  33. package/dist/bin/git.d.ts.map +1 -1
  34. package/dist/bin/git.js +118 -0
  35. package/dist/bin/git.js.map +1 -1
  36. package/dist/bin/main.d.ts +1 -20
  37. package/dist/bin/main.d.ts.map +1 -1
  38. package/dist/bin/main.js +65 -62
  39. package/dist/bin/main.js.map +1 -1
  40. package/dist/bin/slack.d.ts.map +1 -1
  41. package/dist/bin/slack.js +4 -2
  42. package/dist/bin/slack.js.map +1 -1
  43. package/dist/bin/types.d.ts +0 -64
  44. package/dist/bin/types.d.ts.map +1 -1
  45. package/dist/bin/utils/config/parser.d.ts.map +1 -1
  46. package/dist/bin/utils/config/parser.js +6 -5
  47. package/dist/bin/utils/config/parser.js.map +1 -1
  48. package/dist/bin/utils/config/structures/base.d.ts +3 -2
  49. package/dist/bin/utils/config/structures/base.d.ts.map +1 -1
  50. package/dist/bin/utils/config/structures/base.js +1 -0
  51. package/dist/bin/utils/config/structures/base.js.map +1 -1
  52. package/dist/bin/utils/config/structures/grouped.d.ts +6 -0
  53. package/dist/bin/utils/config/structures/grouped.d.ts.map +1 -0
  54. package/dist/bin/utils/config/structures/grouped.js +29 -0
  55. package/dist/bin/utils/config/structures/grouped.js.map +1 -0
  56. package/dist/bin/utils/config/structures/legacy.d.ts +1 -1
  57. package/dist/bin/utils/config/structures/legacy.d.ts.map +1 -1
  58. package/dist/bin/utils/config/structures/legacy.js +1 -1
  59. package/dist/bin/utils/config/structures/legacy.js.map +1 -1
  60. package/dist/bin/utils.d.ts +5 -2
  61. package/dist/bin/utils.d.ts.map +1 -1
  62. package/dist/bin/utils.js +6 -12
  63. package/dist/bin/utils.js.map +1 -1
  64. package/dist/test/unit/bin/build.test.d.ts +2 -0
  65. package/dist/test/unit/bin/build.test.d.ts.map +1 -0
  66. package/dist/test/unit/bin/build.test.js +46 -0
  67. package/dist/test/unit/bin/build.test.js.map +1 -0
  68. package/dist/test/unit/bin/git.test.js +104 -1
  69. package/dist/test/unit/bin/git.test.js.map +1 -1
  70. package/dist/test/unit/bin/utils/config/load-config.test.js +1 -0
  71. package/dist/test/unit/bin/utils/config/load-config.test.js.map +1 -1
  72. package/dist/test/unit/bin/utils/config/parser.test.js +23 -5
  73. package/dist/test/unit/bin/utils/config/parser.test.js.map +1 -1
  74. package/dist/test/unit/bin/utils/config/structures/grouped.test.d.ts +2 -0
  75. package/dist/test/unit/bin/utils/config/structures/grouped.test.d.ts.map +1 -0
  76. package/dist/test/unit/bin/utils/config/structures/grouped.test.js +75 -0
  77. package/dist/test/unit/bin/utils/config/structures/grouped.test.js.map +1 -0
  78. package/dist/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +65 -63
  80. package/test/unit/bin/build.test.ts +68 -0
  81. package/test/unit/bin/git.test.ts +122 -0
  82. package/test/unit/bin/utils/config/load-config.test.ts +1 -0
  83. package/test/unit/bin/utils/config/parser.test.ts +26 -5
  84. package/test/unit/bin/utils/config/structures/grouped.test.ts +90 -0
  85. package/bin/github.ts +0 -69
  86. package/dist/bin/github.d.ts +0 -11
  87. package/dist/bin/github.d.ts.map +0 -1
  88. package/dist/bin/github.js +0 -59
  89. package/dist/bin/github.js.map +0 -1
@@ -1,13 +1,6 @@
1
1
  name: Checkout and restore dependencies
2
2
  description: Checkout and restore dependencies
3
3
  inputs:
4
- working-directory:
5
- description: Working directory
6
- required: false
7
- default: .
8
- additional-working-directory:
9
- description: Additional working directory
10
- required: false
11
4
  npm-token:
12
5
  description: >-
13
6
  Token for installing private npm packages. Exported as both NPM_TOKEN (what a
@@ -26,7 +19,7 @@ outputs:
26
19
 
27
20
  # Sets common steps and ensure we use cached node_modules
28
21
  # To test a change here, repoint the `uses:` refs in the reusable workflows at your branch, and
29
- # change them back before merging. Merging to master no longer ships it: consumers track the `v0`
22
+ # change them back before merging. Merging to master no longer ships it: consumers track the `workflows-v0`
30
23
  # tag, which only moves once the package version in .github/workflows-package-version is on npm.
31
24
  runs:
32
25
  using: 'composite'
@@ -60,30 +53,12 @@ runs:
60
53
  id: check-dependencies-cache
61
54
  uses: actions/cache@v5
62
55
  with:
63
- path: ${{ inputs.working-directory }}/node_modules
64
- key: modules-npm-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/package-lock.json', inputs.working-directory)) }}
65
-
66
- - name: Cache additional dependencies npm
67
- id: check-additional-dependencies-cache
68
- if: inputs.additional-working-directory != ''
69
- uses: actions/cache@v5
70
- with:
71
- path: ${{ inputs.additional-working-directory }}/node_modules
72
- key: modules-npm-${{ inputs.additional-working-directory }}-${{ hashFiles(format('{0}/package-lock.json', inputs.additional-working-directory)) }}
56
+ path: node_modules
57
+ key: modules-npm-${{ hashFiles('package-lock.json') }}
73
58
 
74
59
  - name: install npm dependencies
75
60
  if: steps.check-dependencies-cache.outputs.cache-hit != 'true'
76
61
  shell: bash
77
- working-directory: ${{ inputs.working-directory }}
78
- env:
79
- NPM_TOKEN: ${{ inputs.npm-token }}
80
- NODE_AUTH_TOKEN: ${{ inputs.npm-token }}
81
- run: npm ci
82
-
83
- - name: install additional npm dependencies
84
- if: inputs.additional-working-directory != '' && steps.check-additional-dependencies-cache.outputs.cache-hit != 'true'
85
- shell: bash
86
- working-directory: ${{ inputs.additional-working-directory }}
87
62
  env:
88
63
  NPM_TOKEN: ${{ inputs.npm-token }}
89
64
  NODE_AUTH_TOKEN: ${{ inputs.npm-token }}
@@ -96,7 +71,6 @@ runs:
96
71
  # Needs the npm token too: a repo whose .npmrc routes all traffic through a private
97
72
  # registry has to authenticate even for public packages.
98
73
  shell: bash
99
- working-directory: ${{ inputs.working-directory }}
100
74
  env:
101
75
  NPM_TOKEN: ${{ inputs.npm-token }}
102
76
  NODE_AUTH_TOKEN: ${{ inputs.npm-token }}
@@ -36,7 +36,7 @@ const walk = (rel) => {
36
36
 
37
37
  const problems = [];
38
38
 
39
- // Self-references, e.g. `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@v0`.
39
+ // Self-references, e.g. `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@workflows-v0`.
40
40
  // The ref charset stops at a backtick or quote so a ref quoted in prose isn't captured with its
41
41
  // punctuation; git refnames cannot end in a dot, so a sentence-final one is trimmed.
42
42
  const SELF_REF = /apify\/apify-test-tools\/\.github\/\S*?@([A-Za-z0-9._/-]+)/g;
@@ -32,16 +32,24 @@ jobs:
32
32
  contents: write
33
33
  env:
34
34
  # The major version consumers pin, e.g.
35
- # `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@v0`.
35
+ # `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@workflows-v0`.
36
36
  # Bump this only for a breaking change to a workflow's inputs, secrets or behaviour.
37
37
  # The previous tag then stops moving and keeps working, so repos migrate when they get
38
38
  # to it instead of all at once.
39
39
  #
40
40
  # This tracks the workflows' own contract, not the npm package version — the two move
41
- # independently by design, so `v0` here is expected to outlive the package reaching 1.0.
41
+ # independently by design, so this is expected to outlive the package reaching 1.0.
42
+ #
43
+ # Deliberately not a bare `v0`. The package releases as `v0.9.0`, `v0.8.6` and so on, and
44
+ # a bare major tag sits in that same namespace: git-cliff hard-errors on it
45
+ # ("unexpected character 'v' while parsing major version number") and only skips it
46
+ # because apify/actions ships `tag_pattern = "v[0-9]+\\."`, whose trailing dot excludes
47
+ # it. Depending on a regex in another repo to keep releases working is not a dependency
48
+ # worth having, and `v1` beside a package `v1.0.0` would be worse still.
49
+ #
42
50
  # `uses:` cannot take an expression, so every ref into this repo hardcodes this same tag;
43
51
  # check-major-tag-refs.mjs fails the build if one of them drifts.
44
- MAJOR_TAG: v0
52
+ MAJOR_TAG: workflows-v0
45
53
  steps:
46
54
  - name: Checkout repository
47
55
  uses: actions/checkout@v6
@@ -20,7 +20,7 @@ name: 'Platform tests: Claude failure investigation and fix'
20
20
  #
21
21
  # jobs:
22
22
  # platformTestsCore:
23
- # uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@v0
23
+ # uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@workflows-v0
24
24
  # with:
25
25
  # subtest: core
26
26
  # secrets: inherit
@@ -28,7 +28,7 @@ name: 'Platform tests: Claude failure investigation and fix'
28
28
  # handle-failure:
29
29
  # needs: platformTestsCore
30
30
  # if: ${{ failure() }}
31
- # uses: apify/apify-test-tools/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml@v0
31
+ # uses: apify/apify-test-tools/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml@workflows-v0
32
32
  # secrets: inherit
33
33
 
34
34
  on:
@@ -13,13 +13,6 @@ on:
13
13
  type: string
14
14
  default: ''
15
15
  required: false
16
- working-directory:
17
- type: string
18
- default: .
19
- required: false
20
- additional-working-directory:
21
- type: string
22
- required: false
23
16
  # Defaults to #notif-<repo-name> when empty, matching the previous behavior.
24
17
  report-slack-channel:
25
18
  type: string
@@ -31,16 +24,11 @@ jobs:
31
24
  name: Scheduled Platform tests
32
25
  if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
33
26
  runs-on: ubuntu-latest
34
- defaults:
35
- run:
36
- working-directory: ${{ inputs.working-directory }}
37
27
  steps:
38
28
  - name: Setup repository and dependencies
39
29
  # For testing, you have to temporarily change the branch
40
- uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
30
+ uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
41
31
  with:
42
- working-directory: ${{ inputs.working-directory }}
43
- additional-working-directory: ${{ inputs.additional-working-directory }}
44
32
  npm-token: ${{ secrets.NPM_TOKEN }}
45
33
 
46
34
  - name: Test
@@ -3,13 +3,6 @@ name: Test
3
3
  on:
4
4
  workflow_call:
5
5
  inputs:
6
- working-directory:
7
- type: string
8
- default: .
9
- required: false
10
- additional-working-directory:
11
- type: string
12
- required: false
13
6
  skip-platform-tests:
14
7
  type: boolean
15
8
  default: false
@@ -28,17 +21,12 @@ jobs:
28
21
  platformTest:
29
22
  if: ${{ !inputs.skip-platform-tests }}
30
23
  runs-on: ubuntu-latest
31
- defaults:
32
- run:
33
- working-directory: ${{ inputs.working-directory }}
34
24
  steps:
35
25
  - name: Setup repository and dependencies
36
26
  id: setup
37
27
  # For testing, you have to temporarily change the branch
38
- uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
28
+ uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
39
29
  with:
40
- working-directory: ${{ inputs.working-directory }}
41
- additional-working-directory: ${{ inputs.additional-working-directory }}
42
30
  # Some repos use private npm packages, they need to pass NPM_TOKEN secret to this workflow
43
31
  npm-token: ${{ secrets.NPM_TOKEN }}
44
32
 
@@ -87,13 +75,9 @@ jobs:
87
75
  # environment variables rather than being interpolated into it.
88
76
  HEAD_REF: ${{ github.head_ref }}
89
77
  BASE_REF: ${{ github.base_ref }}
90
- WORKING_DIRECTORY: ${{ inputs.working-directory }}
91
78
  run: |
92
- work_dir="$WORKING_DIRECTORY"
93
- [ "$work_dir" = "." ] && work_dir=""
94
- prefix="${work_dir:+$work_dir/}test/platform/"
95
- changed=$(git diff --name-only --diff-filter=d "origin/$BASE_REF...HEAD" -- "$prefix" \
96
- | sed "s|^$prefix|./test/platform/|" | tr '\n' ' ')
79
+ changed=$(git diff --name-only --diff-filter=d "origin/$BASE_REF...HEAD" -- test/platform/ \
80
+ | sed "s|^|./|" | tr '\n' ' ')
97
81
  branch_actors=$(npx apify-test-tools get-affected-actors \
98
82
  --source-branch "origin/$HEAD_REF" \
99
83
  --target-branch "origin/$BASE_REF")
@@ -135,17 +119,11 @@ jobs:
135
119
  unitTest:
136
120
  # TODO: only run on changes to code
137
121
  runs-on: ubuntu-latest
138
- defaults:
139
- run:
140
- working-directory: ${{ inputs.working-directory }}
141
-
142
122
  steps:
143
123
  - name: Setup repository and dependencies
144
124
  # For testing, you have to temporarily change the branch
145
- uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
125
+ uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
146
126
  with:
147
- working-directory: ${{ inputs.working-directory }}
148
- additional-working-directory: ${{ inputs.additional-working-directory }}
149
127
  npm-token: ${{ secrets.NPM_TOKEN }}
150
128
 
151
129
  - name: TypeScript
@@ -3,13 +3,6 @@ name: Build latest and report to slack
3
3
  on:
4
4
  workflow_call:
5
5
  inputs:
6
- working-directory:
7
- type: string
8
- default: .
9
- required: false
10
- additional-working-directory:
11
- type: string
12
- required: false
13
6
  # Defaults to #notif-<repo-name> when empty, matching the previous behavior.
14
7
  report-slack-channel:
15
8
  type: string
@@ -24,20 +17,16 @@ jobs:
24
17
  !contains(github.event.head_commit.message, '[skip platform-test]')
25
18
 
26
19
  runs-on: ubuntu-latest
27
- defaults:
28
- run:
29
- working-directory: ${{ inputs.working-directory }}
30
-
31
20
  steps:
32
21
  - name: Setup repository and dependencies
33
22
  id: setup
34
23
  # For testing, you have to temporarily change the branch
35
- uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
24
+ uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
36
25
  with:
37
- working-directory: ${{ inputs.working-directory }}
38
- additional-working-directory: ${{ inputs.additional-working-directory }}
39
26
  npm-token: ${{ secrets.NPM_TOKEN }}
40
27
 
28
+ # --base-commit is the last commit that is already released: the push's "before" commit.
29
+ # Everything after it up to HEAD gets released. See the "Releasing Actors" section of the README.
41
30
  # run-with-apify-tokens.mjs reads the token names from in apify-test-tools.config.json
42
31
  # and hands the build those secrets and nothing else, so the tokens stay in this one command instead of the whole job.
43
32
  # The library never sees secrets it doesn't need
@@ -47,7 +36,7 @@ jobs:
47
36
  SLACK_TOKEN_RELEASES_BOT: ${{ secrets.SLACK_TOKEN_RELEASES_BOT }}
48
37
  run: |
49
38
  node "${{ steps.setup.outputs.scripts-path }}/run-with-apify-tokens.mjs" \
50
- npx apify-test-tools release --push-event-path ${{ github.event_path }} --release-slack-channel "#delivery-public-actors" --report-slack-channel "${{ inputs.report-slack-channel || format('#notif-{0}', github.event.repository.name) }}" --use-docker-cache
39
+ npx apify-test-tools release --base-commit ${{ github.event.before }} --release-slack-channel "#delivery-public-actors" --report-slack-channel "${{ inputs.report-slack-channel || format('#notif-{0}', github.event.repository.name) }}" --use-docker-cache
51
40
 
52
41
  - name: Delete old builds
53
42
  env:
@@ -14,7 +14,7 @@ on:
14
14
  description: Label added after a successful review and never removed. Set to an empty string to disable.
15
15
  required: false
16
16
  prompt-ref:
17
- default: v0
17
+ default: workflows-v0
18
18
  type: string
19
19
  description: >-
20
20
  Ref of this repository to fetch the review instructions from. Defaults to the
@@ -26,13 +26,6 @@ on:
26
26
  type: string
27
27
  description: Model to use for Claude Code (best, sonnet, opus, haiku, sonnet[1m], opus[1m], opusplan)
28
28
  required: false
29
- working-directory:
30
- type: string
31
- default: .
32
- required: false
33
- additional-working-directory:
34
- type: string
35
- required: false
36
29
  secrets:
37
30
  ANTHROPIC_API_KEY:
38
31
  required: true
@@ -1 +1 @@
1
- 0.9.0
1
+ 0.10.0
package/CHANGELOG.md CHANGED
@@ -2,20 +2,25 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- <!-- git-cliff-unreleased-start -->
6
- ## 0.9.1 - **not yet released**
5
+ ## [0.10.0](https://github.com/apify/apify-test-tools/releases/tag/v0.10.0) (2026-09-30)
7
6
 
8
7
  ### 🚀 Features
9
8
 
10
9
  - **config/modes:** Lay groundwork for multiple configuration structures ([#142](https://github.com/apify/apify-test-tools/pull/142)) ([7e18638](https://github.com/apify/apify-test-tools/commit/7e18638a8d3523154dbe819312c2b16b54c548ff)) by [@JuanGalilea](https://github.com/JuanGalilea)
11
10
  - **workflows:** Host the reusable GitHub workflows in this repo ([#120](https://github.com/apify/apify-test-tools/pull/120)) ([10f089d](https://github.com/apify/apify-test-tools/commit/10f089d85146ceb7cdae964cfa1fc2577df43a37)) by [@metalwarrior665](https://github.com/metalwarrior665)
11
+ - **mode:** Add grouped config mode ([#143](https://github.com/apify/apify-test-tools/pull/143)) ([9d0b93e](https://github.com/apify/apify-test-tools/commit/9d0b93e194a2cd810a31bcef4ca9457fd9ebfb9b)) by [@JuanGalilea](https://github.com/JuanGalilea)
12
12
 
13
13
  ### 🐛 Bug Fixes
14
14
 
15
15
  - Apply default actor timeout to runs ([#134](https://github.com/apify/apify-test-tools/pull/134)) ([82f5f7d](https://github.com/apify/apify-test-tools/commit/82f5f7d4de990db7ad8edf940c19ffd6b20bad13)) by [@Patai5](https://github.com/Patai5)
16
+ - Copy cli to zip to KV store local builds ([#151](https://github.com/apify/apify-test-tools/pull/151)) ([ecdda58](https://github.com/apify/apify-test-tools/commit/ecdda58b68a8c7173a023e3a92689bc4fa0ce53c)) by [@gytelio](https://github.com/gytelio), closes [#140](https://github.com/apify/apify-test-tools/issues/140)
17
+
18
+ ### 🚜 Refactor
19
+
20
+ - **workflows:** [**breaking**] Rename the floating tag to workflows-v0 ([#146](https://github.com/apify/apify-test-tools/pull/146)) ([c48fb22](https://github.com/apify/apify-test-tools/commit/c48fb223c885c4e5de7e5f64d8c14f6d03fcc7de)) by [@metalwarrior665](https://github.com/metalwarrior665)
21
+ - **bin:** [**breaking**] Remove GitHub event dependency from release command ([#153](https://github.com/apify/apify-test-tools/pull/153)) ([e6953aa](https://github.com/apify/apify-test-tools/commit/e6953aa095d1a92638c6d72441e1b312d9f835c3)) by [@metalwarrior665](https://github.com/metalwarrior665), closes [#131](https://github.com/apify/apify-test-tools/issues/131)
16
22
 
17
23
 
18
- <!-- git-cliff-unreleased-end -->
19
24
  ## [0.9.0](https://github.com/apify/apify-test-tools/releases/tag/v0.9.0) (2026-08-11)
20
25
 
21
26
  ### 🚀 Features
package/CONTRIBUTING.md CHANGED
@@ -10,7 +10,6 @@ The package consists of three parts:
10
10
 
11
11
  - `bin/build.ts` actor building
12
12
  - `bin/git.ts` git wrappers for getting relevant git commits and changed files
13
- - `bin/github.ts` github push event parsing
14
13
  - `bin/main.ts` entrypoing
15
14
  - `bin/slack.ts` sending notifications to slack
16
15
  - `bin/test-report.ts` processing vitest's test reports
@@ -40,12 +39,11 @@ git clone git@github.com:apify-store/testing-repo-for-github-actions.git
40
39
 
41
40
  #### Working on the CLI
42
41
 
43
- To work on the library, you just need to define `GITHUB_WORKSPACE` to tell the cli where you repo is located:
42
+ To work on the library, point the cli to your repo with `--workspace` (it defaults to the current directory):
44
43
 
45
44
  ```sh
46
- export GITHUB_WORKSPACE=../path/to/testing-repo-for-github-actions # path to the repo
47
45
  npx tsx bin/main.ts --help
48
- npx tsx bin/main.ts get-commits --target-branch master --source-branch feat/testing-feature-branch
46
+ npx tsx bin/main.ts --workspace ../path/to/testing-repo-for-github-actions get-commits --target-branch master --source-branch feat/testing-feature-branch
49
47
  ```
50
48
 
51
49
  #### Working on the library
@@ -71,14 +69,20 @@ this repo's own triggers.
71
69
  A `public_` filename is part of the contract — it is baked into every consumer's `uses:` line, so
72
70
  renaming one is a breaking change that needs a major tag bump, not a tidy-up.
73
71
 
74
- Consumers pin `@v0`, not `@master`. See
72
+ The tag is not semver, so `git-cliff` would abort on it. It is skipped only because
73
+ `apify/actions`' cliff.toml sets `tag_pattern = "v[0-9]+\."` — a release failing with
74
+ `Semver error: unexpected character` means that pattern changed, not that anything here is wrong.
75
+ The action's "Nothing to release" guard resolves to this tag and no longer fires, so an empty stable
76
+ release fails at `npm publish` instead of erroring cleanly.
77
+
78
+ Consumers pin `@workflows-v0`, not `@master`. See
75
79
  [Versioning and releases](./README.md#versioning-and-releases) in the README for how the tag and the
76
80
  npm release relate — the short version:
77
81
 
78
82
  - changing only a workflow needs no npm release
79
83
  - changing only the package needs no workflow change
80
84
  - a workflow that calls a **new** CLI feature must set `.github/workflows-package-version` to the
81
- version that will contain it, in the same PR. The `v0` tag is then held until that version is on
85
+ version that will contain it, in the same PR. The `workflows-v0` tag is then held until that version is on
82
86
  npm, so merging can't ship a workflow that calls a CLI that doesn't exist yet.
83
87
 
84
88
  `.github/workflows-package-version` holds one exact version, and the stable release writes it. The
@@ -99,5 +103,5 @@ pushing workflow changes.
99
103
 
100
104
  `public_review` is the odd one out: it fetches `.github/review-prompt.md` over HTTP at run time, because a
101
105
  reusable workflow runs with the caller's repo checked out and never gets its own. Its `prompt-ref`
102
- input defaults to `v0` so the instructions come from the same release as the workflow — leaving it
106
+ input defaults to `workflows-v0` so the instructions come from the same release as the workflow — leaving it
103
107
  at `master` would run released workflows against unreleased instructions.