@@ -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
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 :
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
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 "
0 commit comments