Skip to content

Commit 6388058

Browse files
authored
Merge pull request #1086 from nowcommunity/more-fixes-to-actions
More fixes to actions
2 parents f825d65 + 050f4de commit 6388058

1 file changed

Lines changed: 147 additions & 11 deletions

File tree

.github/workflows/build.yaml

Lines changed: 147 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ on:
77
branches:
88
- main
99
env:
10-
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
1110
BACKEND_IMAGE_NAME: ${{ github.event_name == 'release' && 'nowdb-backend' || 'nowdb-backend-staging' }}
1211
FRONTEND_IMAGE_NAME: ${{ github.event_name == 'release' && 'nowdb-frontend' || 'nowdb-frontend-staging' }}
1312
BACKEND_URL: ${{ github.event_name == 'release' && secrets.BACKEND_URL_PROD || secrets.BACKEND_URL_STAGING }}
@@ -97,16 +96,153 @@ jobs:
9796
delete_old_staging:
9897
runs-on: ubuntu-latest
9998
if: ${{ github.event_name == 'push' }}
100-
env:
101-
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
99+
permissions:
100+
packages: write
101+
contents: read
102102
steps:
103-
- uses: actions/delete-package-versions@v5
103+
- uses: actions/github-script@v8
104+
env:
105+
PACKAGE_NAME: nowdb-frontend-staging
106+
MIN_VERSIONS_TO_KEEP: '3'
104107
with:
105-
package-name: 'nowdb-frontend-staging'
106-
min-versions-to-keep: 3
107-
package-type: 'container'
108-
- uses: actions/delete-package-versions@v5
108+
script: |
109+
const packageName = process.env.PACKAGE_NAME;
110+
const minVersionsToKeep = Number(process.env.MIN_VERSIONS_TO_KEEP ?? '0');
111+
const owner = context.repo.owner;
112+
113+
const listVersions = async () => {
114+
try {
115+
return await github.paginate(
116+
github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg,
117+
{
118+
package_type: 'container',
119+
package_name: packageName,
120+
org: owner,
121+
per_page: 100,
122+
},
123+
);
124+
} catch (error) {
125+
if (error.status !== 404) {
126+
throw error;
127+
}
128+
129+
return github.paginate(
130+
github.rest.packages.getAllPackageVersionsForPackageOwnedByUser,
131+
{
132+
package_type: 'container',
133+
package_name: packageName,
134+
username: owner,
135+
per_page: 100,
136+
},
137+
);
138+
}
139+
};
140+
141+
const deleteVersion = async (packageVersionId) => {
142+
try {
143+
await github.rest.packages.deletePackageVersionForOrg({
144+
package_type: 'container',
145+
package_name: packageName,
146+
org: owner,
147+
package_version_id: packageVersionId,
148+
});
149+
} catch (error) {
150+
if (error.status !== 404) {
151+
throw error;
152+
}
153+
154+
await github.rest.packages.deletePackageVersionForUser({
155+
package_type: 'container',
156+
package_name: packageName,
157+
username: owner,
158+
package_version_id: packageVersionId,
159+
});
160+
}
161+
};
162+
163+
const versions = await listVersions();
164+
165+
const versionsToDelete = versions
166+
.slice()
167+
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))
168+
.slice(minVersionsToKeep);
169+
170+
core.info(`Found ${versions.length} versions for ${packageName}. Deleting ${versionsToDelete.length}.`);
171+
172+
for (const version of versionsToDelete) {
173+
await deleteVersion(version.id);
174+
core.info(`Deleted ${packageName} version ${version.id}.`);
175+
}
176+
- uses: actions/github-script@v8
177+
env:
178+
PACKAGE_NAME: nowdb-backend-staging
179+
MIN_VERSIONS_TO_KEEP: '3'
109180
with:
110-
package-name: 'nowdb-backend-staging'
111-
min-versions-to-keep: 3
112-
package-type: 'container'
181+
script: |
182+
const packageName = process.env.PACKAGE_NAME;
183+
const minVersionsToKeep = Number(process.env.MIN_VERSIONS_TO_KEEP ?? '0');
184+
const owner = context.repo.owner;
185+
186+
const listVersions = async () => {
187+
try {
188+
return await github.paginate(
189+
github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg,
190+
{
191+
package_type: 'container',
192+
package_name: packageName,
193+
org: owner,
194+
per_page: 100,
195+
},
196+
);
197+
} catch (error) {
198+
if (error.status !== 404) {
199+
throw error;
200+
}
201+
202+
return github.paginate(
203+
github.rest.packages.getAllPackageVersionsForPackageOwnedByUser,
204+
{
205+
package_type: 'container',
206+
package_name: packageName,
207+
username: owner,
208+
per_page: 100,
209+
},
210+
);
211+
}
212+
};
213+
214+
const deleteVersion = async (packageVersionId) => {
215+
try {
216+
await github.rest.packages.deletePackageVersionForOrg({
217+
package_type: 'container',
218+
package_name: packageName,
219+
org: owner,
220+
package_version_id: packageVersionId,
221+
});
222+
} catch (error) {
223+
if (error.status !== 404) {
224+
throw error;
225+
}
226+
227+
await github.rest.packages.deletePackageVersionForUser({
228+
package_type: 'container',
229+
package_name: packageName,
230+
username: owner,
231+
package_version_id: packageVersionId,
232+
});
233+
}
234+
};
235+
236+
const versions = await listVersions();
237+
238+
const versionsToDelete = versions
239+
.slice()
240+
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))
241+
.slice(minVersionsToKeep);
242+
243+
core.info(`Found ${versions.length} versions for ${packageName}. Deleting ${versionsToDelete.length}.`);
244+
245+
for (const version of versionsToDelete) {
246+
await deleteVersion(version.id);
247+
core.info(`Deleted ${packageName} version ${version.id}.`);
248+
}

0 commit comments

Comments
 (0)