55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
/**
|
|
* A script that fetches the asset id of a given release and sets it as the output for the step that calls it
|
|
*/
|
|
const https = require('https');
|
|
|
|
const options = {
|
|
hostname: 'api.github.com',
|
|
port: 443,
|
|
path: `/repos/${process.env.REPO}/releases/${process.env.RELEASE_ID}/assets`,
|
|
method: 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Authorization': `Bearer ${ process.env.GITHUB_TOKEN }`,
|
|
'User-Agent': 'WooCommerce Smoke Build'
|
|
},
|
|
};
|
|
|
|
/**
|
|
*
|
|
* @returns {Promise}
|
|
*/
|
|
const fetchAssetId = () => {
|
|
return new Promise( ( resolve, reject ) => {
|
|
const request = https.get( options, ( response ) => {
|
|
response.setEncoding('utf8');
|
|
|
|
let responseBody = '';
|
|
|
|
response.on( 'data', ( chunk ) => {
|
|
responseBody += chunk;
|
|
} );
|
|
|
|
response.on( 'end', () => {
|
|
const assets = JSON.parse( responseBody );
|
|
// use the most recently uploaded asset
|
|
resolve( assets[ assets.length - 1 ].id );
|
|
} );
|
|
} );
|
|
|
|
request.on('error', ( error ) => {
|
|
reject( error );
|
|
} );
|
|
|
|
request.end();
|
|
|
|
} );
|
|
}
|
|
|
|
module.exports = async ( { github, context, core } ) => {
|
|
const id = await fetchAssetId();
|
|
|
|
// set asset_id as the output
|
|
core.setOutput( 'asset_id', id );
|
|
}
|