38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Usage:
|
|
* node create-preview <build-number>
|
|
*
|
|
* Triggers the preview server to initiate the preview creation process for the specified CircleCI
|
|
* build number. It must be called _after_ the build artifacts have been created and stored on
|
|
* CircleCI.
|
|
*/
|
|
|
|
// Imports
|
|
const {triggerWebhook} = require('../../.circleci/trigger-webhook');
|
|
|
|
// Constants
|
|
const JOB_NAME = 'aio_preview';
|
|
const WEBHOOK_URL = 'https://ngbuilds.io/circle-build';
|
|
|
|
// Input
|
|
const buildNumber = process.argv[2];
|
|
|
|
// Run
|
|
triggerWebhook(buildNumber, JOB_NAME, WEBHOOK_URL).
|
|
then(({statusCode, responseText}) => isSuccess(statusCode) ?
|
|
console.log(`Status: ${statusCode}\n${responseText}`) :
|
|
Promise.reject(new Error(`Request failed (status: ${statusCode}): ${responseText}`))).
|
|
catch(err => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|
|
|
|
// Helpers
|
|
function isSuccess(statusCode) {
|
|
// Getting a 409 response from the preview server means that the preview has already been created
|
|
// for the corresponding PR/SHA, so our objective has been accomplished.
|
|
return (200 <= statusCode && statusCode < 400) || (statusCode === 409);
|
|
}
|