@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.
45 lines • 7.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GithubWebhookRedelivery = void 0;
const cdk = require("aws-cdk-lib");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const constructs_1 = require("constructs");
const utils_1 = require("./utils");
const webhook_redelivery_function_1 = require("./webhook-redelivery-function");
/**
* Create a Lambda that runs every 5 minutes to check for Github webhook delivery failures and retry them.
*
* @internal
*/
class GithubWebhookRedelivery extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
this.handler = new webhook_redelivery_function_1.WebhookRedeliveryFunction(this, 'Lambda', {
description: 'Check for GitHub webhook delivery failures and redeliver them',
environment: {
GITHUB_SECRET_ARN: props.secrets.github.secretArn,
GITHUB_PRIVATE_KEY_SECRET_ARN: props.secrets.githubPrivateKey.secretArn,
...props.extraLambdaEnv,
},
reservedConcurrentExecutions: 1, // avoid concurrent executions
timeout: cdk.Duration.seconds(4.5 * 60), // 4.5 minutes
logGroup: (0, utils_1.singletonLogGroup)(this, utils_1.SingletonLogType.ORCHESTRATOR),
loggingFormat: aws_cdk_lib_1.aws_lambda.LoggingFormat.JSON,
// applicationLogLevelV2: ApplicationLogLevel.DEBUG,
...props.extraLambdaProps,
});
props.secrets.github.grantRead(this.handler);
props.secrets.githubPrivateKey.grantRead(this.handler);
new aws_cdk_lib_1.aws_events.Rule(this, 'Schedule', {
schedule: aws_cdk_lib_1.aws_events.Schedule.rate(cdk.Duration.minutes(5)),
description: 'Schedule to run the webhook redelivery lambda every 5 minutes',
targets: [
new aws_cdk_lib_1.aws_events_targets.LambdaFunction(this.handler, {
retryAttempts: 0,
}),
],
});
}
}
exports.GithubWebhookRedelivery = GithubWebhookRedelivery;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1yZWRlbGl2ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYmhvb2stcmVkZWxpdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBQStHO0FBQy9HLDJDQUF1QztBQUV2QyxtQ0FBOEQ7QUFDOUQsK0VBQTBFO0FBd0IxRTs7OztHQUlHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQU1wRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHVEQUF5QixDQUMxQyxJQUFJLEVBQ0osUUFBUSxFQUNSO1lBQ0UsV0FBVyxFQUFFLCtEQUErRDtZQUM1RSxXQUFXLEVBQUU7Z0JBQ1gsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUztnQkFDakQsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO2dCQUN2RSxHQUFHLEtBQUssQ0FBQyxjQUFjO2FBQ3hCO1lBQ0QsNEJBQTRCLEVBQUUsQ0FBQyxFQUFFLDhCQUE4QjtZQUMvRCxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLGNBQWM7WUFDdkQsUUFBUSxFQUFFLElBQUEseUJBQWlCLEVBQUMsSUFBSSxFQUFFLHdCQUFnQixDQUFDLFlBQVksQ0FBQztZQUNoRSxhQUFhLEVBQUUsd0JBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUN4QyxvREFBb0Q7WUFDcEQsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO1NBQzFCLENBQ0YsQ0FBQztRQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZELElBQUksd0JBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoQyxRQUFRLEVBQUUsd0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELFdBQVcsRUFBRSwrREFBK0Q7WUFDNUUsT0FBTyxFQUFFO2dCQUNQLElBQUksZ0NBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDOUMsYUFBYSxFQUFFLENBQUM7aUJBQ2pCLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpDRCwwREF5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgYXdzX2V2ZW50cyBhcyBldmVudHMsIGF3c19ldmVudHNfdGFyZ2V0cyBhcyBldmVudHNfdGFyZ2V0cywgYXdzX2xhbWJkYSBhcyBsYW1iZGEgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFNlY3JldHMgfSBmcm9tICcuL3NlY3JldHMnO1xuaW1wb3J0IHsgc2luZ2xldG9uTG9nR3JvdXAsIFNpbmdsZXRvbkxvZ1R5cGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFdlYmhvb2tSZWRlbGl2ZXJ5RnVuY3Rpb24gfSBmcm9tICcuL3dlYmhvb2stcmVkZWxpdmVyeS1mdW5jdGlvbic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgR2l0aHViV2ViaG9va1JlZGVsaXZlcnlcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRodWJXZWJob29rUmVkZWxpdmVyeVByb3BzIHtcbiAgLyoqXG4gICAqIFNlY3JldHMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIEdpdEh1Yi5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHM6IFNlY3JldHM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgTGFtYmRhIGZ1bmN0aW9uIG9wdGlvbnMgKFZQQywgc2VjdXJpdHkgZ3JvdXBzLCBsYXllcnMsIGV0Yy4pLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFMYW1iZGFQcm9wcz86IGxhbWJkYS5GdW5jdGlvbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFMYW1iZGFFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIExhbWJkYSB0aGF0IHJ1bnMgZXZlcnkgNSBtaW51dGVzIHRvIGNoZWNrIGZvciBHaXRodWIgd2ViaG9vayBkZWxpdmVyeSBmYWlsdXJlcyBhbmQgcmV0cnkgdGhlbS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YldlYmhvb2tSZWRlbGl2ZXJ5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFdlYmhvb2sgcmVkZWxpdmVyeSBsYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVyOiBXZWJob29rUmVkZWxpdmVyeUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHaXRodWJXZWJob29rUmVkZWxpdmVyeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuaGFuZGxlciA9IG5ldyBXZWJob29rUmVkZWxpdmVyeUZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdMYW1iZGEnLFxuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0NoZWNrIGZvciBHaXRIdWIgd2ViaG9vayBkZWxpdmVyeSBmYWlsdXJlcyBhbmQgcmVkZWxpdmVyIHRoZW0nLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIEdJVEhVQl9TRUNSRVRfQVJOOiBwcm9wcy5zZWNyZXRzLmdpdGh1Yi5zZWNyZXRBcm4sXG4gICAgICAgICAgR0lUSFVCX1BSSVZBVEVfS0VZX1NFQ1JFVF9BUk46IHByb3BzLnNlY3JldHMuZ2l0aHViUHJpdmF0ZUtleS5zZWNyZXRBcm4sXG4gICAgICAgICAgLi4ucHJvcHMuZXh0cmFMYW1iZGFFbnYsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDEsIC8vIGF2b2lkIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcyg0LjUgKiA2MCksIC8vIDQuNSBtaW51dGVzXG4gICAgICAgIGxvZ0dyb3VwOiBzaW5nbGV0b25Mb2dHcm91cCh0aGlzLCBTaW5nbGV0b25Mb2dUeXBlLk9SQ0hFU1RSQVRPUiksXG4gICAgICAgIGxvZ2dpbmdGb3JtYXQ6IGxhbWJkYS5Mb2dnaW5nRm9ybWF0LkpTT04sXG4gICAgICAgIC8vIGFwcGxpY2F0aW9uTG9nTGV2ZWxWMjogQXBwbGljYXRpb25Mb2dMZXZlbC5ERUJVRyxcbiAgICAgICAgLi4ucHJvcHMuZXh0cmFMYW1iZGFQcm9wcyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHByb3BzLnNlY3JldHMuZ2l0aHViLmdyYW50UmVhZCh0aGlzLmhhbmRsZXIpO1xuICAgIHByb3BzLnNlY3JldHMuZ2l0aHViUHJpdmF0ZUtleS5ncmFudFJlYWQodGhpcy5oYW5kbGVyKTtcblxuICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnU2NoZWR1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLnJhdGUoY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSkpLFxuICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZSB0byBydW4gdGhlIHdlYmhvb2sgcmVkZWxpdmVyeSBsYW1iZGEgZXZlcnkgNSBtaW51dGVzJyxcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgbmV3IGV2ZW50c190YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKHRoaXMuaGFuZGxlciwge1xuICAgICAgICAgIHJldHJ5QXR0ZW1wdHM6IDAsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19