All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cloudsnorkel.cdk.github.runners.GitHubRunnersProps Maven / Gradle / Ivy

package com.cloudsnorkel.cdk.github.runners;

/**
 * (experimental) Properties for GitHubRunners.
 */
@javax.annotation.Generated(value = "jsii-pacmak/1.73.0 (build 6faeda3)", date = "2023-01-17T21:04:03.029Z")
@software.amazon.jsii.Jsii(module = com.cloudsnorkel.cdk.github.runners.$Module.class, fqn = "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps")
@software.amazon.jsii.Jsii.Proxy(GitHubRunnersProps.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public interface GitHubRunnersProps extends software.amazon.jsii.JsiiSerializable {

    /**
     * (experimental) Allow management functions to run in public subnets.
     * 

* Lambda Functions in a public subnet can NOT access the internet. *

* Default: false */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable java.lang.Boolean getAllowPublicSubnet() { return null; } /** * (experimental) Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed. *

* You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}. *

*

     * const imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {
     *      dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,
     * });
     * imageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');
     * const provider = new CodeBuildRunner(this, 'CodeBuild', {
     *      imageBuilder: imageBuilder,
     * });
     * new GitHubRunners(
     *    this,
     *    'runners',
     *    {
     *      providers: [provider],
     *      extraCertificates: 'path-to-my-extra-certs-folder',
     *    }
     * );
     * 
*/ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable java.lang.String getExtraCertificates() { return null; } /** * (experimental) Time to wait before stopping a runner that remains idle. *

* If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources. *

* Default: 10 minutes */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getIdleTimeout() { return null; } /** * (experimental) Logging options for the state machine that manages the runners. *

* Default: no logs */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable com.cloudsnorkel.cdk.github.runners.LogOptions getLogOptions() { return null; } /** * (experimental) List of runner providers to use. *

* At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job. *

* Default: CodeBuild, Lambda and Fargate runners with all the defaults (no VPC or default account VPC) */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable java.util.List getProviders() { return null; } /** * (experimental) Security group attached to all management functions. *

* Use this with to provide access to GitHub Enterprise Server hosted inside a VPC. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.ISecurityGroup getSecurityGroup() { return null; } /** * (experimental) VPC used for all management functions. *

* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.IVpc getVpc() { return null; } /** * (experimental) VPC subnets used for all management functions. *

* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.SubnetSelection getVpcSubnets() { return null; } /** * @return a {@link Builder} of {@link GitHubRunnersProps} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) static Builder builder() { return new Builder(); } /** * A builder for {@link GitHubRunnersProps} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public static final class Builder implements software.amazon.jsii.Builder { java.lang.Boolean allowPublicSubnet; java.lang.String extraCertificates; software.amazon.awscdk.Duration idleTimeout; com.cloudsnorkel.cdk.github.runners.LogOptions logOptions; java.util.List providers; software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup; software.amazon.awscdk.services.ec2.IVpc vpc; software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets; /** * Sets the value of {@link GitHubRunnersProps#getAllowPublicSubnet} * @param allowPublicSubnet Allow management functions to run in public subnets. * Lambda Functions in a public subnet can NOT access the internet. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder allowPublicSubnet(java.lang.Boolean allowPublicSubnet) { this.allowPublicSubnet = allowPublicSubnet; return this; } /** * Sets the value of {@link GitHubRunnersProps#getExtraCertificates} * @param extraCertificates Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed. * You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}. *

*

         *                          const imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {
         *                               dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,
         *                          });
         *                          imageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');
         *                          
         *                          const provider = new CodeBuildRunner(this, 'CodeBuild', {
         *                               imageBuilder: imageBuilder,
         *                          });
         *                          
         *                          new GitHubRunners(
         *                             this,
         *                             'runners',
         *                             {
         *                               providers: [provider],
         *                               extraCertificates: 'path-to-my-extra-certs-folder',
         *                             }
         *                          );
         *                          
* @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder extraCertificates(java.lang.String extraCertificates) { this.extraCertificates = extraCertificates; return this; } /** * Sets the value of {@link GitHubRunnersProps#getIdleTimeout} * @param idleTimeout Time to wait before stopping a runner that remains idle. * If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder idleTimeout(software.amazon.awscdk.Duration idleTimeout) { this.idleTimeout = idleTimeout; return this; } /** * Sets the value of {@link GitHubRunnersProps#getLogOptions} * @param logOptions Logging options for the state machine that manages the runners. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder logOptions(com.cloudsnorkel.cdk.github.runners.LogOptions logOptions) { this.logOptions = logOptions; return this; } /** * Sets the value of {@link GitHubRunnersProps#getProviders} * @param providers List of runner providers to use. * At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) @SuppressWarnings("unchecked") public Builder providers(java.util.List providers) { this.providers = (java.util.List)providers; return this; } /** * Sets the value of {@link GitHubRunnersProps#getSecurityGroup} * @param securityGroup Security group attached to all management functions. * Use this with to provide access to GitHub Enterprise Server hosted inside a VPC. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder securityGroup(software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup) { this.securityGroup = securityGroup; return this; } /** * Sets the value of {@link GitHubRunnersProps#getVpc} * @param vpc VPC used for all management functions. * Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder vpc(software.amazon.awscdk.services.ec2.IVpc vpc) { this.vpc = vpc; return this; } /** * Sets the value of {@link GitHubRunnersProps#getVpcSubnets} * @param vpcSubnets VPC subnets used for all management functions. * Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) public Builder vpcSubnets(software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets) { this.vpcSubnets = vpcSubnets; return this; } /** * Builds the configured instance. * @return a new instance of {@link GitHubRunnersProps} * @throws NullPointerException if any required attribute was not provided */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) @Override public GitHubRunnersProps build() { return new Jsii$Proxy(this); } } /** * An implementation for {@link GitHubRunnersProps} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental) @software.amazon.jsii.Internal final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements GitHubRunnersProps { private final java.lang.Boolean allowPublicSubnet; private final java.lang.String extraCertificates; private final software.amazon.awscdk.Duration idleTimeout; private final com.cloudsnorkel.cdk.github.runners.LogOptions logOptions; private final java.util.List providers; private final software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup; private final software.amazon.awscdk.services.ec2.IVpc vpc; private final software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets; /** * Constructor that initializes the object based on values retrieved from the JsiiObject. * @param objRef Reference to the JSII managed object. */ protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { super(objRef); this.allowPublicSubnet = software.amazon.jsii.Kernel.get(this, "allowPublicSubnet", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); this.extraCertificates = software.amazon.jsii.Kernel.get(this, "extraCertificates", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); this.idleTimeout = software.amazon.jsii.Kernel.get(this, "idleTimeout", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class)); this.logOptions = software.amazon.jsii.Kernel.get(this, "logOptions", software.amazon.jsii.NativeType.forClass(com.cloudsnorkel.cdk.github.runners.LogOptions.class)); this.providers = software.amazon.jsii.Kernel.get(this, "providers", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.cloudsnorkel.cdk.github.runners.IRunnerProvider.class))); this.securityGroup = software.amazon.jsii.Kernel.get(this, "securityGroup", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.ISecurityGroup.class)); this.vpc = software.amazon.jsii.Kernel.get(this, "vpc", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.IVpc.class)); this.vpcSubnets = software.amazon.jsii.Kernel.get(this, "vpcSubnets", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.SubnetSelection.class)); } /** * Constructor that initializes the object based on literal property values passed by the {@link Builder}. */ @SuppressWarnings("unchecked") protected Jsii$Proxy(final Builder builder) { super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); this.allowPublicSubnet = builder.allowPublicSubnet; this.extraCertificates = builder.extraCertificates; this.idleTimeout = builder.idleTimeout; this.logOptions = builder.logOptions; this.providers = (java.util.List)builder.providers; this.securityGroup = builder.securityGroup; this.vpc = builder.vpc; this.vpcSubnets = builder.vpcSubnets; } @Override public final java.lang.Boolean getAllowPublicSubnet() { return this.allowPublicSubnet; } @Override public final java.lang.String getExtraCertificates() { return this.extraCertificates; } @Override public final software.amazon.awscdk.Duration getIdleTimeout() { return this.idleTimeout; } @Override public final com.cloudsnorkel.cdk.github.runners.LogOptions getLogOptions() { return this.logOptions; } @Override public final java.util.List getProviders() { return this.providers; } @Override public final software.amazon.awscdk.services.ec2.ISecurityGroup getSecurityGroup() { return this.securityGroup; } @Override public final software.amazon.awscdk.services.ec2.IVpc getVpc() { return this.vpc; } @Override public final software.amazon.awscdk.services.ec2.SubnetSelection getVpcSubnets() { return this.vpcSubnets; } @Override @software.amazon.jsii.Internal public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); if (this.getAllowPublicSubnet() != null) { data.set("allowPublicSubnet", om.valueToTree(this.getAllowPublicSubnet())); } if (this.getExtraCertificates() != null) { data.set("extraCertificates", om.valueToTree(this.getExtraCertificates())); } if (this.getIdleTimeout() != null) { data.set("idleTimeout", om.valueToTree(this.getIdleTimeout())); } if (this.getLogOptions() != null) { data.set("logOptions", om.valueToTree(this.getLogOptions())); } if (this.getProviders() != null) { data.set("providers", om.valueToTree(this.getProviders())); } if (this.getSecurityGroup() != null) { data.set("securityGroup", om.valueToTree(this.getSecurityGroup())); } if (this.getVpc() != null) { data.set("vpc", om.valueToTree(this.getVpc())); } if (this.getVpcSubnets() != null) { data.set("vpcSubnets", om.valueToTree(this.getVpcSubnets())); } final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); struct.set("fqn", om.valueToTree("@cloudsnorkel/cdk-github-runners.GitHubRunnersProps")); struct.set("data", data); final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); obj.set("$jsii.struct", struct); return obj; } @Override public final boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; GitHubRunnersProps.Jsii$Proxy that = (GitHubRunnersProps.Jsii$Proxy) o; if (this.allowPublicSubnet != null ? !this.allowPublicSubnet.equals(that.allowPublicSubnet) : that.allowPublicSubnet != null) return false; if (this.extraCertificates != null ? !this.extraCertificates.equals(that.extraCertificates) : that.extraCertificates != null) return false; if (this.idleTimeout != null ? !this.idleTimeout.equals(that.idleTimeout) : that.idleTimeout != null) return false; if (this.logOptions != null ? !this.logOptions.equals(that.logOptions) : that.logOptions != null) return false; if (this.providers != null ? !this.providers.equals(that.providers) : that.providers != null) return false; if (this.securityGroup != null ? !this.securityGroup.equals(that.securityGroup) : that.securityGroup != null) return false; if (this.vpc != null ? !this.vpc.equals(that.vpc) : that.vpc != null) return false; return this.vpcSubnets != null ? this.vpcSubnets.equals(that.vpcSubnets) : that.vpcSubnets == null; } @Override public final int hashCode() { int result = this.allowPublicSubnet != null ? this.allowPublicSubnet.hashCode() : 0; result = 31 * result + (this.extraCertificates != null ? this.extraCertificates.hashCode() : 0); result = 31 * result + (this.idleTimeout != null ? this.idleTimeout.hashCode() : 0); result = 31 * result + (this.logOptions != null ? this.logOptions.hashCode() : 0); result = 31 * result + (this.providers != null ? this.providers.hashCode() : 0); result = 31 * result + (this.securityGroup != null ? this.securityGroup.hashCode() : 0); result = 31 * result + (this.vpc != null ? this.vpc.hashCode() : 0); result = 31 * result + (this.vpcSubnets != null ? this.vpcSubnets.hashCode() : 0); return result; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy