Skip to content

Commit

Permalink
feat(Standalone): Support non-latest version builds
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Nov 3, 2020
1 parent 2d403dd commit 8727044
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 43 deletions.
21 changes: 11 additions & 10 deletions scripts/pkg/upload/china.js
Expand Up @@ -10,7 +10,7 @@ const distPath = path.resolve(__dirname, '../../../dist');
const TENCENT_BUCKET_NAME = 'sls-standalone-1300963013';
const TENCENT_REGION = 'ap-shanghai';

module.exports = async versionTag => {
module.exports = async (versionTag, { isLegacyVersion }) => {
if (!process.env.TENCENT_SECRET_KEY) {
process.stdout.write(chalk.red('Missing TENCENT_SECRET_KEY env var \n'));
process.exitCode = 1;
Expand All @@ -35,15 +35,16 @@ module.exports = async versionTag => {
};

await Promise.all([
cos
.putObjectAsync({
Key: 'latest-tag',
Body: Buffer.from(versionTag),
...bucketConf,
})
.then(() => {
process.stdout.write(chalk.green("'latest-tag' uploaded to Tencent\n"));
}),
!isLegacyVersion &&
cos
.putObjectAsync({
Key: 'latest-tag',
Body: Buffer.from(versionTag),
...bucketConf,
})
.then(() => {
process.stdout.write(chalk.green("'latest-tag' uploaded to Tencent\n"));
}),
cos
.putObjectAsync({
Key: `${versionTag}/serverless-linux-x64`,
Expand Down
6 changes: 3 additions & 3 deletions scripts/pkg/upload/index.js
Expand Up @@ -7,7 +7,7 @@
require('essentials');

const argv = require('yargs-parser')(process.argv.slice(2), {
boolean: ['help'],
boolean: ['help', 'legacy'],
alias: { help: 'h' },
});

Expand Down Expand Up @@ -40,5 +40,5 @@ if (!/^v\d+\.\d+\.\d+$/.test(versionTag)) {
return;
}

require('./world')(versionTag);
require('./china')(versionTag);
require('./world')(versionTag, { isLegacyVersion: argv.legacy });
require('./china')(versionTag, { isLegacyVersion: argv.legacy });
72 changes: 42 additions & 30 deletions scripts/pkg/upload/world.js
Expand Up @@ -11,7 +11,7 @@ const API_UPLOADS_URL = 'https://uploads.github.com/repos/serverless/serverless/
const requestOptions = { headers: { Authorization: `token ${process.env.GITHUB_TOKEN}` } };
const binaryBasenameMatcher = /^serverless-([a-z0-9]+)(?:-([a-z0-9]+))?(\.exe)?$/;

module.exports = async versionTag => {
module.exports = async (versionTag, { isLegacyVersion }) => {
if (!process.env.GITHUB_TOKEN) {
process.stdout.write(chalk.red('Missing GITHUB_TOKEN env var\n'));
process.exitCode = 1;
Expand Down Expand Up @@ -39,35 +39,47 @@ module.exports = async versionTag => {

const distFileBasenames = await fs.promises.readdir(distPath);
await Promise.all(
distFileBasenames.map(async distFileBasename => {
const distFileBasenameTokens = distFileBasename.match(binaryBasenameMatcher);
if (!distFileBasenameTokens) throw new Error(`Unexpected dist file ${distFileBasename}`);
const targetBinaryName = `serverless-${
distFileBasenameTokens[1]
}-${distFileBasenameTokens[2] || 'x64'}${distFileBasenameTokens[3] || ''}`;
const existingAssetData = (await releaseAssetsDeferred).find(
assetData => assetData.name === targetBinaryName
);
if (existingAssetData) {
await request(`${API_URL}assets/${existingAssetData.id}`, {
method: 'DELETE',
headers: requestOptions.headers,
});
}
const filePath = path.join(distPath, distFileBasename);
await request(
`${API_UPLOADS_URL}${await releaseIdDeferred}/assets?name=${targetBinaryName}`,
{
method: 'POST',
body: fs.createReadStream(filePath),
headers: {
...requestOptions.headers,
'content-length': (await fs.promises.stat(filePath)).size,
'content-type': 'application/octet-stream',
},
distFileBasenames
.map(async distFileBasename => {
const distFileBasenameTokens = distFileBasename.match(binaryBasenameMatcher);
if (!distFileBasenameTokens) throw new Error(`Unexpected dist file ${distFileBasename}`);
const targetBinaryName = `serverless-${
distFileBasenameTokens[1]
}-${distFileBasenameTokens[2] || 'x64'}${distFileBasenameTokens[3] || ''}`;
const existingAssetData = (await releaseAssetsDeferred).find(
assetData => assetData.name === targetBinaryName
);
if (existingAssetData) {
await request(`${API_URL}assets/${existingAssetData.id}`, {
method: 'DELETE',
headers: requestOptions.headers,
});
}
);
process.stdout.write(chalk.green(`${targetBinaryName} uploaded to GiHub\n`));
})
const filePath = path.join(distPath, distFileBasename);
await request(
`${API_UPLOADS_URL}${await releaseIdDeferred}/assets?name=${targetBinaryName}`,
{
method: 'POST',
body: fs.createReadStream(filePath),
headers: {
...requestOptions.headers,
'content-length': (await fs.promises.stat(filePath)).size,
'content-type': 'application/octet-stream',
},
}
);
process.stdout.write(chalk.green(`${targetBinaryName} uploaded to GiHub\n`));
})
.concat(
isLegacyVersion
? releaseIdDeferred.then(releaseId =>
request(`${API_URL}${releaseId}`, {
method: 'PATCH',
headers: requestOptions.headers,
body: JSON.stringify({ prerelease: true }),
})
)
: []
)
);
};

0 comments on commit 8727044

Please sign in to comment.