mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-06 04:22:01 +00:00
Fix promoting CLI release to "latest" GH Release (#10003)
The logic to retrieve the latest release was not working correctly, so use the `getLatestRelease()` function instead of assuming that `release[0]` is tagged as the latest.
This commit is contained in:
18
.github/workflows/release.yml
vendored
18
.github/workflows/release.yml
vendored
@@ -56,15 +56,6 @@ jobs:
|
|||||||
GA_TRACKING_ID: ${{ secrets.GA_TRACKING_ID }}
|
GA_TRACKING_ID: ${{ secrets.GA_TRACKING_ID }}
|
||||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||||
|
|
||||||
- name: Set latest Release to `vercel` (if a Publish Happened)
|
|
||||||
if: steps.changesets.outputs.published == 'true'
|
|
||||||
uses: actions/github-script@v6
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GH_TOKEN_PULL_REQUESTS }}
|
|
||||||
script: |
|
|
||||||
const script = require('./utils/update-latest-release.js')
|
|
||||||
await script({ github, context })
|
|
||||||
|
|
||||||
- name: Trigger Update (if a Publish Happened)
|
- name: Trigger Update (if a Publish Happened)
|
||||||
if: steps.changesets.outputs.published == 'true'
|
if: steps.changesets.outputs.published == 'true'
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v6
|
||||||
@@ -73,3 +64,12 @@ jobs:
|
|||||||
script: |
|
script: |
|
||||||
const script = require('./utils/trigger-update-workflow.js')
|
const script = require('./utils/trigger-update-workflow.js')
|
||||||
await script({ github, context })
|
await script({ github, context })
|
||||||
|
|
||||||
|
- name: Set latest Release to `vercel` (if a Publish Happened)
|
||||||
|
if: steps.changesets.outputs.published == 'true'
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GH_TOKEN_PULL_REQUESTS }}
|
||||||
|
script: |
|
||||||
|
const script = require('./utils/update-latest-release.js')
|
||||||
|
await script({ github, context })
|
||||||
|
|||||||
20
utils/update-latest-release.js
vendored
20
utils/update-latest-release.js
vendored
@@ -1,24 +1,28 @@
|
|||||||
|
function isVercelCliRelease(release) {
|
||||||
|
return release.tag_name.startsWith('vercel@');
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = async ({ github, context }) => {
|
module.exports = async ({ github, context }) => {
|
||||||
const { owner, repo } = context.repo;
|
const { owner, repo } = context.repo;
|
||||||
const response = await github.rest.repos.listReleases({ owner, repo });
|
|
||||||
|
|
||||||
function isVercelCliRelease(release) {
|
const { data: latestRelease } = await github.rest.repos.getLatestRelease({
|
||||||
return release.tag_name.startsWith('vercel@');
|
owner,
|
||||||
}
|
repo,
|
||||||
|
});
|
||||||
|
|
||||||
const latestRelease = response.data[0];
|
|
||||||
if (isVercelCliRelease(latestRelease)) {
|
if (isVercelCliRelease(latestRelease)) {
|
||||||
console.log(`Latest release is "${latestRelease.tag_name}" - skipping`);
|
console.log(`Latest release is "${latestRelease.tag_name}" - skipping`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const latestVercelRelease = response.data.find(isVercelCliRelease);
|
const response = await github.rest.repos.listReleases({ owner, repo });
|
||||||
console.log(`Promoting "${latestVercelRelease.tag_name}" to latest release`);
|
const latestCliRelease = response.data.find(isVercelCliRelease);
|
||||||
|
console.log(`Promoting "${latestCliRelease.tag_name}" to latest release`);
|
||||||
|
|
||||||
await github.rest.repos.updateRelease({
|
await github.rest.repos.updateRelease({
|
||||||
owner,
|
owner,
|
||||||
repo,
|
repo,
|
||||||
release_id: latestVercelRelease.id,
|
release_id: latestCliRelease.id,
|
||||||
make_latest: true,
|
make_latest: true,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user