Skip to content

Commit 10cd4b8

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 3b9d3b1 commit 10cd4b8

6 files changed

Lines changed: 220 additions & 635 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: 57 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-${{ matrix.artifact-suffix }}-${{ github.run_id }}-${{ github.run_attempt }}
3940

4041
- name: Assert - Check "package" outputs
4142
env:
@@ -57,6 +58,43 @@ 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+
actions: read
74+
contents: read
75+
strategy:
76+
matrix:
77+
include:
78+
- working-directory: tests/npm
79+
artifact-suffix: npm
80+
install-command: npm install --force --legacy-peer-deps --no-audit --no-fund --loglevel=warn
81+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-npm'] }}
82+
- working-directory: tests/pnpm
83+
artifact-suffix: pnpm
84+
install-command: pnpm install
85+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-pnpm'] }}
86+
- working-directory: tests/pnpm-package-manager
87+
artifact-suffix: pnpm-package-manager
88+
install-command: pnpm install
89+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-pnpm-package-manager'] }}
90+
- working-directory: tests/yarn
91+
artifact-suffix: yarn
92+
install-command: yarn add
93+
package-tarball-artifact-id: ${{ needs.test.outputs['package-tarball-artifact-id-yarn'] }}
94+
steps:
95+
- name: Arrange - Checkout sources
96+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
97+
6098
- name: Arrange - Configure Node.js version
6199
run: echo "lts/*" > .nvmrc
62100
working-directory: ${{ matrix.working-directory }}
@@ -67,22 +105,30 @@ jobs:
67105
with:
68106
working-directory: ${{ matrix.working-directory }}
69107

108+
- name: Assert - Check package tarball artifact ID
109+
env:
110+
PACKAGE_TARBALL_ARTIFACT_ID: ${{ matrix.package-tarball-artifact-id }}
111+
run: |
112+
if [ -z "$PACKAGE_TARBALL_ARTIFACT_ID" ]; then
113+
echo "package-tarball-artifact-id output is empty"
114+
exit 1
115+
fi
116+
70117
- name: Assert - Download package tarball artifact by ID
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+
TARBALL_NAME: package-tarball-${{ matrix.artifact-suffix }}-${{ github.run_id }}-${{ github.run_attempt }}.tgz
80128
INSTALL_COMMAND: ${{ matrix.install-command }}
81129
working-directory: ${{ runner.temp }}
82130
run: |
83-
tarball_name="$(basename "$TARBALL_PATH")"
84-
85-
if [ ! -f "./$tarball_name" ]; then
131+
if [ ! -f "./$TARBALL_NAME" ]; then
86132
echo "Downloaded package tarball artifact does not exist"
87133
exit 1
88134
fi
@@ -93,4 +139,4 @@ jobs:
93139
fi
94140
95141
# Install the tarball to verify it's a valid npm package
96-
$INSTALL_COMMAND "./$tarball_name"
142+
$INSTALL_COMMAND "./$TARBALL_NAME"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
artifact-name: release-package-tarball-${{ github.run_id }}-${{ github.job}}
26+
27+
release:
28+
name: Act - Run "release" workflow
29+
needs: package
30+
permissions:
31+
contents: read
32+
id-token: write
33+
packages: write
34+
uses: ./.github/workflows/release.yml
35+
with:
36+
package-tarball-artifact-id: ${{ needs.package.outputs.package-tarball-artifact-id }}
37+
dry-run: true
38+
provenance: false

0 commit comments

Comments
 (0)