Skip to content

Commit 6d1c1f8

Browse files
committed
ci(docker/prune-pull-requests-image-tags): fix test when running for tag event
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
1 parent de5f047 commit 6d1c1f8

2 files changed

Lines changed: 26 additions & 8 deletions

File tree

.github/workflows/__shared-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
contents: read
2323
packages: write
2424

25-
test-action-docker-prune-pull-requests-package-version:
25+
test-action-docker-prune-pull-requests-image-tags:
2626
needs: linter
2727
# yamllint disable-line rule:line-length
2828
uses: ./.github/workflows/__test-action-docker-prune-pull-requests-image-tags.yml

.github/workflows/__test-action-docker-prune-pull-requests-image-tags.yml

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -97,6 +98,7 @@ jobs:
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

Comments
 (0)