@@ -55,10 +55,11 @@ jobs:
5555 core.setOutput("tag", `pr-${prNumber}`);
5656
5757 // Define expected packages
58- const packages = [
59- `ci-github-container/${process.env.IMAGE_NAME}`,
60- `ci-github-container/${process.env.IMAGE_NAME}/cache`,
61- ];
58+ const packages = [`ci-github-container/${process.env.IMAGE_NAME}`];
59+ const isTagPush = context.eventName === "push" && context.ref.startsWith("refs/tags/");
60+ if (!isTagPush) {
61+ packages.push(`ci-github-container/${process.env.IMAGE_NAME}/cache`);
62+ }
6263
6364 core.setOutput("packages", packages.join("\n"));
6465
9798 packages : read
9899 outputs :
99100 base-image : ${{ steps.assert-built-images.outputs.base-image }}
101+ preserve-tags-filter : ${{ steps.assert-built-images.outputs.preserve-tags-filter }}
100102 steps :
101103 - name : Assert - Ensure images have been built
102104 id : assert-built-images
@@ -129,11 +131,28 @@ jobs:
129131 if (!builtImages[process.env.IMAGE_NAME] || !builtImages[process.env.IMAGE_NAME].images.length) {
130132 return core.setFailed(`No built images found for image name "${process.env.IMAGE_NAME}"`);
131133 }
132- const baseImage = builtImages[process.env.IMAGE_NAME].images[0];
134+ const builtImage = builtImages[process.env.IMAGE_NAME];
135+ const baseImage = builtImage.images[0];
133136 await exec.exec("docker", ["pull", baseImage]);
134137
135138 core.setOutput("base-image", baseImage);
136139
140+ const isPullRequestEvent = ["pull_request", "pull_request_review", "issue_comment"].includes(context.eventName);
141+ if (isPullRequestEvent) {
142+ return;
143+ }
144+
145+ const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
146+ const publishedTags = (builtImage.tags || []).filter(Boolean);
147+ if (!publishedTags.length) {
148+ return;
149+ }
150+
151+ core.setOutput(
152+ "preserve-tags-filter",
153+ `^(?:${publishedTags.map(escapeRegex).join("|")})$`
154+ );
155+
137156 act :
138157 name : Act - Prune pull requests image tags
139158 runs-on : ubuntu-latest
@@ -169,6 +188,7 @@ jobs:
169188 with :
170189 github-token : ${{ secrets.GITHUB_TOKEN }}
171190 image : ${{ env.IMAGE_NAME }}
191+ preserve-tags-filter : ${{ needs.arrange-verify.outputs.preserve-tags-filter }}
172192
173193 assert :
174194 name : Assert - Verify deleted image tags
@@ -211,14 +231,12 @@ jobs:
211231 }
212232
213233 - uses : docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
214- if : ${{ github.event_name == 'pull_request' }}
215234 with :
216235 registry : ghcr.io
217236 username : ${{ github.repository_owner }}
218237 password : ${{ secrets.GITHUB_TOKEN }}
219238
220239 - name : Assert - Ensure current image tag didn't get deleted
221- if : ${{ github.event_name == 'pull_request' }}
222240 env :
223241 IMAGE_NAME : ${{ env.IMAGE_NAME }}
224242 run : |
0 commit comments