Skip to content

Commit cd76baa

Browse files
authored
Update workflow for release (#16)
1 parent d419ab2 commit cd76baa

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

.github/workflows/promote-release.yml

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,56 @@
11
name: Promote Pre-release to Release
22

33
on:
4-
workflow_run:
5-
workflows: [Release]
6-
types:
7-
- completed
4+
schedule:
5+
- cron: '30 23 * * *'
86

97
jobs:
108
promote:
119
runs-on: ubuntu-latest
12-
if: github.event.workflow_run.conclusion == 'success'
13-
1410
steps:
15-
- name: Wait 24 hours
16-
run: sleep 86400
17-
18-
- name: Checkout repository
19-
uses: actions/checkout@v4
20-
21-
- name: Get latest pre-release
22-
id: get_release
11+
- name: Check pre-release age
12+
id: check_release
2313
uses: actions/github-script@v7
2414
with:
2515
script: |
26-
const response = await github.rest.repos.getLatestRelease({
27-
owner: context.repo.owner,
28-
repo: context.repo.repo
29-
});
30-
if (!response.data.prerelease) {
31-
console.log('Latest release is not a pre-release. Skipping.');
32-
return;
16+
try {
17+
const releases = await github.rest.repos.listReleases({
18+
owner: context.repo.owner,
19+
repo: context.repo.repo,
20+
per_page: 1
21+
});
22+
if (releases.data.length === 0) {
23+
core.setFailed('No releases found');
24+
return;
25+
}
26+
const latestRelease = releases.data[0];
27+
if (!latestRelease.prerelease) {
28+
core.setFailed('Latest release is not a pre-release');
29+
return;
30+
}
31+
const releaseDate = new Date(latestRelease.published_at);
32+
const now = new Date();
33+
const hoursDiff = (now - releaseDate) / (1000 * 60 * 60);
34+
if (hoursDiff < 24) {
35+
core.setFailed(`Pre-release is only ${Math.floor(hoursDiff)} hours old. Need to wait ${Math.ceil(24 - hoursDiff)} more hours.`);
36+
return;
37+
}
38+
core.setOutput('release_id', latestRelease.id);
39+
core.setOutput('tag_name', latestRelease.tag_name);
40+
console.log(`Pre-release ${latestRelease.tag_name} is ${Math.floor(hoursDiff)} hours old - proceeding with promotion...`);
41+
} catch (error) {
42+
core.setFailed(`Error checking release: ${error.message}`);
3343
}
34-
return response.data;
35-
result-encoding: string
36-
44+
3745
- name: Update to full release
38-
if: steps.get_release.outputs.result != ''
46+
if: steps.check_release.outputs.release_id != ''
3947
uses: actions/github-script@v7
4048
with:
4149
script: |
42-
const release = JSON.parse('${{ steps.get_release.outputs.result }}');
50+
const releaseId = '${{ steps.check_release.outputs.release_id }}';
4351
await github.rest.repos.updateRelease({
4452
owner: context.repo.owner,
4553
repo: context.repo.repo,
46-
release_id: release.id,
54+
release_id: releaseId,
4755
prerelease: false
4856
});

.github/workflows/test-and-coverage.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ on:
1111
- 'mpvx.xcodeproj/**'
1212
tags:
1313
- '*'
14+
pull_request:
1415

1516
jobs:
1617
build_and_test:

0 commit comments

Comments
 (0)