public AwsTeamCityTemplateEcs()

in src/main/java/jetbrains/teamcity/aws/template/services/ecs/AwsTeamCityTemplateEcs.java [41:81]


    public AwsTeamCityTemplateEcs(@NotNull final Construct scope, @NotNull final Vpc vpc, @NotNull final AwsTeamCityTemplateEfs teamcityTemplateEfs) {
        Cluster cluster = Cluster.Builder.create(scope, "Cluster")
                .vpc(vpc)// creates Fargate ECS by default
                .build();

        //TeamCity server ALB balanced service
        myApplicationLoadBalancedFargateService = ApplicationLoadBalancedFargateService.Builder.create(scope, "Service")
                .cluster(cluster)
                .memoryLimitMiB(10240)
                .cpu(2048)
                .publicLoadBalancer(true)
                .taskImageOptions(ApplicationLoadBalancedTaskImageOptions.builder()
                        .family("TeamCityServer")
                        .containerName("TeamCity")
                        .image(ContainerImage.fromRegistry("jetbrains/teamcity-server"))
                        .entryPoint(Arrays.asList("/bin/sh", "-c"))
                        .command(Collections.singletonList(startServerWithAgentCommand))
                        .environment(Collections.singletonMap("TEAMCITY_HTTPS_PROXY_ENABLED", "true"))
                        .containerPort(8111)
                        .build())
                .build();

        assert myApplicationLoadBalancedFargateService.getTaskDefinition().getDefaultContainer() != null;

        //add mount points to the TC container
        myApplicationLoadBalancedFargateService.getTaskDefinition().getDefaultContainer().addMountPoints(teamcityTemplateEfs.getDataDirMountPoint(), teamcityTemplateEfs.getLogsDirMountPoint());

        myApplicationLoadBalancedFargateService.getTaskDefinition().addVolume(teamcityTemplateEfs.getDataDirVolume());
        myApplicationLoadBalancedFargateService.getTaskDefinition().addVolume(teamcityTemplateEfs.getLogsDirVolume());

        teamcityTemplateEfs.getEfs().getConnections().allowDefaultPortFrom(myApplicationLoadBalancedFargateService.getService().getConnections());

        teamcityTemplateEfs.getEfs().grant(myApplicationLoadBalancedFargateService.getTaskDefinition().getTaskRole(), "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite");


        myApplicationLoadBalancedFargateService.getTargetGroup().configureHealthCheck(HealthCheck.builder()
                .path("/mnt/get/stateRevision")
                .build());

        addCustomHttpHeaderRequirement(scope);
    }