in lib/network/ci-external-load-balancer.ts [33:61]
constructor(stack: Stack, props: JenkinsExternalLoadBalancerProps) {
// Using an ALB so it can be part of a security group rather than by whitelisting ip addresses
this.loadBalancer = new ApplicationLoadBalancer(stack, 'JenkinsALB', {
vpc: props.vpc,
securityGroup: props.sg,
internetFacing: true,
});
const accessPort = props.useSsl ? 443 : 80;
this.listener = this.loadBalancer.addListener('JenkinsListener', {
port: accessPort,
open: true,
certificates: props.useSsl ? [props.listenerCertificate] : undefined,
});
this.targetGroup = this.listener.addTargets('MainJenkinsNodeTarget', {
port: accessPort,
targets: [new InstanceTarget(props.targetInstance, accessPort)],
healthCheck: {
protocol: props.useSsl ? Protocol.HTTPS : Protocol.HTTP,
path: '/login',
},
});
new CfnOutput(stack, 'Jenkins External Load Balancer Dns', {
value: this.loadBalancer.loadBalancerDnsName,
});
}