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:
Nathan Rajlich
2023-05-22 11:49:51 -07:00
committed by GitHub
parent 46950633f4
commit 2da72bc5e4
2 changed files with 21 additions and 17 deletions

View File

@@ -56,15 +56,6 @@ jobs:
GA_TRACKING_ID: ${{ secrets.GA_TRACKING_ID }}
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)
if: steps.changesets.outputs.published == 'true'
uses: actions/github-script@v6
@@ -73,3 +64,12 @@ jobs:
script: |
const script = require('./utils/trigger-update-workflow.js')
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 })

View File

@@ -1,24 +1,28 @@
function isVercelCliRelease(release) {
return release.tag_name.startsWith('vercel@');
}
module.exports = async ({ github, context }) => {
const { owner, repo } = context.repo;
const response = await github.rest.repos.listReleases({ owner, repo });
function isVercelCliRelease(release) {
return release.tag_name.startsWith('vercel@');
}
const { data: latestRelease } = await github.rest.repos.getLatestRelease({
owner,
repo,
});
const latestRelease = response.data[0];
if (isVercelCliRelease(latestRelease)) {
console.log(`Latest release is "${latestRelease.tag_name}" - skipping`);
return;
}
const latestVercelRelease = response.data.find(isVercelCliRelease);
console.log(`Promoting "${latestVercelRelease.tag_name}" to latest release`);
const response = await github.rest.repos.listReleases({ owner, repo });
const latestCliRelease = response.data.find(isVercelCliRelease);
console.log(`Promoting "${latestCliRelease.tag_name}" to latest release`);
await github.rest.repos.updateRelease({
owner,
repo,
release_id: latestVercelRelease.id,
release_id: latestCliRelease.id,
make_latest: true,
});
};