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);
							 | 
						||
| 
								 | 
							
								}
							 |