constructor()

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,
    });
  }