Skip to content

Commit 4aa81b4

Browse files
Copilotneilime
andcommitted
fix(release): use fs instead of glob for tarball matching, fix artifact download path
Co-authored-by: neilime <314088+neilime@users.noreply.github.com> Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
1 parent ea518ab commit 4aa81b4

8 files changed

Lines changed: 281 additions & 655 deletions

File tree

.github/workflows/__shared-ci.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,12 @@ jobs:
6161
issues: read
6262
security-events: write
6363
secrets: inherit
64+
65+
test-workflow-release:
66+
name: Test workflow "release"
67+
needs: linter
68+
uses: ./.github/workflows/__test-workflow-release.yml
69+
permissions:
70+
contents: read
71+
packages: write
72+
id-token: write

.github/workflows/__test-action-package.yml

Lines changed: 70 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,22 @@ jobs:
1111
runs-on: ubuntu-latest
1212
permissions:
1313
contents: read
14+
outputs:
15+
package-tarball-artifact-id-npm: ${{ steps.package-tarball-artifact.outputs.package-tarball-artifact-id-npm }}
16+
package-tarball-artifact-id-pnpm: ${{ steps.package-tarball-artifact.outputs.package-tarball-artifact-id-pnpm }}
17+
package-tarball-artifact-id-pnpm-package-manager: ${{ steps.package-tarball-artifact.outputs.package-tarball-artifact-id-pnpm-package-manager }}
18+
package-tarball-artifact-id-yarn: ${{ steps.package-tarball-artifact.outputs.package-tarball-artifact-id-yarn }}
1419
strategy:
1520
matrix:
1621
include:
1722
- working-directory: tests/npm
1823
artifact-suffix: npm
19-
install-command: npm install --force --legacy-peer-deps --no-audit --no-fund --loglevel=warn
2024
- working-directory: tests/pnpm
2125
artifact-suffix: pnpm
22-
install-command: pnpm install
2326
- working-directory: tests/pnpm-package-manager
2427
artifact-suffix: pnpm-package-manager
25-
install-command: pnpm install
2628
- working-directory: tests/yarn
2729
artifact-suffix: yarn
28-
install-command: yarn add
2930
steps:
3031
- name: Arrange - Checkout sources
3132
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -35,7 +36,7 @@ jobs:
3536
uses: ./actions/package
3637
with:
3738
working-directory: ${{ matrix.working-directory }}
38-
artifact-name: package-tarball-${{ matrix.artifact-suffix }}
39+
artifact-name: package-tarball-${{ github.job }}-${{ matrix.artifact-suffix }}-${{ github.run_id }}-${{ github.run_attempt }}
3940

4041
- name: Assert - Check "package" outputs
4142
env:
@@ -57,6 +58,42 @@ jobs:
5758
exit 1
5859
fi
5960
61+
- id: package-tarball-artifact
62+
name: Arrange - Export package tarball artifact ID
63+
env:
64+
ARTIFACT_SUFFIX: ${{ matrix.artifact-suffix }}
65+
PACKAGE_TARBALL_ARTIFACT_ID: ${{ steps.act-package.outputs.package-tarball-artifact-id }}
66+
run: echo "package-tarball-artifact-id-${ARTIFACT_SUFFIX}=${PACKAGE_TARBALL_ARTIFACT_ID}" >> "$GITHUB_OUTPUT"
67+
68+
assert-package-tarball:
69+
name: Assert package tarball (${{ matrix.working-directory }})
70+
needs: test
71+
runs-on: ubuntu-latest
72+
permissions:
73+
contents: read
74+
strategy:
75+
matrix:
76+
include:
77+
- working-directory: tests/npm
78+
artifact-suffix: npm
79+
install-command: npm install --force --legacy-peer-deps --no-audit --no-fund --loglevel=warn
80+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-npm'] }}
81+
- working-directory: tests/pnpm
82+
artifact-suffix: pnpm
83+
install-command: pnpm install
84+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-pnpm'] }}
85+
- working-directory: tests/pnpm-package-manager
86+
artifact-suffix: pnpm-package-manager
87+
install-command: pnpm install
88+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-pnpm-package-manager'] }}
89+
- working-directory: tests/yarn
90+
artifact-suffix: yarn
91+
install-command: yarn add
92+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-yarn'] }}
93+
steps:
94+
- name: Arrange - Checkout sources
95+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
96+
6097
- name: Arrange - Configure Node.js version
6198
run: echo "lts/*" > .nvmrc
6299
working-directory: ${{ matrix.working-directory }}
@@ -67,22 +104,44 @@ jobs:
67104
with:
68105
working-directory: ${{ matrix.working-directory }}
69106

107+
- name: Assert - Check package tarball artifact ID
108+
env:
109+
PACKAGE_TARBALL_ARTIFACT_ID: ${{ matrix.package-tarball-artifact-id }}
110+
run: |
111+
if [ -z "$PACKAGE_TARBALL_ARTIFACT_ID" ]; then
112+
echo "package-tarball-artifact-id output is empty"
113+
exit 1
114+
fi
115+
70116
- name: Assert - Download package tarball artifact by ID
117+
id: download-package-tarball
71118
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
72119
with:
73-
artifact-ids: ${{ steps.act-package.outputs.package-tarball-artifact-id }}
120+
artifact-ids: ${{ matrix.package-tarball-artifact-id }}
74121
path: ${{ runner.temp }}
75122
skip-decompress: true
123+
github-token: ${{ github.token }}
76124

77125
- name: Assert - Check downloaded package tarball artifact
78126
env:
79-
TARBALL_PATH: ${{ steps.act-package.outputs.package-tarball-path }}
127+
DOWNLOAD_PATH: ${{ steps.download-package-tarball.outputs.download-path }}
80128
INSTALL_COMMAND: ${{ matrix.install-command }}
81-
working-directory: ${{ runner.temp }}
82129
run: |
83-
tarball_name="$(basename "$TARBALL_PATH")"
130+
tarball_path="$DOWNLOAD_PATH"
131+
132+
if [ -d "$tarball_path" ]; then
133+
tarball_matches="$(find "$tarball_path" -maxdepth 1 -type f -name '*.tgz')"
134+
tarball_count="$(printf '%s\n' "$tarball_matches" | sed '/^$/d' | wc -l)"
135+
136+
if [ "$tarball_count" -ne 1 ]; then
137+
echo "Expected exactly one downloaded package tarball, found $tarball_count"
138+
exit 1
139+
fi
140+
141+
tarball_path="$tarball_matches"
142+
fi
84143
85-
if [ ! -f "./$tarball_name" ]; then
144+
if [ ! -f "$tarball_path" ]; then
86145
echo "Downloaded package tarball artifact does not exist"
87146
exit 1
88147
fi
@@ -93,4 +152,4 @@ jobs:
93152
fi
94153
95154
# Install the tarball to verify it's a valid npm package
96-
$INSTALL_COMMAND "./$tarball_name"
155+
$INSTALL_COMMAND "$tarball_path"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Internal - Tests for "release" workflow
2+
3+
on:
4+
workflow_call:
5+
6+
permissions: {}
7+
8+
jobs:
9+
package:
10+
name: Arrange package tarball
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: read
14+
outputs:
15+
package-tarball-artifact-id: ${{ steps.package.outputs.package-tarball-artifact-id }}
16+
steps:
17+
- name: Arrange - Checkout sources
18+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
19+
20+
- id: package
21+
name: Arrange - Create package tarball
22+
uses: ./actions/package
23+
with:
24+
working-directory: tests/npm
25+
26+
release:
27+
name: Act - Run "release" workflow
28+
needs: package
29+
permissions:
30+
contents: read
31+
id-token: write
32+
packages: write
33+
uses: ./.github/workflows/release.yml
34+
with:
35+
package-tarball-artifact-id: ${{ needs.package.outputs.package-tarball-artifact-id }}
36+
dry-run: true
37+
provenance: false

0 commit comments

Comments
 (0)