UNPKG

@relative-ci/agent

Version:

Send bundle stats and CI build information to RelativeCI

84 lines (78 loc) 2.91 kB
'use strict'; var fs = require('fs/promises'); var path = require('path'); var fetch = require('node-fetch'); var en = require('../locales/en.js'); var debug = require('../utils/debug.js'); require('child_process'); require('env-ci'); var maskObjectProperty = require('../utils/mask-object-property.js'); var logger = require('../utils/logger.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var fs__default = /*#__PURE__*/_interopDefault(fs); var path__default = /*#__PURE__*/_interopDefault(path); var fetch__default = /*#__PURE__*/_interopDefault(fetch); async function ingest(data, params, config = {}, logger$1 = logger.logger) { const { key, endpoint, branch, build, buildUrl, commit, pr, slug, service, commitMessage, agentVersion, } = params; const payload = { key, project: slug, service, agentVersion, job: { commit, branch, prNumber: pr, buildNumber: build, buildUrl, commitMessage, }, rawData: data, }; const formattedPayload = maskObjectProperty.maskObjectProperties(payload, ['key']); debug.debug('Payload size', Buffer.byteLength(JSON.stringify(payload))); const { payloadFilepath } = config; /** * Save payload on disk for debugging */ if (payloadFilepath) { logger$1.info('Save payload to', payloadFilepath); try { const payloadBaseDirectory = path__default.default.dirname(payloadFilepath); await fs__default.default.mkdir(payloadBaseDirectory, { recursive: true }); await fs__default.default.writeFile(payloadFilepath, JSON.stringify(formattedPayload, null, 2)); } catch (err) { // On error, catch and log logger$1.warn(`Error saving payload to "${payloadFilepath}"`, err instanceof Error ? err.message : undefined); } } logger$1.log('Send bundle stats to RelativeCI', `branch=${branch}`, `commit=${commit}`); let responseData = null; try { const response = await fetch__default.default(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', }, body: JSON.stringify(payload), }); responseData = await response.json(); debug.debug('Response', responseData); } catch (error) { throw new Error(en.INGEST_ERROR, { cause: error }); } if (!responseData) { throw new Error(en.INGEST_INVALID_DATA); } if (responseData.code) { throw new Error(responseData.message, { cause: responseData }); } if (!responseData.res) { throw new Error(en.INGEST_INVALID_DATA, { cause: responseData }); } return responseData; } module.exports = ingest; //# sourceMappingURL=ingest.js.map