Skip to content

Commit 69ff1ed

Browse files
authored
Merge pull request #479 from MrAnno/nightly-on-new-changes
ci: schedule nightly only when there are new changes on main
2 parents c3be5ff + 13fbfd6 commit 69ff1ed

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

.github/workflows/axosyslog-nightly.yml

+25-8
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,24 @@ on:
99

1010

1111
jobs:
12+
precheck:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
nightly-needed: ${{ github.event_name != 'schedule' || fromJson(steps.previous-nightly.outputs.data).workflow_runs[0].head_sha != github.sha }}
16+
steps:
17+
- name: Check previous nightly commit
18+
id: previous-nightly
19+
uses: octokit/request-action@v2.x
20+
with:
21+
route: GET /repos/${{github.repository}}/actions/workflows/axosyslog-nightly.yml/runs?per_page=1&status=success
22+
env:
23+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
24+
- run: |
25+
echo "The previous nightly was built from commit ${{ fromJson(steps.previous-nightly.outputs.data).workflow_runs[0].head_sha }}"
26+
1227
tarball:
28+
if: needs.precheck.outputs.nightly-needed == 'true'
29+
needs: precheck
1330
runs-on: ubuntu-latest
1431
outputs:
1532
snapshot-version: ${{ steps.snapshot-version.outputs.SNAPSHOT_VERSION }}
@@ -74,7 +91,6 @@ jobs:
7491
pkg-type: nightly
7592

7693
publish-image:
77-
if: github.ref == 'refs/heads/main'
7894
uses: ./.github/workflows/axosyslog-docker.yml
7995
needs: tarball
8096
with:
@@ -93,8 +109,8 @@ jobs:
93109
uses: actions/github-script@v7
94110
with:
95111
script: |
96-
const daysToKeep = 30
97-
const snapshotTagPattern = /_git[0-9]+/
112+
const nightliesToKeep = 30
113+
const nightlyTagPattern = /_git[0-9]+/
98114
99115
const package_name = "axosyslog"
100116
const org = "axoflow"
@@ -105,13 +121,12 @@ jobs:
105121
{ package_type: "container", package_name: package_name, org: org }
106122
)
107123
108-
const oldPackageDate = new Date()
109-
oldPackageDate.setDate(oldPackageDate.getDate() - daysToKeep)
110-
111-
const oldSnapshotVersions = allPackageVersions.filter((p) => {
112-
return new Date(p.updated_at) < oldPackageDate && p.metadata.container && p.metadata.container.tags.length != 0 && p.metadata.container.tags.every((t) => snapshotTagPattern.test(t))
124+
const nightlyPackageVersions = allPackageVersions.filter((p) => {
125+
return p.metadata.container && p.metadata.container.tags.length != 0 && p.metadata.container.tags.every((t) => nightlyTagPattern.test(t))
113126
})
114127
128+
const oldSnapshotVersions = nightlyPackageVersions.sort((a,b) => new Date(b.updated_at) - new Date(a.updated_at)).slice(nightliesToKeep);
129+
115130
if (oldSnapshotVersions.length === 0) {
116131
console.log("Nothing to remove")
117132
return
@@ -121,6 +136,7 @@ jobs:
121136
122137
console.log(`Removing the following images: ${oldSnapshotTags}`)
123138
139+
/* REVERT after a few days
124140
const manifestsRequests = oldSnapshotTags.map((t) => {
125141
const manifest = fetch(`https://ghcr.io/v2/${image}/manifests/${t}`, {
126142
method: "GET",
@@ -153,3 +169,4 @@ jobs:
153169
await Promise.all(oldSnapshotVersions.map((v) => {
154170
return github.rest.packages.deletePackageVersionForOrg({ package_type: "container", package_name: package_name, org: org, package_version_id: v.id})
155171
}))
172+
*/

0 commit comments

Comments
 (0)