@@ -46,59 +46,69 @@ jobs:
4646 script : |
4747 const assert = require("assert");
4848
49- const builtImageOutput = ${{ steps.build-image.outputs.built-image }};
49+ const builtImageOutput = ${{ toJSON( steps.build-image.outputs.built-image) }};
5050 assert(builtImageOutput, `"built-image" output is empty`);
51- assert.equal(builtImageOutput.name, "application-test", `"name" output is not valid`);
52- assert.equal(builtImageOutput.registry, "ghcr.io", `"registry" output is not valid`);
51+
52+ let builtImage;
53+ try {
54+ builtImage = JSON.parse(builtImageOutput);
55+ } catch (error) {
56+ assert.fail(`Failed to parse built image output: ${error}`);
57+ }
58+
59+ assert(builtImage, `"built-image" output is empty`);
60+
61+ assert.equal(builtImage.name, "application-test", `"name" output is not valid`);
62+ assert.equal(builtImage.registry, "ghcr.io", `"registry" output is not valid`);
5363 assert.equal(
54- builtImageOutput .repository,
64+ builtImage .repository,
5565 "hoverkraft-tech/ci-github-container/application-test",
5666 `"repository" output is not valid`
5767 );
5868 assert.equal(
59- builtImageOutput .digests.length,
69+ builtImage .digests.length,
6070 1,
6171 `"digests" output is not valid`
6272 );
6373 assert.match(
64- builtImageOutput .digests[0],
74+ builtImage .digests[0],
6575 /^ghcr\.io\/hoverkraft-tech\/ci-github-container\/application-test@sha256:[a-f0-9]{64}$/,
6676 `"digests" output is not valid`
6777 );
6878
6979 // Annotations
7080 assert.match(
71- builtImageOutput .annotations["org.opencontainers.image.created"],
81+ builtImage .annotations["org.opencontainers.image.created"],
7282 /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z/,
7383 `"annotations.org.opencontainers.image.created" output is not valid`
7484 );
7585 assert.equal(
76- builtImageOutput .annotations["org.opencontainers.image.description"],
86+ builtImage .annotations["org.opencontainers.image.description"],
7787 "Opinionated GitHub Actions and workflows for continuous integration in container (OCI) context",
7888 `"annotations.org.opencontainers.image.authors" output is not valid`
7989 );
8090 assert.equal(
81- builtImageOutput .annotations["org.opencontainers.image.licenses"],
91+ builtImage .annotations["org.opencontainers.image.licenses"],
8292 "MIT",
8393 `"annotations.org.opencontainers.image.licenses" output is not valid`
8494 );
8595 assert.match(
86- builtImageOutput .annotations["org.opencontainers.image.revision"],
96+ builtImage .annotations["org.opencontainers.image.revision"],
8797 /^[a-f0-9]{40}$/,
8898 `"annotations.org.opencontainers.image.revision" output is not valid`
8999 );
90100 assert.equal(
91- builtImageOutput .annotations["org.opencontainers.image.source"],
101+ builtImage .annotations["org.opencontainers.image.source"],
92102 "https://github.com/hoverkraft-tech/ci-github-container",
93103 `"annotations.org.opencontainers.image.source" output is not valid`
94104 );
95105 assert.equal(
96- builtImageOutput .annotations["org.opencontainers.image.title"],
106+ builtImage .annotations["org.opencontainers.image.title"],
97107 "ci-github-container",
98108 `"annotations.org.opencontainers.image.title" output is not valid`
99109 );
100110 assert.equal(
101- builtImageOutput .annotations["org.opencontainers.image.url"],
111+ builtImage .annotations["org.opencontainers.image.url"],
102112 "https://github.com/hoverkraft-tech/ci-github-container",
103113 `"annotations.org.opencontainers.image.url" output is not valid`
104114 );
@@ -108,47 +118,47 @@ jobs:
108118 const prShaTag = `pr-${{ github.event.pull_request.number }}-${shortSha}`;
109119 const prTag = `pr-${{ github.event.pull_request.number }}`;
110120
111- assert.equal(builtImageOutput .tags.length, 2, `"tags" output is not valid`);
121+ assert.equal(builtImage .tags.length, 2, `"tags" output is not valid`);
112122
113- assert.equal(builtImageOutput .tags[0], prShaTag, `"tags" output is not valid`);
114- assert.equal(builtImageOutput .tags[1], prTag, `"tags" output is not valid`);
123+ assert.equal(builtImage .tags[0], prShaTag, `"tags" output is not valid`);
124+ assert.equal(builtImage .tags[1], prTag, `"tags" output is not valid`);
115125
116126 assert.equal(
117- builtImageOutput .images.length,
127+ builtImage .images.length,
118128 2,
119129 `"images" output is not valid`
120130 );
121131 assert.equal(
122- builtImageOutput .images[0],
132+ builtImage .images[0],
123133 `ghcr.io/hoverkraft-tech/ci-github-container/application-test:${prShaTag}`,
124134 `"images" output is not valid`
125135 );
126136 assert.equal(
127- builtImageOutput .images[1],
137+ builtImage .images[1],
128138 `ghcr.io/hoverkraft-tech/ci-github-container/application-test:${prTag}`,
129139 `"images" output is not valid`
130140 );
131141 assert.equal(
132- builtImageOutput .annotations["org.opencontainers.image.version"],
142+ builtImage .annotations["org.opencontainers.image.version"],
133143 prTag,
134144 `"annotations.org.opencontainers.image.version" output is not valid`
135145 );
136146
137147 } else {
138148 const refTag = `${{ github.ref_name }}`;
139149
140- assert.equal(builtImageOutput .tags.length, 1, `"tags" output is not valid`);
141- assert.equal(builtImageOutput .tags[0], refTag, `"tags" output is not valid`);
150+ assert.equal(builtImage .tags.length, 1, `"tags" output is not valid`);
151+ assert.equal(builtImage .tags[0], refTag, `"tags" output is not valid`);
142152
143- assert.equal(builtImageOutput .images.length, 1, `"images" output is not valid`);
153+ assert.equal(builtImage .images.length, 1, `"images" output is not valid`);
144154 assert.equal(
145- builtImageOutput .images[0],
155+ builtImage .images[0],
146156 `ghcr.io/hoverkraft-tech/ci-github-container/application-test:${refTag}`,
147157 `"images" output is not valid`
148158 );
149159
150160 assert.equal(
151- builtImageOutput .annotations["org.opencontainers.image.version"],
161+ builtImage .annotations["org.opencontainers.image.version"],
152162 refTag,
153163 `"annotations.org.opencontainers.image.version" output is not valid`
154164 );
@@ -211,11 +221,20 @@ jobs:
211221 script : |
212222 const assert = require("assert");
213223
214- const builtImageOutput = ${{ steps.build-image.outputs.built-image }};
224+ const builtImageOutput = ${{ toJSON( steps.build-image.outputs.built-image) }};
215225 assert(builtImageOutput, `"built-image" output is empty`);
216226
217- assert.equal(builtImageOutput.tags.length, 1, `"tags" output is not valid`);
218- assert.equal(builtImageOutput.tags[0], '0.1.0', `"tags" output is not valid`);
227+ let builtImage;
228+ try {
229+ builtImage = JSON.parse(builtImageOutput);
230+ } catch (error) {
231+ assert.fail(`Failed to parse built image output: ${error}`);
232+ }
233+
234+ assert(builtImage, `"built-image" output is empty`);
235+
236+ assert.equal(builtImage.tags.length, 1, `"tags" output is not valid`);
237+ assert.equal(builtImage.tags[0], '0.1.0', `"tags" output is not valid`);
219238
220239 - uses : docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
221240 with :
0 commit comments