Skip to content

Commit ca0ae82

Browse files
committed
chore: debug release bundle script
1 parent b65ac4d commit ca0ae82

File tree

2 files changed

+44
-19
lines changed

2 files changed

+44
-19
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ jobs:
4646
const bundle = require('./scripts/bundle-release.cjs');
4747
await bundle({
4848
github,
49+
glob,
4950
workspace: '${{ github.workspace }}',
5051
publishedPackages: JSON.parse('${{ steps.changesets.outputs.publishedPackages }}'),
5152
});

scripts/bundle-release.cjs

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1-
module.exports = async function({ github, workspace, publishedPackages }) {
2-
const { readFile } = require('fs').promises;
1+
const sleep = ms => new Promise(res => setTimeout(res, ms));
2+
3+
/** exponential back-off function to await results while avoiding rate limits */
4+
async function backoff(fn, depth = 0) {
5+
try {
6+
return await fn();
7+
} catch (e) {
8+
if (depth > 7) {
9+
throw e;
10+
} else {
11+
await sleep(2 ** depth * 10);
12+
return backoff(fn, depth + 1);
13+
}
14+
}
15+
}
16+
17+
module.exports = async function({ github, glob, workspace, publishedPackages }) {
18+
const tar = require('tar');
19+
const { readFile, copyFile } = require('fs').promises;
20+
321
const { singleFileBuild } = await import('../tools/pfe-tools/esbuild.js');
422
const { execaCommand } = await import('execa');
523

@@ -13,34 +31,40 @@ module.exports = async function({ github, workspace, publishedPackages }) {
1331

1432
await singleFileBuild({ outfile });
1533

34+
async function getRelease({ owner, repo, tag }) {
35+
const release = await github.request(`GET /repos/{owner}/{repo}/releases/tags/{tag}`, { owner, repo, tag });
36+
if (!release.id) {
37+
throw new Error(`Could not find release for tag: ${tag}`);
38+
}
39+
}
40+
1641
for (const { name: packageName, version } of publishedPackages) {
1742
// get the tag for the release for this package
1843
const tag = `${packageName}@${version}`;
1944

20-
// const release = await github.rest.repos.getReleaseByTag({ owner, repo, tag });
21-
const release =
22-
await github.request(`GET /repos/{owner}/{repo}/releases/tags/{tag}`, { owner, repo, tag });
45+
// wait until the release is created
46+
const release = await backoff(() => getRelease({ owner, repo, tag }));
2347

24-
if (!release.id) {
25-
throw new Error(`Could not find release for tag: ${tag}`);
26-
}
48+
const params = {
49+
owner,
50+
release_id: release.id,
51+
repo
52+
};
2753

28-
const params = { owner, release_id: release.id, repo };
54+
await copyFile(`${cwd}/core/pfe-styles/pfe.min.css`, `${cwd}/pfe.min.css`);
2955

30-
// eslint-disable-next-line
31-
console.log({ tag, ...params });
56+
const globber = await glob.create('pfe.min.*');
57+
const files = await globber.glob();
3258

33-
// upload the bundle to each release
34-
await github.rest.repos.uploadReleaseAsset({
35-
...params,
36-
name: 'pfe.min.js',
37-
data: await readFile(outfile),
38-
});
59+
console.log('creating tarball for', files);
3960

61+
await tar.c({ gzip: true, file: 'pfe.min.tgz' }, files);
62+
63+
// upload the bundle to each release
4064
await github.rest.repos.uploadReleaseAsset({
4165
...params,
42-
name: 'pfe.min.js.map',
43-
data: await readFile(`${outfile}.map`),
66+
name: 'pfe.min.tgz',
67+
data: await readFile(`${cwd}/pfe.min.tgz`),
4468
});
4569

4670
// make a tarball for the package

0 commit comments

Comments
 (0)