@cloudsnorkel/cdk-github-runners
Version:
CDK construct to create GitHub Actions self-hosted runners. Creates ephemeral runners on demand. Easy to deploy and highly customizable.
58 lines • 7.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handler = handler;
const lambda_github_1 = require("./lambda-github");
class RunnerTokenError extends Error {
constructor(msg) {
super(msg);
this.name = 'RunnerTokenError';
Object.setPrototypeOf(this, RunnerTokenError.prototype);
}
}
async function handler(event) {
try {
const { githubSecrets, octokit, } = await (0, lambda_github_1.getOctokit)(event.installationId);
let token;
let registrationUrl;
if (githubSecrets.runnerLevel === 'repo' || githubSecrets.runnerLevel === undefined) {
token = await getRegistrationTokenForRepo(octokit, event.owner, event.repo);
registrationUrl = `https://${githubSecrets.domain}/${event.owner}/${event.repo}`;
}
else if (githubSecrets.runnerLevel === 'org') {
token = await getRegistrationTokenForOrg(octokit, event.owner);
registrationUrl = `https://${githubSecrets.domain}/${event.owner}`;
}
else {
throw new RunnerTokenError('Invalid runner level');
}
return {
domain: githubSecrets.domain,
token,
registrationUrl,
};
}
catch (error) {
console.error({
notice: 'Failed to retrieve runner registration token',
owner: event.owner,
repo: event.repo,
runnerName: event.runnerName,
error: `${error}`,
});
throw new RunnerTokenError(error.message);
}
}
async function getRegistrationTokenForOrg(octokit, owner) {
const response = await octokit.rest.actions.createRegistrationTokenForOrg({
org: owner,
});
return response.data.token;
}
async function getRegistrationTokenForRepo(octokit, owner, repo) {
const response = await octokit.rest.actions.createRegistrationTokenForRepo({
owner: owner,
repo: repo,
});
return response.data.token;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmV0cmlldmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi1yZXRyaWV2ZXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsMEJBaUNDO0FBN0NELG1EQUE2QztBQUc3QyxNQUFNLGdCQUFpQixTQUFRLEtBQUs7SUFDbEMsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7UUFDL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBR00sS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUE4QjtJQUMxRCxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQ0osYUFBYSxFQUNiLE9BQU8sR0FDUixHQUFHLE1BQU0sSUFBQSwwQkFBVSxFQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUzQyxJQUFJLEtBQWEsQ0FBQztRQUNsQixJQUFJLGVBQXVCLENBQUM7UUFDNUIsSUFBSSxhQUFhLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxhQUFhLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BGLEtBQUssR0FBRyxNQUFNLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1RSxlQUFlLEdBQUcsV0FBVyxhQUFhLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25GLENBQUM7YUFBTSxJQUFJLGFBQWEsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0MsS0FBSyxHQUFHLE1BQU0sMEJBQTBCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxlQUFlLEdBQUcsV0FBVyxhQUFhLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLEtBQUs7WUFDTCxlQUFlO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDWixNQUFNLEVBQUUsOENBQThDO1lBQ3RELEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLEtBQUssRUFBRSxHQUFHLEtBQUssRUFBRTtTQUNsQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksZ0JBQWdCLENBQVMsS0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7QUFDSCxDQUFDO0FBQ0QsS0FBSyxVQUFVLDBCQUEwQixDQUFDLE9BQWdCLEVBQUUsS0FBYTtJQUN2RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1FBQ3hFLEdBQUcsRUFBRSxLQUFLO0tBQ1gsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM3QixDQUFDO0FBRUQsS0FBSyxVQUFVLDJCQUEyQixDQUFDLE9BQWdCLEVBQUUsS0FBYSxFQUFFLElBQVk7SUFDdEYsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RSxLQUFLLEVBQUUsS0FBSztRQUNaLElBQUksRUFBRSxJQUFJO0tBQ1gsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPY3Rva2l0IH0gZnJvbSAnQG9jdG9raXQvcmVzdCc7XG5pbXBvcnQgeyBnZXRPY3Rva2l0IH0gZnJvbSAnLi9sYW1iZGEtZ2l0aHViJztcbmltcG9ydCB7IFN0ZXBGdW5jdGlvbkxhbWJkYUlucHV0IH0gZnJvbSAnLi9sYW1iZGEtaGVscGVycyc7XG5cbmNsYXNzIFJ1bm5lclRva2VuRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nKSB7XG4gICAgc3VwZXIobXNnKTtcbiAgICB0aGlzLm5hbWUgPSAnUnVubmVyVG9rZW5FcnJvcic7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFJ1bm5lclRva2VuRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBTdGVwRnVuY3Rpb25MYW1iZGFJbnB1dCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtcbiAgICAgIGdpdGh1YlNlY3JldHMsXG4gICAgICBvY3Rva2l0LFxuICAgIH0gPSBhd2FpdCBnZXRPY3Rva2l0KGV2ZW50Lmluc3RhbGxhdGlvbklkKTtcblxuICAgIGxldCB0b2tlbjogc3RyaW5nO1xuICAgIGxldCByZWdpc3RyYXRpb25Vcmw6IHN0cmluZztcbiAgICBpZiAoZ2l0aHViU2VjcmV0cy5ydW5uZXJMZXZlbCA9PT0gJ3JlcG8nIHx8IGdpdGh1YlNlY3JldHMucnVubmVyTGV2ZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdG9rZW4gPSBhd2FpdCBnZXRSZWdpc3RyYXRpb25Ub2tlbkZvclJlcG8ob2N0b2tpdCwgZXZlbnQub3duZXIsIGV2ZW50LnJlcG8pO1xuICAgICAgcmVnaXN0cmF0aW9uVXJsID0gYGh0dHBzOi8vJHtnaXRodWJTZWNyZXRzLmRvbWFpbn0vJHtldmVudC5vd25lcn0vJHtldmVudC5yZXBvfWA7XG4gICAgfSBlbHNlIGlmIChnaXRodWJTZWNyZXRzLnJ1bm5lckxldmVsID09PSAnb3JnJykge1xuICAgICAgdG9rZW4gPSBhd2FpdCBnZXRSZWdpc3RyYXRpb25Ub2tlbkZvck9yZyhvY3Rva2l0LCBldmVudC5vd25lcik7XG4gICAgICByZWdpc3RyYXRpb25VcmwgPSBgaHR0cHM6Ly8ke2dpdGh1YlNlY3JldHMuZG9tYWlufS8ke2V2ZW50Lm93bmVyfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBSdW5uZXJUb2tlbkVycm9yKCdJbnZhbGlkIHJ1bm5lciBsZXZlbCcpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZG9tYWluOiBnaXRodWJTZWNyZXRzLmRvbWFpbixcbiAgICAgIHRva2VuLFxuICAgICAgcmVnaXN0cmF0aW9uVXJsLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcih7XG4gICAgICBub3RpY2U6ICdGYWlsZWQgdG8gcmV0cmlldmUgcnVubmVyIHJlZ2lzdHJhdGlvbiB0b2tlbicsXG4gICAgICBvd25lcjogZXZlbnQub3duZXIsXG4gICAgICByZXBvOiBldmVudC5yZXBvLFxuICAgICAgcnVubmVyTmFtZTogZXZlbnQucnVubmVyTmFtZSxcbiAgICAgIGVycm9yOiBgJHtlcnJvcn1gLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBSdW5uZXJUb2tlbkVycm9yKCg8RXJyb3I+ZXJyb3IpLm1lc3NhZ2UpO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBnZXRSZWdpc3RyYXRpb25Ub2tlbkZvck9yZyhvY3Rva2l0OiBPY3Rva2l0LCBvd25lcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvY3Rva2l0LnJlc3QuYWN0aW9ucy5jcmVhdGVSZWdpc3RyYXRpb25Ub2tlbkZvck9yZyh7XG4gICAgb3JnOiBvd25lcixcbiAgfSk7XG4gIHJldHVybiByZXNwb25zZS5kYXRhLnRva2VuO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZWdpc3RyYXRpb25Ub2tlbkZvclJlcG8ob2N0b2tpdDogT2N0b2tpdCwgb3duZXI6IHN0cmluZywgcmVwbzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvY3Rva2l0LnJlc3QuYWN0aW9ucy5jcmVhdGVSZWdpc3RyYXRpb25Ub2tlbkZvclJlcG8oe1xuICAgIG93bmVyOiBvd25lcixcbiAgICByZXBvOiByZXBvLFxuICB9KTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGEudG9rZW47XG59XG4iXX0=