diff --git a/sdk/java/README.md b/sdk/java/README.md new file mode 100644 index 0000000..a778720 --- /dev/null +++ b/sdk/java/README.md @@ -0,0 +1 @@ +A Pulumi provider for building modern Docker images with buildx and BuildKit. diff --git a/sdk/java/settings.gradle b/sdk/java/settings.gradle new file mode 100644 index 0000000..74155ae --- /dev/null +++ b/sdk/java/settings.gradle @@ -0,0 +1,14 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +pluginManagement { + repositories { + maven { // The google mirror is less flaky than mavenCentral() + url("https://maven-central.storage-download.googleapis.com/maven2/") + } + gradlePluginPortal() + } +} + +rootProject.name = "com.pulumi.docker-build" +include("lib") diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java new file mode 100644 index 0000000..188bc35 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.TypeShape; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.inputs.Registry; +import java.lang.String; +import java.util.List; +import java.util.Optional; + +public final class Config { + + private static final com.pulumi.Config config = com.pulumi.Config.of("docker-build"); +/** + * The build daemon's address. + * + */ + public Optional host() { + return Codegen.stringProp("host").config(config).env("DOCKER_HOST").def("").get(); + } + public Optional> registries() { + return Codegen.objectProp("registries", TypeShape.>builder(List.class).addParameter(Registry.class).build()).config(config).get(); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java new file mode 100644 index 0000000..adb1cfd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java @@ -0,0 +1,1281 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.ImageArgs; +import com.pulumi.dockerbuild.Utilities; +import com.pulumi.dockerbuild.enums.NetworkMode; +import com.pulumi.dockerbuild.enums.Platform; +import com.pulumi.dockerbuild.outputs.BuildContext; +import com.pulumi.dockerbuild.outputs.BuilderConfig; +import com.pulumi.dockerbuild.outputs.CacheFrom; +import com.pulumi.dockerbuild.outputs.CacheTo; +import com.pulumi.dockerbuild.outputs.Dockerfile; +import com.pulumi.dockerbuild.outputs.Registry; +import com.pulumi.dockerbuild.outputs.SSH; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * A Docker image built using buildx -- Docker's interface to the improved + * BuildKit backend. + * + * ## Stability + * + * **This resource is pre-1.0 and in public preview.** + * + * We will strive to keep APIs and behavior as stable as possible, but we + * cannot guarantee stability until version 1.0. + * + * ## Migrating Pulumi Docker v3 and v4 Image resources + * + * This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. + * Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. + * + * ### Behavioral differences + * + * There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. + * + * #### Previews + * + * Version `3.x` of the Pulumi Docker provider always builds images during preview operations. + * This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. + * + * Version `4.x` changed build-on-preview behavior to be opt-in. + * By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. + * Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. + * + * The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. + * This behavior can be changed by specifying `buildOnPreview`. + * + * #### Push behavior + * + * Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. + * They expose a `skipPush: true` option to disable pushing. + * + * This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. + * + * To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). + * Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. + * + * #### Secrets + * + * Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. + * + * Version `4.x` of the Pulumi Docker provider does not support secrets. + * + * The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. + * Instead, they should be passed directly as values. + * (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) + * Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. + * + * #### Caching + * + * Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. + * It builds targets individually and pushes them to separate images for caching. + * + * Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. + * + * Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. + * This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. + * + * The `Image` resource delegates all caching behavior to Docker. + * `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. + * + * #### Outputs + * + * Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. + * In `4.x` this could also be a single sha256 hash if the image wasn't pushed. + * + * Unlike earlier providers the `Image` resource can push multiple tags. + * As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. + * If multiple tags were pushed this uses one at random. + * + * If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. + * + * #### Tag deletion and refreshes + * + * Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. + * + * The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. + * If any are missing a subsequent `update` will push them. + * + * When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. + * Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). + * Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. + * + * Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. + * + * ### Example migration + * + * Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. + * + * The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. + * After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. + * In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. + * + * The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. + * It it is shown with parameters similar to the `v3` example for completeness. + * + * ## Example Usage + * + * ## Example Usage + * ### Push to AWS ECR with caching + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.ecr.Repository;
+ * import com.pulumi.aws.ecr.EcrFunctions;
+ * import com.pulumi.aws.ecr.inputs.GetAuthorizationTokenArgs;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.inputs.RegistryArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var ecrRepository = new Repository("ecrRepository");
+ * 
+ *         final var authToken = EcrFunctions.getAuthorizationToken(GetAuthorizationTokenArgs.builder()
+ *             .registryId(ecrRepository.registryId())
+ *             .build());
+ * 
+ *         var myImage = new Image("myImage", ImageArgs.builder()        
+ *             .cacheFrom(CacheFromArgs.builder()
+ *                 .registry(CacheFromRegistryArgs.builder()
+ *                     .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
+ *                     .build())
+ *                 .build())
+ *             .cacheTo(CacheToArgs.builder()
+ *                 .registry(CacheToRegistryArgs.builder()
+ *                     .imageManifest(true)
+ *                     .ociMediaTypes(true)
+ *                     .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
+ *                     .build())
+ *                 .build())
+ *             .context(BuildContextArgs.builder()
+ *                 .location("./app")
+ *                 .build())
+ *             .push(true)
+ *             .registries(RegistryArgs.builder()
+ *                 .address(ecrRepository.repositoryUrl())
+ *                 .password(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.password())))
+ *                 .username(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.userName())))
+ *                 .build())
+ *             .tags(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:latest", repositoryUrl)))
+ *             .build());
+ * 
+ *         ctx.export("ref", myImage.ref());
+ *     }
+ * }
+ * }
+ * 
+ * ### Multi-platform image + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .platforms(            
+ *                 "plan9/amd64",
+ *                 "plan9/386")
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Registry export + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.inputs.RegistryArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .push(true)
+ *             .registries(RegistryArgs.builder()
+ *                 .address("docker.io")
+ *                 .password(dockerHubPassword)
+ *                 .username("pulumibot")
+ *                 .build())
+ *             .tags("docker.io/pulumi/pulumi:3.107.0")
+ *             .build());
+ * 
+ *         ctx.export("ref", myImage.ref());
+ *     }
+ * }
+ * }
+ * 
+ * ### Caching + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToLocalArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .cacheFrom(CacheFromArgs.builder()
+ *                 .local(CacheFromLocalArgs.builder()
+ *                     .src("tmp/cache")
+ *                     .build())
+ *                 .build())
+ *             .cacheTo(CacheToArgs.builder()
+ *                 .local(CacheToLocalArgs.builder()
+ *                     .dest("tmp/cache")
+ *                     .mode("max")
+ *                     .build())
+ *                 .build())
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Docker Build Cloud + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuilderConfigArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .builder(BuilderConfigArgs.builder()
+ *                 .name("cloud-builder-name")
+ *                 .build())
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .exec(true)
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Build arguments + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .buildArgs(Map.of("SET_ME_TO_TRUE", "true"))
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Build target + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .push(false)
+ *             .target("build-me")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Named contexts + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .named(Map.of("golang:latest", Map.of("location", "docker-image://golang{@literal @}sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984")))
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Remote context + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile")
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Inline Dockerfile + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.inputs.DockerfileArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .dockerfile(DockerfileArgs.builder()
+ *                 .inline("""
+ * FROM busybox
+ * COPY hello.c ./
+ *                 """)
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Remote context + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.inputs.DockerfileArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("https://github.com/docker-library/hello-world.git")
+ *                 .build())
+ *             .dockerfile(DockerfileArgs.builder()
+ *                 .location("app/Dockerfile")
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * ### Local export + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.inputs.ExportArgs;
+ * import com.pulumi.dockerbuild.inputs.ExportDockerArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var image = new Image("image", ImageArgs.builder()        
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .exports(ExportArgs.builder()
+ *                 .docker(ExportDockerArgs.builder()
+ *                     .tar(true)
+ *                     .build())
+ *                 .build())
+ *             .push(false)
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * + */ +@ResourceType(type="docker-build:index:Image") +public class Image extends com.pulumi.resources.CustomResource { + /** + * Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + */ + @Export(name="addHosts", refs={List.class,String.class}, tree="[0,1]") + private Output> addHosts; + + /** + * @return Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + */ + public Output>> addHosts() { + return Codegen.optional(this.addHosts); + } + /** + * `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + */ + @Export(name="buildArgs", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> buildArgs; + + /** + * @return `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + */ + public Output>> buildArgs() { + return Codegen.optional(this.buildArgs); + } + /** + * Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + */ + @Export(name="buildOnPreview", refs={Boolean.class}, tree="[0]") + private Output buildOnPreview; + + /** + * @return Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + */ + public Output> buildOnPreview() { + return Codegen.optional(this.buildOnPreview); + } + /** + * Builder configuration. + * + */ + @Export(name="builder", refs={BuilderConfig.class}, tree="[0]") + private Output builder; + + /** + * @return Builder configuration. + * + */ + public Output> builder_() { + return Codegen.optional(this.builder); + } + /** + * Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + */ + @Export(name="cacheFrom", refs={List.class,CacheFrom.class}, tree="[0,1]") + private Output> cacheFrom; + + /** + * @return Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + */ + public Output>> cacheFrom() { + return Codegen.optional(this.cacheFrom); + } + /** + * Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + */ + @Export(name="cacheTo", refs={List.class,CacheTo.class}, tree="[0,1]") + private Output> cacheTo; + + /** + * @return Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + */ + public Output>> cacheTo() { + return Codegen.optional(this.cacheTo); + } + /** + * Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + */ + @Export(name="context", refs={BuildContext.class}, tree="[0]") + private Output context; + + /** + * @return Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + */ + public Output> context() { + return Codegen.optional(this.context); + } + /** + * A preliminary hash of the image's build context. + * + * Pulumi uses this to determine if an image _may_ need to be re-built. + * + */ + @Export(name="contextHash", refs={String.class}, tree="[0]") + private Output contextHash; + + /** + * @return A preliminary hash of the image's build context. + * + * Pulumi uses this to determine if an image _may_ need to be re-built. + * + */ + public Output contextHash() { + return this.contextHash; + } + /** + * A SHA256 digest of the image if it was exported to a registry or + * elsewhere. + * + * Empty if the image was not exported. + * + * Registry images can be referenced precisely as `<tag>{@literal @}<digest>`. The + * `ref` output provides one such reference as a convenience. + * + */ + @Export(name="digest", refs={String.class}, tree="[0]") + private Output digest; + + /** + * @return A SHA256 digest of the image if it was exported to a registry or + * elsewhere. + * + * Empty if the image was not exported. + * + * Registry images can be referenced precisely as `<tag>{@literal @}<digest>`. The + * `ref` output provides one such reference as a convenience. + * + */ + public Output digest() { + return this.digest; + } + /** + * Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + */ + @Export(name="dockerfile", refs={Dockerfile.class}, tree="[0]") + private Output dockerfile; + + /** + * @return Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + */ + public Output> dockerfile() { + return Codegen.optional(this.dockerfile); + } + /** + * Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + */ + @Export(name="exec", refs={Boolean.class}, tree="[0]") + private Output exec; + + /** + * @return Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + */ + public Output> exec() { + return Codegen.optional(this.exec); + } + /** + * Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + */ + @Export(name="exports", refs={List.class,com.pulumi.dockerbuild.outputs.Export.class}, tree="[0,1]") + private Output> exports; + + /** + * @return Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + */ + public Output>> exports() { + return Codegen.optional(this.exports); + } + /** + * Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + */ + @Export(name="labels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> labels; + + /** + * @return Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + */ + public Output>> labels() { + return Codegen.optional(this.labels); + } + /** + * When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + */ + @Export(name="load", refs={Boolean.class}, tree="[0]") + private Output load; + + /** + * @return When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + */ + public Output> load() { + return Codegen.optional(this.load); + } + /** + * Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + */ + @Export(name="network", refs={NetworkMode.class}, tree="[0]") + private Output network; + + /** + * @return Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + */ + public Output> network() { + return Codegen.optional(this.network); + } + /** + * Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + */ + @Export(name="noCache", refs={Boolean.class}, tree="[0]") + private Output noCache; + + /** + * @return Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + */ + public Output> noCache() { + return Codegen.optional(this.noCache); + } + /** + * Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + */ + @Export(name="platforms", refs={List.class,Platform.class}, tree="[0,1]") + private Output> platforms; + + /** + * @return Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + */ + public Output>> platforms() { + return Codegen.optional(this.platforms); + } + /** + * Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + */ + @Export(name="pull", refs={Boolean.class}, tree="[0]") + private Output pull; + + /** + * @return Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + */ + public Output> pull() { + return Codegen.optional(this.pull); + } + /** + * When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + */ + @Export(name="push", refs={Boolean.class}, tree="[0]") + private Output push; + + /** + * @return When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + */ + public Output push() { + return this.push; + } + /** + * If the image was pushed to any registries then this will contain a + * single fully-qualified tag including the build's digest. + * + * If the image had tags but was not exported, this will take on a value + * of one of those tags. + * + * This will be empty if the image had no exports and no tags. + * + * This is only for convenience and may not be appropriate for situations + * where multiple tags or registries are involved. In those cases this + * output is not guaranteed to be stable. + * + * For more control over tags consumed by downstream resources you should + * use the `digest` output. + * + */ + @Export(name="ref", refs={String.class}, tree="[0]") + private Output ref; + + /** + * @return If the image was pushed to any registries then this will contain a + * single fully-qualified tag including the build's digest. + * + * If the image had tags but was not exported, this will take on a value + * of one of those tags. + * + * This will be empty if the image had no exports and no tags. + * + * This is only for convenience and may not be appropriate for situations + * where multiple tags or registries are involved. In those cases this + * output is not guaranteed to be stable. + * + * For more control over tags consumed by downstream resources you should + * use the `digest` output. + * + */ + public Output ref() { + return this.ref; + } + /** + * Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + */ + @Export(name="registries", refs={List.class,Registry.class}, tree="[0,1]") + private Output> registries; + + /** + * @return Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + */ + public Output>> registries() { + return Codegen.optional(this.registries); + } + /** + * A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + */ + @Export(name="secrets", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> secrets; + + /** + * @return A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + */ + public Output>> secrets() { + return Codegen.optional(this.secrets); + } + /** + * SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + */ + @Export(name="ssh", refs={List.class,SSH.class}, tree="[0,1]") + private Output> ssh; + + /** + * @return SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + */ + public Output>> ssh() { + return Codegen.optional(this.ssh); + } + /** + * Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + */ + @Export(name="tags", refs={List.class,String.class}, tree="[0,1]") + private Output> tags; + + /** + * @return Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + */ + public Output>> tags() { + return Codegen.optional(this.tags); + } + /** + * Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + */ + @Export(name="target", refs={String.class}, tree="[0]") + private Output target; + + /** + * @return Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + */ + public Output> target() { + return Codegen.optional(this.target); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Image(String name) { + this(name, ImageArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Image(String name, ImageArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Image(String name, ImageArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("docker-build:index:Image", name, args == null ? ImageArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private Image(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("docker-build:index:Image", name, null, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Image get(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Image(name, id, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java new file mode 100644 index 0000000..eb594a0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java @@ -0,0 +1,1389 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.NetworkMode; +import com.pulumi.dockerbuild.enums.Platform; +import com.pulumi.dockerbuild.inputs.BuildContextArgs; +import com.pulumi.dockerbuild.inputs.BuilderConfigArgs; +import com.pulumi.dockerbuild.inputs.CacheFromArgs; +import com.pulumi.dockerbuild.inputs.CacheToArgs; +import com.pulumi.dockerbuild.inputs.DockerfileArgs; +import com.pulumi.dockerbuild.inputs.ExportArgs; +import com.pulumi.dockerbuild.inputs.RegistryArgs; +import com.pulumi.dockerbuild.inputs.SSHArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ImageArgs extends com.pulumi.resources.ResourceArgs { + + public static final ImageArgs Empty = new ImageArgs(); + + /** + * Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + */ + @Import(name="addHosts") + private @Nullable Output> addHosts; + + /** + * @return Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + */ + public Optional>> addHosts() { + return Optional.ofNullable(this.addHosts); + } + + /** + * `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + */ + @Import(name="buildArgs") + private @Nullable Output> buildArgs; + + /** + * @return `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + */ + public Optional>> buildArgs() { + return Optional.ofNullable(this.buildArgs); + } + + /** + * Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + */ + @Import(name="buildOnPreview") + private @Nullable Output buildOnPreview; + + /** + * @return Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + */ + public Optional> buildOnPreview() { + return Optional.ofNullable(this.buildOnPreview); + } + + /** + * Builder configuration. + * + */ + @Import(name="builder") + private @Nullable Output builder; + + /** + * @return Builder configuration. + * + */ + public Optional> builder_() { + return Optional.ofNullable(this.builder); + } + + /** + * Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + */ + @Import(name="cacheFrom") + private @Nullable Output> cacheFrom; + + /** + * @return Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + */ + public Optional>> cacheFrom() { + return Optional.ofNullable(this.cacheFrom); + } + + /** + * Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + */ + @Import(name="cacheTo") + private @Nullable Output> cacheTo; + + /** + * @return Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + */ + public Optional>> cacheTo() { + return Optional.ofNullable(this.cacheTo); + } + + /** + * Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + */ + @Import(name="context") + private @Nullable Output context; + + /** + * @return Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + */ + public Optional> context() { + return Optional.ofNullable(this.context); + } + + /** + * Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + */ + @Import(name="dockerfile") + private @Nullable Output dockerfile; + + /** + * @return Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + */ + public Optional> dockerfile() { + return Optional.ofNullable(this.dockerfile); + } + + /** + * Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + */ + @Import(name="exec") + private @Nullable Output exec; + + /** + * @return Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + */ + public Optional> exec() { + return Optional.ofNullable(this.exec); + } + + /** + * Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + */ + @Import(name="exports") + private @Nullable Output> exports; + + /** + * @return Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + */ + public Optional>> exports() { + return Optional.ofNullable(this.exports); + } + + /** + * Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + */ + @Import(name="labels") + private @Nullable Output> labels; + + /** + * @return Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + */ + public Optional>> labels() { + return Optional.ofNullable(this.labels); + } + + /** + * When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + */ + @Import(name="load") + private @Nullable Output load; + + /** + * @return When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + */ + public Optional> load() { + return Optional.ofNullable(this.load); + } + + /** + * Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + */ + @Import(name="network") + private @Nullable Output network; + + /** + * @return Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + */ + public Optional> network() { + return Optional.ofNullable(this.network); + } + + /** + * Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + */ + @Import(name="noCache") + private @Nullable Output noCache; + + /** + * @return Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + */ + public Optional> noCache() { + return Optional.ofNullable(this.noCache); + } + + /** + * Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + */ + @Import(name="platforms") + private @Nullable Output> platforms; + + /** + * @return Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + */ + public Optional>> platforms() { + return Optional.ofNullable(this.platforms); + } + + /** + * Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + */ + @Import(name="pull") + private @Nullable Output pull; + + /** + * @return Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + */ + public Optional> pull() { + return Optional.ofNullable(this.pull); + } + + /** + * When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + */ + @Import(name="push", required=true) + private Output push; + + /** + * @return When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + */ + public Output push() { + return this.push; + } + + /** + * Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + */ + @Import(name="registries") + private @Nullable Output> registries; + + /** + * @return Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + */ + public Optional>> registries() { + return Optional.ofNullable(this.registries); + } + + /** + * A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + */ + @Import(name="secrets") + private @Nullable Output> secrets; + + /** + * @return A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + */ + public Optional>> secrets() { + return Optional.ofNullable(this.secrets); + } + + /** + * SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + */ + @Import(name="ssh") + private @Nullable Output> ssh; + + /** + * @return SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + */ + public Optional>> ssh() { + return Optional.ofNullable(this.ssh); + } + + /** + * Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + /** + * Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + */ + @Import(name="target") + private @Nullable Output target; + + /** + * @return Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + */ + public Optional> target() { + return Optional.ofNullable(this.target); + } + + private ImageArgs() {} + + private ImageArgs(ImageArgs $) { + this.addHosts = $.addHosts; + this.buildArgs = $.buildArgs; + this.buildOnPreview = $.buildOnPreview; + this.builder = $.builder; + this.cacheFrom = $.cacheFrom; + this.cacheTo = $.cacheTo; + this.context = $.context; + this.dockerfile = $.dockerfile; + this.exec = $.exec; + this.exports = $.exports; + this.labels = $.labels; + this.load = $.load; + this.network = $.network; + this.noCache = $.noCache; + this.platforms = $.platforms; + this.pull = $.pull; + this.push = $.push; + this.registries = $.registries; + this.secrets = $.secrets; + this.ssh = $.ssh; + this.tags = $.tags; + this.target = $.target; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ImageArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ImageArgs $; + + public Builder() { + $ = new ImageArgs(); + } + + public Builder(ImageArgs defaults) { + $ = new ImageArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param addHosts Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + * @return builder + * + */ + public Builder addHosts(@Nullable Output> addHosts) { + $.addHosts = addHosts; + return this; + } + + /** + * @param addHosts Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + * @return builder + * + */ + public Builder addHosts(List addHosts) { + return addHosts(Output.of(addHosts)); + } + + /** + * @param addHosts Custom `host:ip` mappings to use during the build. + * + * Equivalent to Docker's `--add-host` flag. + * + * @return builder + * + */ + public Builder addHosts(String... addHosts) { + return addHosts(List.of(addHosts)); + } + + /** + * @param buildArgs `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + * @return builder + * + */ + public Builder buildArgs(@Nullable Output> buildArgs) { + $.buildArgs = buildArgs; + return this; + } + + /** + * @param buildArgs `ARG` names and values to set during the build. + * + * These variables are accessed like environment variables inside `RUN` + * instructions. + * + * Build arguments are persisted in the image, so you should use `secrets` + * if these arguments are sensitive. + * + * Equivalent to Docker's `--build-arg` flag. + * + * @return builder + * + */ + public Builder buildArgs(Map buildArgs) { + return buildArgs(Output.of(buildArgs)); + } + + /** + * @param buildOnPreview Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + * @return builder + * + */ + public Builder buildOnPreview(@Nullable Output buildOnPreview) { + $.buildOnPreview = buildOnPreview; + return this; + } + + /** + * @param buildOnPreview Setting this to `false` will always skip image builds during previews, + * and setting it to `true` will always build images during previews. + * + * Images built during previews are never exported to registries, however + * cache manifests are still exported. + * + * On-disk Dockerfiles are always validated for syntactic correctness + * regardless of this setting. + * + * Defaults to `true` as a safeguard against broken images merging as part + * of CI pipelines. + * + * @return builder + * + */ + public Builder buildOnPreview(Boolean buildOnPreview) { + return buildOnPreview(Output.of(buildOnPreview)); + } + + /** + * @param builder Builder configuration. + * + * @return builder + * + */ + public Builder builder_(@Nullable Output builder) { + $.builder = builder; + return this; + } + + /** + * @param builder Builder configuration. + * + * @return builder + * + */ + public Builder builder_(BuilderConfigArgs builder) { + return builder_(Output.of(builder)); + } + + /** + * @param cacheFrom Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + * @return builder + * + */ + public Builder cacheFrom(@Nullable Output> cacheFrom) { + $.cacheFrom = cacheFrom; + return this; + } + + /** + * @param cacheFrom Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + * @return builder + * + */ + public Builder cacheFrom(List cacheFrom) { + return cacheFrom(Output.of(cacheFrom)); + } + + /** + * @param cacheFrom Cache export configuration. + * + * Equivalent to Docker's `--cache-from` flag. + * + * @return builder + * + */ + public Builder cacheFrom(CacheFromArgs... cacheFrom) { + return cacheFrom(List.of(cacheFrom)); + } + + /** + * @param cacheTo Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + * @return builder + * + */ + public Builder cacheTo(@Nullable Output> cacheTo) { + $.cacheTo = cacheTo; + return this; + } + + /** + * @param cacheTo Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + * @return builder + * + */ + public Builder cacheTo(List cacheTo) { + return cacheTo(Output.of(cacheTo)); + } + + /** + * @param cacheTo Cache import configuration. + * + * Equivalent to Docker's `--cache-to` flag. + * + * @return builder + * + */ + public Builder cacheTo(CacheToArgs... cacheTo) { + return cacheTo(List.of(cacheTo)); + } + + /** + * @param context Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + * @return builder + * + */ + public Builder context(@Nullable Output context) { + $.context = context; + return this; + } + + /** + * @param context Build context settings. Defaults to the current directory. + * + * Equivalent to Docker's `PATH | URL | -` positional argument. + * + * @return builder + * + */ + public Builder context(BuildContextArgs context) { + return context(Output.of(context)); + } + + /** + * @param dockerfile Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + * @return builder + * + */ + public Builder dockerfile(@Nullable Output dockerfile) { + $.dockerfile = dockerfile; + return this; + } + + /** + * @param dockerfile Dockerfile settings. + * + * Equivalent to Docker's `--file` flag. + * + * @return builder + * + */ + public Builder dockerfile(DockerfileArgs dockerfile) { + return dockerfile(Output.of(dockerfile)); + } + + /** + * @param exec Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + * @return builder + * + */ + public Builder exec(@Nullable Output exec) { + $.exec = exec; + return this; + } + + /** + * @param exec Use `exec` mode to build this image. + * + * By default the provider embeds a v25 Docker client with v0.12 buildx + * support. This helps ensure consistent behavior across environments and + * is compatible with alternative build backends (e.g. `buildkitd`), but + * it may not be desirable if you require a specific version of buildx. + * For example you may want to run a custom `docker-buildx` binary with + * support for [Docker Build + * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). + * + * When this is set to `true` the provider will instead execute the + * `docker-buildx` binary directly to perform its operations. The user is + * responsible for ensuring this binary exists, with correct permissions + * and pre-configured builders, at a path Docker expects (e.g. + * `~/.docker/cli-plugins`). + * + * Debugging `exec` mode may be more difficult as Pulumi will not be able + * to surface fine-grained errors and warnings. Additionally credentials + * are temporarily written to disk in order to provide them to the + * `docker-buildx` binary. + * + * @return builder + * + */ + public Builder exec(Boolean exec) { + return exec(Output.of(exec)); + } + + /** + * @param exports Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + * @return builder + * + */ + public Builder exports(@Nullable Output> exports) { + $.exports = exports; + return this; + } + + /** + * @param exports Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + * @return builder + * + */ + public Builder exports(List exports) { + return exports(Output.of(exports)); + } + + /** + * @param exports Controls where images are persisted after building. + * + * Images are only stored in the local cache unless `exports` are + * explicitly configured. + * + * Exporting to multiple destinations requires a daemon running BuildKit + * 0.13 or later. + * + * Equivalent to Docker's `--output` flag. + * + * @return builder + * + */ + public Builder exports(ExportArgs... exports) { + return exports(List.of(exports)); + } + + /** + * @param labels Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + * @return builder + * + */ + public Builder labels(@Nullable Output> labels) { + $.labels = labels; + return this; + } + + /** + * @param labels Attach arbitrary key/value metadata to the image. + * + * Equivalent to Docker's `--label` flag. + * + * @return builder + * + */ + public Builder labels(Map labels) { + return labels(Output.of(labels)); + } + + /** + * @param load When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + * @return builder + * + */ + public Builder load(@Nullable Output load) { + $.load = load; + return this; + } + + /** + * @param load When `true` the build will automatically include a `docker` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--load` flag. + * + * @return builder + * + */ + public Builder load(Boolean load) { + return load(Output.of(load)); + } + + /** + * @param network Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + * @return builder + * + */ + public Builder network(@Nullable Output network) { + $.network = network; + return this; + } + + /** + * @param network Set the network mode for `RUN` instructions. Defaults to `default`. + * + * For custom networks, configure your builder with `--driver-opt network=...`. + * + * Equivalent to Docker's `--network` flag. + * + * @return builder + * + */ + public Builder network(NetworkMode network) { + return network(Output.of(network)); + } + + /** + * @param noCache Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + * @return builder + * + */ + public Builder noCache(@Nullable Output noCache) { + $.noCache = noCache; + return this; + } + + /** + * @param noCache Do not import cache manifests when building the image. + * + * Equivalent to Docker's `--no-cache` flag. + * + * @return builder + * + */ + public Builder noCache(Boolean noCache) { + return noCache(Output.of(noCache)); + } + + /** + * @param platforms Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + * @return builder + * + */ + public Builder platforms(@Nullable Output> platforms) { + $.platforms = platforms; + return this; + } + + /** + * @param platforms Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + * @return builder + * + */ + public Builder platforms(List platforms) { + return platforms(Output.of(platforms)); + } + + /** + * @param platforms Set target platform(s) for the build. Defaults to the host's platform. + * + * Equivalent to Docker's `--platform` flag. + * + * @return builder + * + */ + public Builder platforms(Platform... platforms) { + return platforms(List.of(platforms)); + } + + /** + * @param pull Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + * @return builder + * + */ + public Builder pull(@Nullable Output pull) { + $.pull = pull; + return this; + } + + /** + * @param pull Always pull referenced images. + * + * Equivalent to Docker's `--pull` flag. + * + * @return builder + * + */ + public Builder pull(Boolean pull) { + return pull(Output.of(pull)); + } + + /** + * @param push When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + * @return builder + * + */ + public Builder push(Output push) { + $.push = push; + return this; + } + + /** + * @param push When `true` the build will automatically include a `registry` export. + * + * Defaults to `false`. + * + * Equivalent to Docker's `--push` flag. + * + * @return builder + * + */ + public Builder push(Boolean push) { + return push(Output.of(push)); + } + + /** + * @param registries Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + * @return builder + * + */ + public Builder registries(@Nullable Output> registries) { + $.registries = registries; + return this; + } + + /** + * @param registries Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + * @return builder + * + */ + public Builder registries(List registries) { + return registries(Output.of(registries)); + } + + /** + * @param registries Registry credentials. Required if reading or exporting to private + * repositories. + * + * Credentials are kept in-memory and do not pollute pre-existing + * credentials on the host. + * + * Similar to `docker login`. + * + * @return builder + * + */ + public Builder registries(RegistryArgs... registries) { + return registries(List.of(registries)); + } + + /** + * @param secrets A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + * @return builder + * + */ + public Builder secrets(@Nullable Output> secrets) { + $.secrets = secrets; + return this; + } + + /** + * @param secrets A mapping of secret names to their corresponding values. + * + * Unlike the Docker CLI, these can be passed by value and do not need to + * exist on-disk or in environment variables. + * + * Build arguments and environment variables are persistent in the final + * image, so you should use this for sensitive values. + * + * Similar to Docker's `--secret` flag. + * + * @return builder + * + */ + public Builder secrets(Map secrets) { + return secrets(Output.of(secrets)); + } + + /** + * @param ssh SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + * @return builder + * + */ + public Builder ssh(@Nullable Output> ssh) { + $.ssh = ssh; + return this; + } + + /** + * @param ssh SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + * @return builder + * + */ + public Builder ssh(List ssh) { + return ssh(Output.of(ssh)); + } + + /** + * @param ssh SSH agent socket or keys to expose to the build. + * + * Equivalent to Docker's `--ssh` flag. + * + * @return builder + * + */ + public Builder ssh(SSHArgs... ssh) { + return ssh(List.of(ssh)); + } + + /** + * @param tags Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + * @return builder + * + */ + public Builder tags(List tags) { + return tags(Output.of(tags)); + } + + /** + * @param tags Name and optionally a tag (format: `name:tag`). + * + * If exporting to a registry, the name should include the fully qualified + * registry address (e.g. `docker.io/pulumi/pulumi:latest`). + * + * Equivalent to Docker's `--tag` flag. + * + * @return builder + * + */ + public Builder tags(String... tags) { + return tags(List.of(tags)); + } + + /** + * @param target Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + * @return builder + * + */ + public Builder target(@Nullable Output target) { + $.target = target; + return this; + } + + /** + * @param target Set the target build stage(s) to build. + * + * If not specified all targets will be built by default. + * + * Equivalent to Docker's `--target` flag. + * + * @return builder + * + */ + public Builder target(String target) { + return target(Output.of(target)); + } + + public ImageArgs build() { + $.buildOnPreview = Codegen.booleanProp("buildOnPreview").output().arg($.buildOnPreview).def(true).getNullable(); + $.network = Codegen.objectProp("network", NetworkMode.class).output().arg($.network).def(NetworkMode.Default_).getNullable(); + if ($.push == null) { + throw new MissingRequiredPropertyException("ImageArgs", "push"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java new file mode 100644 index 0000000..ee897d5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java @@ -0,0 +1,255 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.IndexArgs; +import com.pulumi.dockerbuild.Utilities; +import com.pulumi.dockerbuild.outputs.Registry; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * A wrapper around `docker buildx imagetools create` to create an index + * (or manifest list) referencing one or more existing images. + * + * In most cases you do not need an `Index` to build a multi-platform + * image -- specifying multiple platforms on the `Image` will handle this + * for you automatically. + * + * However, as of April 2024, building multi-platform images _with + * caching_ will only export a cache for one platform at a time (see [this + * discussion](https://github.com/docker/buildx/discussions/1382) for more + * details). + * + * Therefore this resource can be helpful if you are building + * multi-platform images with caching: each platform can be built and + * cached separately, and an `Index` can join them all together. An + * example of this is shown below. + * + * This resource creates an OCI image index or a Docker manifest list + * depending on the media types of the source images. + * + * ## Example Usage + * ### Multi-platform registry caching + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.dockerbuild.Image;
+ * import com.pulumi.dockerbuild.ImageArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToArgs;
+ * import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;
+ * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
+ * import com.pulumi.dockerbuild.Index;
+ * import com.pulumi.dockerbuild.IndexArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var amd64 = new Image("amd64", ImageArgs.builder()        
+ *             .cacheFrom(CacheFromArgs.builder()
+ *                 .registry(CacheFromRegistryArgs.builder()
+ *                     .ref("docker.io/pulumi/pulumi:cache-amd64")
+ *                     .build())
+ *                 .build())
+ *             .cacheTo(CacheToArgs.builder()
+ *                 .registry(CacheToRegistryArgs.builder()
+ *                     .mode("max")
+ *                     .ref("docker.io/pulumi/pulumi:cache-amd64")
+ *                     .build())
+ *                 .build())
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .platforms("linux/amd64")
+ *             .tags("docker.io/pulumi/pulumi:3.107.0-amd64")
+ *             .build());
+ * 
+ *         var arm64 = new Image("arm64", ImageArgs.builder()        
+ *             .cacheFrom(CacheFromArgs.builder()
+ *                 .registry(CacheFromRegistryArgs.builder()
+ *                     .ref("docker.io/pulumi/pulumi:cache-arm64")
+ *                     .build())
+ *                 .build())
+ *             .cacheTo(CacheToArgs.builder()
+ *                 .registry(CacheToRegistryArgs.builder()
+ *                     .mode("max")
+ *                     .ref("docker.io/pulumi/pulumi:cache-arm64")
+ *                     .build())
+ *                 .build())
+ *             .context(BuildContextArgs.builder()
+ *                 .location("app")
+ *                 .build())
+ *             .platforms("linux/arm64")
+ *             .tags("docker.io/pulumi/pulumi:3.107.0-arm64")
+ *             .build());
+ * 
+ *         var index = new Index("index", IndexArgs.builder()        
+ *             .sources(            
+ *                 amd64.ref(),
+ *                 arm64.ref())
+ *             .tag("docker.io/pulumi/pulumi:3.107.0")
+ *             .build());
+ * 
+ *         ctx.export("ref", index.ref());
+ *     }
+ * }
+ * }
+ * 
+ * + */ +@ResourceType(type="docker-build:index:Index") +public class Index extends com.pulumi.resources.CustomResource { + /** + * If true, push the index to the target registry. + * + * Defaults to `true`. + * + */ + @Export(name="push", refs={Boolean.class}, tree="[0]") + private Output push; + + /** + * @return If true, push the index to the target registry. + * + * Defaults to `true`. + * + */ + public Output> push() { + return Codegen.optional(this.push); + } + /** + * The pushed tag with digest. + * + * Identical to the tag if the index was not pushed. + * + */ + @Export(name="ref", refs={String.class}, tree="[0]") + private Output ref; + + /** + * @return The pushed tag with digest. + * + * Identical to the tag if the index was not pushed. + * + */ + public Output ref() { + return this.ref; + } + /** + * Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + */ + @Export(name="registry", refs={Registry.class}, tree="[0]") + private Output registry; + + /** + * @return Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + */ + public Output> registry() { + return Codegen.optional(this.registry); + } + /** + * Existing images to include in the index. + * + */ + @Export(name="sources", refs={List.class,String.class}, tree="[0,1]") + private Output> sources; + + /** + * @return Existing images to include in the index. + * + */ + public Output> sources() { + return this.sources; + } + /** + * The tag to apply to the index. + * + */ + @Export(name="tag", refs={String.class}, tree="[0]") + private Output tag; + + /** + * @return The tag to apply to the index. + * + */ + public Output tag() { + return this.tag; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Index(String name) { + this(name, IndexArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Index(String name, IndexArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Index(String name, IndexArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("docker-build:index:Index", name, args == null ? IndexArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private Index(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("docker-build:index:Index", name, null, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Index get(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Index(name, id, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java new file mode 100644 index 0000000..ba66dab --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java @@ -0,0 +1,232 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.inputs.RegistryArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class IndexArgs extends com.pulumi.resources.ResourceArgs { + + public static final IndexArgs Empty = new IndexArgs(); + + /** + * If true, push the index to the target registry. + * + * Defaults to `true`. + * + */ + @Import(name="push") + private @Nullable Output push; + + /** + * @return If true, push the index to the target registry. + * + * Defaults to `true`. + * + */ + public Optional> push() { + return Optional.ofNullable(this.push); + } + + /** + * Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + */ + @Import(name="registry") + private @Nullable Output registry; + + /** + * @return Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + */ + public Optional> registry() { + return Optional.ofNullable(this.registry); + } + + /** + * Existing images to include in the index. + * + */ + @Import(name="sources", required=true) + private Output> sources; + + /** + * @return Existing images to include in the index. + * + */ + public Output> sources() { + return this.sources; + } + + /** + * The tag to apply to the index. + * + */ + @Import(name="tag", required=true) + private Output tag; + + /** + * @return The tag to apply to the index. + * + */ + public Output tag() { + return this.tag; + } + + private IndexArgs() {} + + private IndexArgs(IndexArgs $) { + this.push = $.push; + this.registry = $.registry; + this.sources = $.sources; + this.tag = $.tag; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(IndexArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private IndexArgs $; + + public Builder() { + $ = new IndexArgs(); + } + + public Builder(IndexArgs defaults) { + $ = new IndexArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param push If true, push the index to the target registry. + * + * Defaults to `true`. + * + * @return builder + * + */ + public Builder push(@Nullable Output push) { + $.push = push; + return this; + } + + /** + * @param push If true, push the index to the target registry. + * + * Defaults to `true`. + * + * @return builder + * + */ + public Builder push(Boolean push) { + return push(Output.of(push)); + } + + /** + * @param registry Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + * @return builder + * + */ + public Builder registry(@Nullable Output registry) { + $.registry = registry; + return this; + } + + /** + * @param registry Authentication for the registry where the tagged index will be pushed. + * + * Credentials can also be included with the provider's configuration. + * + * @return builder + * + */ + public Builder registry(RegistryArgs registry) { + return registry(Output.of(registry)); + } + + /** + * @param sources Existing images to include in the index. + * + * @return builder + * + */ + public Builder sources(Output> sources) { + $.sources = sources; + return this; + } + + /** + * @param sources Existing images to include in the index. + * + * @return builder + * + */ + public Builder sources(List sources) { + return sources(Output.of(sources)); + } + + /** + * @param sources Existing images to include in the index. + * + * @return builder + * + */ + public Builder sources(String... sources) { + return sources(List.of(sources)); + } + + /** + * @param tag The tag to apply to the index. + * + * @return builder + * + */ + public Builder tag(Output tag) { + $.tag = tag; + return this; + } + + /** + * @param tag The tag to apply to the index. + * + * @return builder + * + */ + public Builder tag(String tag) { + return tag(Output.of(tag)); + } + + public IndexArgs build() { + $.push = Codegen.booleanProp("push").output().arg($.push).def(true).getNullable(); + if ($.sources == null) { + throw new MissingRequiredPropertyException("IndexArgs", "sources"); + } + if ($.tag == null) { + throw new MissingRequiredPropertyException("IndexArgs", "tag"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java new file mode 100644 index 0000000..0d8460b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java @@ -0,0 +1,65 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.ProviderArgs; +import com.pulumi.dockerbuild.Utilities; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="pulumi:providers:docker-build") +public class Provider extends com.pulumi.resources.ProviderResource { + /** + * The build daemon's address. + * + */ + @Export(name="host", refs={String.class}, tree="[0]") + private Output host; + + /** + * @return The build daemon's address. + * + */ + public Output> host() { + return Codegen.optional(this.host); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Provider(String name) { + this(name, ProviderArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Provider(String name, @Nullable ProviderArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Provider(String name, @Nullable ProviderArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("docker-build", name, args == null ? ProviderArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java new file mode 100644 index 0000000..d42d184 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java @@ -0,0 +1,108 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.inputs.RegistryArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ProviderArgs extends com.pulumi.resources.ResourceArgs { + + public static final ProviderArgs Empty = new ProviderArgs(); + + /** + * The build daemon's address. + * + */ + @Import(name="host") + private @Nullable Output host; + + /** + * @return The build daemon's address. + * + */ + public Optional> host() { + return Optional.ofNullable(this.host); + } + + @Import(name="registries", json=true) + private @Nullable Output> registries; + + public Optional>> registries() { + return Optional.ofNullable(this.registries); + } + + private ProviderArgs() {} + + private ProviderArgs(ProviderArgs $) { + this.host = $.host; + this.registries = $.registries; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ProviderArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ProviderArgs $; + + public Builder() { + $ = new ProviderArgs(); + } + + public Builder(ProviderArgs defaults) { + $ = new ProviderArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param host The build daemon's address. + * + * @return builder + * + */ + public Builder host(@Nullable Output host) { + $.host = host; + return this; + } + + /** + * @param host The build daemon's address. + * + * @return builder + * + */ + public Builder host(String host) { + return host(Output.of(host)); + } + + public Builder registries(@Nullable Output> registries) { + $.registries = registries; + return this; + } + + public Builder registries(List registries) { + return registries(Output.of(registries)); + } + + public Builder registries(RegistryArgs... registries) { + return registries(List.of(registries)); + } + + public ProviderArgs build() { + $.host = Codegen.stringProp("host").output().arg($.host).env("DOCKER_HOST").def("").getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java new file mode 100644 index 0000000..c8c809b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild; + + + + + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Optional; +import java.util.stream.Collectors; +import javax.annotation.Nullable; +import com.pulumi.core.internal.Environment; +import com.pulumi.deployment.InvokeOptions; + +public class Utilities { + + public static Optional getEnv(String... names) { + for (var n : names) { + var value = Environment.getEnvironmentVariable(n); + if (value.isValue()) { + return Optional.of(value.value()); + } + } + return Optional.empty(); + } + + public static Optional getEnvBoolean(String... names) { + for (var n : names) { + var value = Environment.getBooleanEnvironmentVariable(n); + if (value.isValue()) { + return Optional.of(value.value()); + } + } + return Optional.empty(); + } + + public static Optional getEnvInteger(String... names) { + for (var n : names) { + var value = Environment.getIntegerEnvironmentVariable(n); + if (value.isValue()) { + return Optional.of(value.value()); + } + } + return Optional.empty(); + } + + public static Optional getEnvDouble(String... names) { + for (var n : names) { + var value = Environment.getDoubleEnvironmentVariable(n); + if (value.isValue()) { + return Optional.of(value.value()); + } + } + return Optional.empty(); + } + + public static InvokeOptions withVersion(@Nullable InvokeOptions options) { + if (options != null && options.getVersion().isPresent()) { + return options; + } + return new InvokeOptions( + options == null ? null : options.getParent().orElse(null), + options == null ? null : options.getProvider().orElse(null), + getVersion() + ); + } + + private static final String version; + public static String getVersion() { + return version; + } + + static { + var resourceName = "com/pulumi/docker-build/version.txt"; + var versionFile = Utilities.class.getClassLoader().getResourceAsStream(resourceName); + if (versionFile == null) { + throw new IllegalStateException( + String.format("expected resource '%s' on Classpath, not found", resourceName) + ); + } + version = new BufferedReader(new InputStreamReader(versionFile)) + .lines() + .collect(Collectors.joining("\n")) + .trim(); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java new file mode 100644 index 0000000..fb705e9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java @@ -0,0 +1,41 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.enums; + +import com.pulumi.core.annotations.EnumType; +import java.lang.String; +import java.util.Objects; +import java.util.StringJoiner; + + @EnumType + public enum CacheMode { + /** + * Only layers that are exported into the resulting image are cached. + * + */ + Min("min"), + /** + * All layers are cached, even those of intermediate steps. + * + */ + Max("max"); + + private final String value; + + CacheMode(String value) { + this.value = Objects.requireNonNull(value); + } + + @EnumType.Converter + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return new StringJoiner(", ", "CacheMode[", "]") + .add("value='" + this.value + "'") + .toString(); + } + } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java new file mode 100644 index 0000000..bc5ab8e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java @@ -0,0 +1,46 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.enums; + +import com.pulumi.core.annotations.EnumType; +import java.lang.String; +import java.util.Objects; +import java.util.StringJoiner; + + @EnumType + public enum CompressionType { + /** + * Use `gzip` for compression. + * + */ + Gzip("gzip"), + /** + * Use `estargz` for compression. + * + */ + Estargz("estargz"), + /** + * Use `zstd` for compression. + * + */ + Zstd("zstd"); + + private final String value; + + CompressionType(String value) { + this.value = Objects.requireNonNull(value); + } + + @EnumType.Converter + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return new StringJoiner(", ", "CompressionType[", "]") + .add("value='" + this.value + "'") + .toString(); + } + } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java new file mode 100644 index 0000000..5b27243 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java @@ -0,0 +1,46 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.enums; + +import com.pulumi.core.annotations.EnumType; +import java.lang.String; +import java.util.Objects; +import java.util.StringJoiner; + + @EnumType + public enum NetworkMode { + /** + * The default sandbox network mode. + * + */ + Default_("default"), + /** + * Host network mode. + * + */ + Host("host"), + /** + * Disable network access. + * + */ + None("none"); + + private final String value; + + NetworkMode(String value) { + this.value = Objects.requireNonNull(value); + } + + @EnumType.Converter + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return new StringJoiner(", ", "NetworkMode[", "]") + .add("value='" + this.value + "'") + .toString(); + } + } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java new file mode 100644 index 0000000..6c14b3a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.enums; + +import com.pulumi.core.annotations.EnumType; +import java.lang.String; +import java.util.Objects; +import java.util.StringJoiner; + + @EnumType + public enum Platform { + Darwin_386("darwin/386"), + Darwin_amd64("darwin/amd64"), + Darwin_arm("darwin/arm"), + Darwin_arm64("darwin/arm64"), + Dragonfly_amd64("dragonfly/amd64"), + Freebsd_386("freebsd/386"), + Freebsd_amd64("freebsd/amd64"), + Freebsd_arm("freebsd/arm"), + Linux_386("linux/386"), + Linux_amd64("linux/amd64"), + Linux_arm("linux/arm"), + Linux_arm64("linux/arm64"), + Linux_mips64("linux/mips64"), + Linux_mips64le("linux/mips64le"), + Linux_ppc64le("linux/ppc64le"), + Linux_riscv64("linux/riscv64"), + Linux_s390x("linux/s390x"), + Netbsd_386("netbsd/386"), + Netbsd_amd64("netbsd/amd64"), + Netbsd_arm("netbsd/arm"), + Openbsd_386("openbsd/386"), + Openbsd_amd64("openbsd/amd64"), + Openbsd_arm("openbsd/arm"), + Plan9_386("plan9/386"), + Plan9_amd64("plan9/amd64"), + Solaris_amd64("solaris/amd64"), + Windows_386("windows/386"), + Windows_amd64("windows/amd64"); + + private final String value; + + Platform(String value) { + this.value = Objects.requireNonNull(value); + } + + @EnumType.Converter + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return new StringJoiner(", ", "Platform[", "]") + .add("value='" + this.value + "'") + .toString(); + } + } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java new file mode 100644 index 0000000..8baa84d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java @@ -0,0 +1,174 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dockerbuild.inputs.ContextArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class BuildContextArgs extends com.pulumi.resources.ResourceArgs { + + public static final BuildContextArgs Empty = new BuildContextArgs(); + + /** + * Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + public Output location() { + return this.location; + } + + /** + * Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + */ + @Import(name="named") + private @Nullable Output> named; + + /** + * @return Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + */ + public Optional>> named() { + return Optional.ofNullable(this.named); + } + + private BuildContextArgs() {} + + private BuildContextArgs(BuildContextArgs $) { + this.location = $.location; + this.named = $.named; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(BuildContextArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private BuildContextArgs $; + + public Builder() { + $ = new BuildContextArgs(); + } + + public Builder(BuildContextArgs defaults) { + $ = new BuildContextArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param named Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + * @return builder + * + */ + public Builder named(@Nullable Output> named) { + $.named = named; + return this; + } + + /** + * @param named Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + * @return builder + * + */ + public Builder named(Map named) { + return named(Output.of(named)); + } + + public BuildContextArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("BuildContextArgs", "location"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java new file mode 100644 index 0000000..986bbaf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java @@ -0,0 +1,103 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class BuilderConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final BuilderConfigArgs Empty = new BuilderConfigArgs(); + + /** + * Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + private BuilderConfigArgs() {} + + private BuilderConfigArgs(BuilderConfigArgs $) { + this.name = $.name; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(BuilderConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private BuilderConfigArgs $; + + public Builder() { + $ = new BuilderConfigArgs(); + } + + public Builder(BuilderConfigArgs defaults) { + $ = new BuilderConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + public BuilderConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java new file mode 100644 index 0000000..a05f9cf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java @@ -0,0 +1,331 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dockerbuild.inputs.CacheFromAzureBlobArgs; +import com.pulumi.dockerbuild.inputs.CacheFromGitHubActionsArgs; +import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs; +import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs; +import com.pulumi.dockerbuild.inputs.CacheFromS3Args; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheFromArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromArgs Empty = new CacheFromArgs(); + + /** + * Upload build caches to Azure's blob storage service. + * + */ + @Import(name="azblob") + private @Nullable Output azblob; + + /** + * @return Upload build caches to Azure's blob storage service. + * + */ + public Optional> azblob() { + return Optional.ofNullable(this.azblob); + } + + /** + * When `true` this entry will be excluded. Defaults to `false`. + * + */ + @Import(name="disabled") + private @Nullable Output disabled; + + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional> disabled() { + return Optional.ofNullable(this.disabled); + } + + /** + * Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + @Import(name="gha") + private @Nullable Output gha; + + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + public Optional> gha() { + return Optional.ofNullable(this.gha); + } + + /** + * A simple backend which caches images on your local filesystem. + * + */ + @Import(name="local") + private @Nullable Output local; + + /** + * @return A simple backend which caches images on your local filesystem. + * + */ + public Optional> local() { + return Optional.ofNullable(this.local); + } + + /** + * A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + */ + @Import(name="raw") + private @Nullable Output raw; + + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + */ + public Optional> raw() { + return Optional.ofNullable(this.raw); + } + + /** + * Upload build caches to remote registries. + * + */ + @Import(name="registry") + private @Nullable Output registry; + + /** + * @return Upload build caches to remote registries. + * + */ + public Optional> registry() { + return Optional.ofNullable(this.registry); + } + + /** + * Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + */ + @Import(name="s3") + private @Nullable Output s3; + + /** + * @return Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + */ + public Optional> s3() { + return Optional.ofNullable(this.s3); + } + + private CacheFromArgs() {} + + private CacheFromArgs(CacheFromArgs $) { + this.azblob = $.azblob; + this.disabled = $.disabled; + this.gha = $.gha; + this.local = $.local; + this.raw = $.raw; + this.registry = $.registry; + this.s3 = $.s3; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromArgs $; + + public Builder() { + $ = new CacheFromArgs(); + } + + public Builder(CacheFromArgs defaults) { + $ = new CacheFromArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param azblob Upload build caches to Azure's blob storage service. + * + * @return builder + * + */ + public Builder azblob(@Nullable Output azblob) { + $.azblob = azblob; + return this; + } + + /** + * @param azblob Upload build caches to Azure's blob storage service. + * + * @return builder + * + */ + public Builder azblob(CacheFromAzureBlobArgs azblob) { + return azblob(Output.of(azblob)); + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(@Nullable Output disabled) { + $.disabled = disabled; + return this; + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(Boolean disabled) { + return disabled(Output.of(disabled)); + } + + /** + * @param gha Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + * @return builder + * + */ + public Builder gha(@Nullable Output gha) { + $.gha = gha; + return this; + } + + /** + * @param gha Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + * @return builder + * + */ + public Builder gha(CacheFromGitHubActionsArgs gha) { + return gha(Output.of(gha)); + } + + /** + * @param local A simple backend which caches images on your local filesystem. + * + * @return builder + * + */ + public Builder local(@Nullable Output local) { + $.local = local; + return this; + } + + /** + * @param local A simple backend which caches images on your local filesystem. + * + * @return builder + * + */ + public Builder local(CacheFromLocalArgs local) { + return local(Output.of(local)); + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + * @return builder + * + */ + public Builder raw(@Nullable Output raw) { + $.raw = raw; + return this; + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + * @return builder + * + */ + public Builder raw(String raw) { + return raw(Output.of(raw)); + } + + /** + * @param registry Upload build caches to remote registries. + * + * @return builder + * + */ + public Builder registry(@Nullable Output registry) { + $.registry = registry; + return this; + } + + /** + * @param registry Upload build caches to remote registries. + * + * @return builder + * + */ + public Builder registry(CacheFromRegistryArgs registry) { + return registry(Output.of(registry)); + } + + /** + * @param s3 Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + * @return builder + * + */ + public Builder s3(@Nullable Output s3) { + $.s3 = s3; + return this; + } + + /** + * @param s3 Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + * @return builder + * + */ + public Builder s3(CacheFromS3Args s3) { + return s3(Output.of(s3)); + } + + public CacheFromArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java new file mode 100644 index 0000000..5c3fca8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java @@ -0,0 +1,161 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheFromAzureBlobArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromAzureBlobArgs Empty = new CacheFromAzureBlobArgs(); + + /** + * Base URL of the storage account. + * + */ + @Import(name="accountUrl") + private @Nullable Output accountUrl; + + /** + * @return Base URL of the storage account. + * + */ + public Optional> accountUrl() { + return Optional.ofNullable(this.accountUrl); + } + + /** + * The name of the cache image. + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the cache image. + * + */ + public Output name() { + return this.name; + } + + /** + * Blob storage account key. + * + */ + @Import(name="secretAccessKey") + private @Nullable Output secretAccessKey; + + /** + * @return Blob storage account key. + * + */ + public Optional> secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + private CacheFromAzureBlobArgs() {} + + private CacheFromAzureBlobArgs(CacheFromAzureBlobArgs $) { + this.accountUrl = $.accountUrl; + this.name = $.name; + this.secretAccessKey = $.secretAccessKey; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromAzureBlobArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromAzureBlobArgs $; + + public Builder() { + $ = new CacheFromAzureBlobArgs(); + } + + public Builder(CacheFromAzureBlobArgs defaults) { + $ = new CacheFromAzureBlobArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param accountUrl Base URL of the storage account. + * + * @return builder + * + */ + public Builder accountUrl(@Nullable Output accountUrl) { + $.accountUrl = accountUrl; + return this; + } + + /** + * @param accountUrl Base URL of the storage account. + * + * @return builder + * + */ + public Builder accountUrl(String accountUrl) { + return accountUrl(Output.of(accountUrl)); + } + + /** + * @param name The name of the cache image. + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the cache image. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param secretAccessKey Blob storage account key. + * + * @return builder + * + */ + public Builder secretAccessKey(@Nullable Output secretAccessKey) { + $.secretAccessKey = secretAccessKey; + return this; + } + + /** + * @param secretAccessKey Blob storage account key. + * + * @return builder + * + */ + public Builder secretAccessKey(String secretAccessKey) { + return secretAccessKey(Output.of(secretAccessKey)); + } + + public CacheFromAzureBlobArgs build() { + if ($.name == null) { + throw new MissingRequiredPropertyException("CacheFromAzureBlobArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java new file mode 100644 index 0000000..e92991a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java @@ -0,0 +1,209 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheFromGitHubActionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromGitHubActionsArgs Empty = new CacheFromGitHubActionsArgs(); + + /** + * The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + @Import(name="scope") + private @Nullable Output scope; + + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + public Optional> scope() { + return Optional.ofNullable(this.scope); + } + + /** + * The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + @Import(name="token") + private @Nullable Output token; + + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional> token() { + return Optional.ofNullable(this.token); + } + + /** + * The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + private CacheFromGitHubActionsArgs() {} + + private CacheFromGitHubActionsArgs(CacheFromGitHubActionsArgs $) { + this.scope = $.scope; + this.token = $.token; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromGitHubActionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromGitHubActionsArgs $; + + public Builder() { + $ = new CacheFromGitHubActionsArgs(); + } + + public Builder(CacheFromGitHubActionsArgs defaults) { + $ = new CacheFromGitHubActionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param scope The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + * @return builder + * + */ + public Builder scope(@Nullable Output scope) { + $.scope = scope; + return this; + } + + /** + * @param scope The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + * @return builder + * + */ + public Builder scope(String scope) { + return scope(Output.of(scope)); + } + + /** + * @param token The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder token(@Nullable Output token) { + $.token = token; + return this; + } + + /** + * @param token The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder token(String token) { + return token(Output.of(token)); + } + + /** + * @param url The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public CacheFromGitHubActionsArgs build() { + $.scope = Codegen.stringProp("scope").output().arg($.scope).env("buildkit").def("").getNullable(); + $.token = Codegen.stringProp("token").secret().arg($.token).env("ACTIONS_RUNTIME_TOKEN").def("").getNullable(); + $.url = Codegen.stringProp("url").output().arg($.url).env("ACTIONS_CACHE_URL").def("").getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java new file mode 100644 index 0000000..ce2a89a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java @@ -0,0 +1,124 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheFromLocalArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromLocalArgs Empty = new CacheFromLocalArgs(); + + /** + * Digest of manifest to import. + * + */ + @Import(name="digest") + private @Nullable Output digest; + + /** + * @return Digest of manifest to import. + * + */ + public Optional> digest() { + return Optional.ofNullable(this.digest); + } + + /** + * Path of the local directory where cache gets imported from. + * + */ + @Import(name="src", required=true) + private Output src; + + /** + * @return Path of the local directory where cache gets imported from. + * + */ + public Output src() { + return this.src; + } + + private CacheFromLocalArgs() {} + + private CacheFromLocalArgs(CacheFromLocalArgs $) { + this.digest = $.digest; + this.src = $.src; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromLocalArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromLocalArgs $; + + public Builder() { + $ = new CacheFromLocalArgs(); + } + + public Builder(CacheFromLocalArgs defaults) { + $ = new CacheFromLocalArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param digest Digest of manifest to import. + * + * @return builder + * + */ + public Builder digest(@Nullable Output digest) { + $.digest = digest; + return this; + } + + /** + * @param digest Digest of manifest to import. + * + * @return builder + * + */ + public Builder digest(String digest) { + return digest(Output.of(digest)); + } + + /** + * @param src Path of the local directory where cache gets imported from. + * + * @return builder + * + */ + public Builder src(Output src) { + $.src = src; + return this; + } + + /** + * @param src Path of the local directory where cache gets imported from. + * + * @return builder + * + */ + public Builder src(String src) { + return src(Output.of(src)); + } + + public CacheFromLocalArgs build() { + if ($.src == null) { + throw new MissingRequiredPropertyException("CacheFromLocalArgs", "src"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java new file mode 100644 index 0000000..901419c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class CacheFromRegistryArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromRegistryArgs Empty = new CacheFromRegistryArgs(); + + /** + * Fully qualified name of the cache image to import. + * + */ + @Import(name="ref", required=true) + private Output ref; + + /** + * @return Fully qualified name of the cache image to import. + * + */ + public Output ref() { + return this.ref; + } + + private CacheFromRegistryArgs() {} + + private CacheFromRegistryArgs(CacheFromRegistryArgs $) { + this.ref = $.ref; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromRegistryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromRegistryArgs $; + + public Builder() { + $ = new CacheFromRegistryArgs(); + } + + public Builder(CacheFromRegistryArgs defaults) { + $ = new CacheFromRegistryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param ref Fully qualified name of the cache image to import. + * + * @return builder + * + */ + public Builder ref(Output ref) { + $.ref = ref; + return this; + } + + /** + * @param ref Fully qualified name of the cache image to import. + * + * @return builder + * + */ + public Builder ref(String ref) { + return ref(Output.of(ref)); + } + + public CacheFromRegistryArgs build() { + if ($.ref == null) { + throw new MissingRequiredPropertyException("CacheFromRegistryArgs", "ref"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java new file mode 100644 index 0000000..1fafcda --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java @@ -0,0 +1,426 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheFromS3Args extends com.pulumi.resources.ResourceArgs { + + public static final CacheFromS3Args Empty = new CacheFromS3Args(); + + /** + * Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + @Import(name="accessKeyId") + private @Nullable Output accessKeyId; + + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + public Optional> accessKeyId() { + return Optional.ofNullable(this.accessKeyId); + } + + /** + * Prefix to prepend to blob filenames. + * + */ + @Import(name="blobsPrefix") + private @Nullable Output blobsPrefix; + + /** + * @return Prefix to prepend to blob filenames. + * + */ + public Optional> blobsPrefix() { + return Optional.ofNullable(this.blobsPrefix); + } + + /** + * Name of the S3 bucket. + * + */ + @Import(name="bucket", required=true) + private Output bucket; + + /** + * @return Name of the S3 bucket. + * + */ + public Output bucket() { + return this.bucket; + } + + /** + * Endpoint of the S3 bucket. + * + */ + @Import(name="endpointUrl") + private @Nullable Output endpointUrl; + + /** + * @return Endpoint of the S3 bucket. + * + */ + public Optional> endpointUrl() { + return Optional.ofNullable(this.endpointUrl); + } + + /** + * Prefix to prepend on manifest filenames. + * + */ + @Import(name="manifestsPrefix") + private @Nullable Output manifestsPrefix; + + /** + * @return Prefix to prepend on manifest filenames. + * + */ + public Optional> manifestsPrefix() { + return Optional.ofNullable(this.manifestsPrefix); + } + + /** + * Name of the cache image. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the cache image. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + @Import(name="region", required=true) + private Output region; + + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + public Output region() { + return this.region; + } + + /** + * Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + @Import(name="secretAccessKey") + private @Nullable Output secretAccessKey; + + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + public Optional> secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + /** + * Defaults to `$AWS_SESSION_TOKEN`. + * + */ + @Import(name="sessionToken") + private @Nullable Output sessionToken; + + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + public Optional> sessionToken() { + return Optional.ofNullable(this.sessionToken); + } + + /** + * Uses `bucket` in the URL instead of hostname when `true`. + * + */ + @Import(name="usePathStyle") + private @Nullable Output usePathStyle; + + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + public Optional> usePathStyle() { + return Optional.ofNullable(this.usePathStyle); + } + + private CacheFromS3Args() {} + + private CacheFromS3Args(CacheFromS3Args $) { + this.accessKeyId = $.accessKeyId; + this.blobsPrefix = $.blobsPrefix; + this.bucket = $.bucket; + this.endpointUrl = $.endpointUrl; + this.manifestsPrefix = $.manifestsPrefix; + this.name = $.name; + this.region = $.region; + this.secretAccessKey = $.secretAccessKey; + this.sessionToken = $.sessionToken; + this.usePathStyle = $.usePathStyle; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheFromS3Args defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheFromS3Args $; + + public Builder() { + $ = new CacheFromS3Args(); + } + + public Builder(CacheFromS3Args defaults) { + $ = new CacheFromS3Args(Objects.requireNonNull(defaults)); + } + + /** + * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. + * + * @return builder + * + */ + public Builder accessKeyId(@Nullable Output accessKeyId) { + $.accessKeyId = accessKeyId; + return this; + } + + /** + * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. + * + * @return builder + * + */ + public Builder accessKeyId(String accessKeyId) { + return accessKeyId(Output.of(accessKeyId)); + } + + /** + * @param blobsPrefix Prefix to prepend to blob filenames. + * + * @return builder + * + */ + public Builder blobsPrefix(@Nullable Output blobsPrefix) { + $.blobsPrefix = blobsPrefix; + return this; + } + + /** + * @param blobsPrefix Prefix to prepend to blob filenames. + * + * @return builder + * + */ + public Builder blobsPrefix(String blobsPrefix) { + return blobsPrefix(Output.of(blobsPrefix)); + } + + /** + * @param bucket Name of the S3 bucket. + * + * @return builder + * + */ + public Builder bucket(Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket Name of the S3 bucket. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param endpointUrl Endpoint of the S3 bucket. + * + * @return builder + * + */ + public Builder endpointUrl(@Nullable Output endpointUrl) { + $.endpointUrl = endpointUrl; + return this; + } + + /** + * @param endpointUrl Endpoint of the S3 bucket. + * + * @return builder + * + */ + public Builder endpointUrl(String endpointUrl) { + return endpointUrl(Output.of(endpointUrl)); + } + + /** + * @param manifestsPrefix Prefix to prepend on manifest filenames. + * + * @return builder + * + */ + public Builder manifestsPrefix(@Nullable Output manifestsPrefix) { + $.manifestsPrefix = manifestsPrefix; + return this; + } + + /** + * @param manifestsPrefix Prefix to prepend on manifest filenames. + * + * @return builder + * + */ + public Builder manifestsPrefix(String manifestsPrefix) { + return manifestsPrefix(Output.of(manifestsPrefix)); + } + + /** + * @param name Name of the cache image. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the cache image. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + * @return builder + * + */ + public Builder region(Output region) { + $.region = region; + return this; + } + + /** + * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + * @return builder + * + */ + public Builder region(String region) { + return region(Output.of(region)); + } + + /** + * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + * @return builder + * + */ + public Builder secretAccessKey(@Nullable Output secretAccessKey) { + $.secretAccessKey = secretAccessKey; + return this; + } + + /** + * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + * @return builder + * + */ + public Builder secretAccessKey(String secretAccessKey) { + return secretAccessKey(Output.of(secretAccessKey)); + } + + /** + * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. + * + * @return builder + * + */ + public Builder sessionToken(@Nullable Output sessionToken) { + $.sessionToken = sessionToken; + return this; + } + + /** + * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. + * + * @return builder + * + */ + public Builder sessionToken(String sessionToken) { + return sessionToken(Output.of(sessionToken)); + } + + /** + * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. + * + * @return builder + * + */ + public Builder usePathStyle(@Nullable Output usePathStyle) { + $.usePathStyle = usePathStyle; + return this; + } + + /** + * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. + * + * @return builder + * + */ + public Builder usePathStyle(Boolean usePathStyle) { + return usePathStyle(Output.of(usePathStyle)); + } + + public CacheFromS3Args build() { + $.accessKeyId = Codegen.stringProp("accessKeyId").output().arg($.accessKeyId).env("AWS_ACCESS_KEY_ID").def("").getNullable(); + if ($.bucket == null) { + throw new MissingRequiredPropertyException("CacheFromS3Args", "bucket"); + } + $.region = Codegen.stringProp("region").output().arg($.region).env("AWS_REGION").def("").require(); + $.secretAccessKey = Codegen.stringProp("secretAccessKey").secret().arg($.secretAccessKey).env("AWS_SECRET_ACCESS_KEY").def("").getNullable(); + $.sessionToken = Codegen.stringProp("sessionToken").secret().arg($.sessionToken).env("AWS_SESSION_TOKEN").def("").getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java new file mode 100644 index 0000000..22cc53b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java @@ -0,0 +1,377 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dockerbuild.inputs.CacheToAzureBlobArgs; +import com.pulumi.dockerbuild.inputs.CacheToGitHubActionsArgs; +import com.pulumi.dockerbuild.inputs.CacheToInlineArgs; +import com.pulumi.dockerbuild.inputs.CacheToLocalArgs; +import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs; +import com.pulumi.dockerbuild.inputs.CacheToS3Args; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToArgs Empty = new CacheToArgs(); + + /** + * Push cache to Azure's blob storage service. + * + */ + @Import(name="azblob") + private @Nullable Output azblob; + + /** + * @return Push cache to Azure's blob storage service. + * + */ + public Optional> azblob() { + return Optional.ofNullable(this.azblob); + } + + /** + * When `true` this entry will be excluded. Defaults to `false`. + * + */ + @Import(name="disabled") + private @Nullable Output disabled; + + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional> disabled() { + return Optional.ofNullable(this.disabled); + } + + /** + * Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + @Import(name="gha") + private @Nullable Output gha; + + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + public Optional> gha() { + return Optional.ofNullable(this.gha); + } + + /** + * The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + */ + @Import(name="inline") + private @Nullable Output inline; + + /** + * @return The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + */ + public Optional> inline() { + return Optional.ofNullable(this.inline); + } + + /** + * A simple backend which caches imagines on your local filesystem. + * + */ + @Import(name="local") + private @Nullable Output local; + + /** + * @return A simple backend which caches imagines on your local filesystem. + * + */ + public Optional> local() { + return Optional.ofNullable(this.local); + } + + /** + * A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + */ + @Import(name="raw") + private @Nullable Output raw; + + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + */ + public Optional> raw() { + return Optional.ofNullable(this.raw); + } + + /** + * Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + */ + @Import(name="registry") + private @Nullable Output registry; + + /** + * @return Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + */ + public Optional> registry() { + return Optional.ofNullable(this.registry); + } + + /** + * Push cache to AWS S3 or S3-compatible services such as MinIO. + * + */ + @Import(name="s3") + private @Nullable Output s3; + + /** + * @return Push cache to AWS S3 or S3-compatible services such as MinIO. + * + */ + public Optional> s3() { + return Optional.ofNullable(this.s3); + } + + private CacheToArgs() {} + + private CacheToArgs(CacheToArgs $) { + this.azblob = $.azblob; + this.disabled = $.disabled; + this.gha = $.gha; + this.inline = $.inline; + this.local = $.local; + this.raw = $.raw; + this.registry = $.registry; + this.s3 = $.s3; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToArgs $; + + public Builder() { + $ = new CacheToArgs(); + } + + public Builder(CacheToArgs defaults) { + $ = new CacheToArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param azblob Push cache to Azure's blob storage service. + * + * @return builder + * + */ + public Builder azblob(@Nullable Output azblob) { + $.azblob = azblob; + return this; + } + + /** + * @param azblob Push cache to Azure's blob storage service. + * + * @return builder + * + */ + public Builder azblob(CacheToAzureBlobArgs azblob) { + return azblob(Output.of(azblob)); + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(@Nullable Output disabled) { + $.disabled = disabled; + return this; + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(Boolean disabled) { + return disabled(Output.of(disabled)); + } + + /** + * @param gha Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + * @return builder + * + */ + public Builder gha(@Nullable Output gha) { + $.gha = gha; + return this; + } + + /** + * @param gha Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + * @return builder + * + */ + public Builder gha(CacheToGitHubActionsArgs gha) { + return gha(Output.of(gha)); + } + + /** + * @param inline The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + * @return builder + * + */ + public Builder inline(@Nullable Output inline) { + $.inline = inline; + return this; + } + + /** + * @param inline The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + * @return builder + * + */ + public Builder inline(CacheToInlineArgs inline) { + return inline(Output.of(inline)); + } + + /** + * @param local A simple backend which caches imagines on your local filesystem. + * + * @return builder + * + */ + public Builder local(@Nullable Output local) { + $.local = local; + return this; + } + + /** + * @param local A simple backend which caches imagines on your local filesystem. + * + * @return builder + * + */ + public Builder local(CacheToLocalArgs local) { + return local(Output.of(local)); + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + * @return builder + * + */ + public Builder raw(@Nullable Output raw) { + $.raw = raw; + return this; + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + * @return builder + * + */ + public Builder raw(String raw) { + return raw(Output.of(raw)); + } + + /** + * @param registry Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + * @return builder + * + */ + public Builder registry(@Nullable Output registry) { + $.registry = registry; + return this; + } + + /** + * @param registry Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + * @return builder + * + */ + public Builder registry(CacheToRegistryArgs registry) { + return registry(Output.of(registry)); + } + + /** + * @param s3 Push cache to AWS S3 or S3-compatible services such as MinIO. + * + * @return builder + * + */ + public Builder s3(@Nullable Output s3) { + $.s3 = s3; + return this; + } + + /** + * @param s3 Push cache to AWS S3 or S3-compatible services such as MinIO. + * + * @return builder + * + */ + public Builder s3(CacheToS3Args s3) { + return s3(Output.of(s3)); + } + + public CacheToArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java new file mode 100644 index 0000000..2b4e50b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java @@ -0,0 +1,240 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToAzureBlobArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToAzureBlobArgs Empty = new CacheToAzureBlobArgs(); + + /** + * Base URL of the storage account. + * + */ + @Import(name="accountUrl") + private @Nullable Output accountUrl; + + /** + * @return Base URL of the storage account. + * + */ + public Optional> accountUrl() { + return Optional.ofNullable(this.accountUrl); + } + + /** + * Ignore errors caused by failed cache exports. + * + */ + @Import(name="ignoreError") + private @Nullable Output ignoreError; + + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional> ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + + /** + * The cache mode to use. Defaults to `min`. + * + */ + @Import(name="mode") + private @Nullable Output mode; + + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional> mode() { + return Optional.ofNullable(this.mode); + } + + /** + * The name of the cache image. + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the cache image. + * + */ + public Output name() { + return this.name; + } + + /** + * Blob storage account key. + * + */ + @Import(name="secretAccessKey") + private @Nullable Output secretAccessKey; + + /** + * @return Blob storage account key. + * + */ + public Optional> secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + private CacheToAzureBlobArgs() {} + + private CacheToAzureBlobArgs(CacheToAzureBlobArgs $) { + this.accountUrl = $.accountUrl; + this.ignoreError = $.ignoreError; + this.mode = $.mode; + this.name = $.name; + this.secretAccessKey = $.secretAccessKey; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToAzureBlobArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToAzureBlobArgs $; + + public Builder() { + $ = new CacheToAzureBlobArgs(); + } + + public Builder(CacheToAzureBlobArgs defaults) { + $ = new CacheToAzureBlobArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param accountUrl Base URL of the storage account. + * + * @return builder + * + */ + public Builder accountUrl(@Nullable Output accountUrl) { + $.accountUrl = accountUrl; + return this; + } + + /** + * @param accountUrl Base URL of the storage account. + * + * @return builder + * + */ + public Builder accountUrl(String accountUrl) { + return accountUrl(Output.of(accountUrl)); + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(@Nullable Output ignoreError) { + $.ignoreError = ignoreError; + return this; + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(Boolean ignoreError) { + return ignoreError(Output.of(ignoreError)); + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(@Nullable Output mode) { + $.mode = mode; + return this; + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(CacheMode mode) { + return mode(Output.of(mode)); + } + + /** + * @param name The name of the cache image. + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the cache image. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param secretAccessKey Blob storage account key. + * + * @return builder + * + */ + public Builder secretAccessKey(@Nullable Output secretAccessKey) { + $.secretAccessKey = secretAccessKey; + return this; + } + + /** + * @param secretAccessKey Blob storage account key. + * + * @return builder + * + */ + public Builder secretAccessKey(String secretAccessKey) { + return secretAccessKey(Output.of(secretAccessKey)); + } + + public CacheToAzureBlobArgs build() { + $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); + $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); + if ($.name == null) { + throw new MissingRequiredPropertyException("CacheToAzureBlobArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java new file mode 100644 index 0000000..e9379cc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java @@ -0,0 +1,287 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CacheMode; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToGitHubActionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToGitHubActionsArgs Empty = new CacheToGitHubActionsArgs(); + + /** + * Ignore errors caused by failed cache exports. + * + */ + @Import(name="ignoreError") + private @Nullable Output ignoreError; + + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional> ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + + /** + * The cache mode to use. Defaults to `min`. + * + */ + @Import(name="mode") + private @Nullable Output mode; + + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional> mode() { + return Optional.ofNullable(this.mode); + } + + /** + * The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + @Import(name="scope") + private @Nullable Output scope; + + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + public Optional> scope() { + return Optional.ofNullable(this.scope); + } + + /** + * The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + @Import(name="token") + private @Nullable Output token; + + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional> token() { + return Optional.ofNullable(this.token); + } + + /** + * The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + private CacheToGitHubActionsArgs() {} + + private CacheToGitHubActionsArgs(CacheToGitHubActionsArgs $) { + this.ignoreError = $.ignoreError; + this.mode = $.mode; + this.scope = $.scope; + this.token = $.token; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToGitHubActionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToGitHubActionsArgs $; + + public Builder() { + $ = new CacheToGitHubActionsArgs(); + } + + public Builder(CacheToGitHubActionsArgs defaults) { + $ = new CacheToGitHubActionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(@Nullable Output ignoreError) { + $.ignoreError = ignoreError; + return this; + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(Boolean ignoreError) { + return ignoreError(Output.of(ignoreError)); + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(@Nullable Output mode) { + $.mode = mode; + return this; + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(CacheMode mode) { + return mode(Output.of(mode)); + } + + /** + * @param scope The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + * @return builder + * + */ + public Builder scope(@Nullable Output scope) { + $.scope = scope; + return this; + } + + /** + * @param scope The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + * @return builder + * + */ + public Builder scope(String scope) { + return scope(Output.of(scope)); + } + + /** + * @param token The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder token(@Nullable Output token) { + $.token = token; + return this; + } + + /** + * @param token The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder token(String token) { + return token(Output.of(token)); + } + + /** + * @param url The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public CacheToGitHubActionsArgs build() { + $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); + $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); + $.scope = Codegen.stringProp("scope").output().arg($.scope).env("buildkit").def("").getNullable(); + $.token = Codegen.stringProp("token").secret().arg($.token).env("ACTIONS_RUNTIME_TOKEN").def("").getNullable(); + $.url = Codegen.stringProp("url").output().arg($.url).env("ACTIONS_CACHE_URL").def("").getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java new file mode 100644 index 0000000..bc54717 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + + + + +/** + * Include an inline cache with the exported image. + * + */ +public final class CacheToInlineArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToInlineArgs Empty = new CacheToInlineArgs(); + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private CacheToInlineArgs $; + + public Builder() { + $ = new CacheToInlineArgs(); + } + public CacheToInlineArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java new file mode 100644 index 0000000..aed92e0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java @@ -0,0 +1,282 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.dockerbuild.enums.CompressionType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToLocalArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToLocalArgs Empty = new CacheToLocalArgs(); + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * Path of the local directory to export the cache. + * + */ + @Import(name="dest", required=true) + private Output dest; + + /** + * @return Path of the local directory to export the cache. + * + */ + public Output dest() { + return this.dest; + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Ignore errors caused by failed cache exports. + * + */ + @Import(name="ignoreError") + private @Nullable Output ignoreError; + + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional> ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + + /** + * The cache mode to use. Defaults to `min`. + * + */ + @Import(name="mode") + private @Nullable Output mode; + + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional> mode() { + return Optional.ofNullable(this.mode); + } + + private CacheToLocalArgs() {} + + private CacheToLocalArgs(CacheToLocalArgs $) { + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.dest = $.dest; + this.forceCompression = $.forceCompression; + this.ignoreError = $.ignoreError; + this.mode = $.mode; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToLocalArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToLocalArgs $; + + public Builder() { + $ = new CacheToLocalArgs(); + } + + public Builder(CacheToLocalArgs defaults) { + $ = new CacheToLocalArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param dest Path of the local directory to export the cache. + * + * @return builder + * + */ + public Builder dest(Output dest) { + $.dest = dest; + return this; + } + + /** + * @param dest Path of the local directory to export the cache. + * + * @return builder + * + */ + public Builder dest(String dest) { + return dest(Output.of(dest)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(@Nullable Output ignoreError) { + $.ignoreError = ignoreError; + return this; + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(Boolean ignoreError) { + return ignoreError(Output.of(ignoreError)); + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(@Nullable Output mode) { + $.mode = mode; + return this; + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(CacheMode mode) { + return mode(Output.of(mode)); + } + + public CacheToLocalArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + if ($.dest == null) { + throw new MissingRequiredPropertyException("CacheToLocalArgs", "dest"); + } + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); + $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java new file mode 100644 index 0000000..5144527 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java @@ -0,0 +1,386 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.dockerbuild.enums.CompressionType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToRegistryArgs extends com.pulumi.resources.ResourceArgs { + + public static final CacheToRegistryArgs Empty = new CacheToRegistryArgs(); + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Ignore errors caused by failed cache exports. + * + */ + @Import(name="ignoreError") + private @Nullable Output ignoreError; + + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional> ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + + /** + * Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + */ + @Import(name="imageManifest") + private @Nullable Output imageManifest; + + /** + * @return Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + */ + public Optional> imageManifest() { + return Optional.ofNullable(this.imageManifest); + } + + /** + * The cache mode to use. Defaults to `min`. + * + */ + @Import(name="mode") + private @Nullable Output mode; + + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional> mode() { + return Optional.ofNullable(this.mode); + } + + /** + * Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + */ + @Import(name="ociMediaTypes") + private @Nullable Output ociMediaTypes; + + /** + * @return Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + */ + public Optional> ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + + /** + * Fully qualified name of the cache image to import. + * + */ + @Import(name="ref", required=true) + private Output ref; + + /** + * @return Fully qualified name of the cache image to import. + * + */ + public Output ref() { + return this.ref; + } + + private CacheToRegistryArgs() {} + + private CacheToRegistryArgs(CacheToRegistryArgs $) { + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.forceCompression = $.forceCompression; + this.ignoreError = $.ignoreError; + this.imageManifest = $.imageManifest; + this.mode = $.mode; + this.ociMediaTypes = $.ociMediaTypes; + this.ref = $.ref; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToRegistryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToRegistryArgs $; + + public Builder() { + $ = new CacheToRegistryArgs(); + } + + public Builder(CacheToRegistryArgs defaults) { + $ = new CacheToRegistryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(@Nullable Output ignoreError) { + $.ignoreError = ignoreError; + return this; + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(Boolean ignoreError) { + return ignoreError(Output.of(ignoreError)); + } + + /** + * @param imageManifest Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + * @return builder + * + */ + public Builder imageManifest(@Nullable Output imageManifest) { + $.imageManifest = imageManifest; + return this; + } + + /** + * @param imageManifest Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + * @return builder + * + */ + public Builder imageManifest(Boolean imageManifest) { + return imageManifest(Output.of(imageManifest)); + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(@Nullable Output mode) { + $.mode = mode; + return this; + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(CacheMode mode) { + return mode(Output.of(mode)); + } + + /** + * @param ociMediaTypes Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + * @return builder + * + */ + public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { + $.ociMediaTypes = ociMediaTypes; + return this; + } + + /** + * @param ociMediaTypes Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + * @return builder + * + */ + public Builder ociMediaTypes(Boolean ociMediaTypes) { + return ociMediaTypes(Output.of(ociMediaTypes)); + } + + /** + * @param ref Fully qualified name of the cache image to import. + * + * @return builder + * + */ + public Builder ref(Output ref) { + $.ref = ref; + return this; + } + + /** + * @param ref Fully qualified name of the cache image to import. + * + * @return builder + * + */ + public Builder ref(String ref) { + return ref(Output.of(ref)); + } + + public CacheToRegistryArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); + $.imageManifest = Codegen.booleanProp("imageManifest").output().arg($.imageManifest).def(false).getNullable(); + $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); + $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(true).getNullable(); + if ($.ref == null) { + throw new MissingRequiredPropertyException("CacheToRegistryArgs", "ref"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java new file mode 100644 index 0000000..0bb6934 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java @@ -0,0 +1,503 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class CacheToS3Args extends com.pulumi.resources.ResourceArgs { + + public static final CacheToS3Args Empty = new CacheToS3Args(); + + /** + * Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + @Import(name="accessKeyId") + private @Nullable Output accessKeyId; + + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + public Optional> accessKeyId() { + return Optional.ofNullable(this.accessKeyId); + } + + /** + * Prefix to prepend to blob filenames. + * + */ + @Import(name="blobsPrefix") + private @Nullable Output blobsPrefix; + + /** + * @return Prefix to prepend to blob filenames. + * + */ + public Optional> blobsPrefix() { + return Optional.ofNullable(this.blobsPrefix); + } + + /** + * Name of the S3 bucket. + * + */ + @Import(name="bucket", required=true) + private Output bucket; + + /** + * @return Name of the S3 bucket. + * + */ + public Output bucket() { + return this.bucket; + } + + /** + * Endpoint of the S3 bucket. + * + */ + @Import(name="endpointUrl") + private @Nullable Output endpointUrl; + + /** + * @return Endpoint of the S3 bucket. + * + */ + public Optional> endpointUrl() { + return Optional.ofNullable(this.endpointUrl); + } + + /** + * Ignore errors caused by failed cache exports. + * + */ + @Import(name="ignoreError") + private @Nullable Output ignoreError; + + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional> ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + + /** + * Prefix to prepend on manifest filenames. + * + */ + @Import(name="manifestsPrefix") + private @Nullable Output manifestsPrefix; + + /** + * @return Prefix to prepend on manifest filenames. + * + */ + public Optional> manifestsPrefix() { + return Optional.ofNullable(this.manifestsPrefix); + } + + /** + * The cache mode to use. Defaults to `min`. + * + */ + @Import(name="mode") + private @Nullable Output mode; + + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional> mode() { + return Optional.ofNullable(this.mode); + } + + /** + * Name of the cache image. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the cache image. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + @Import(name="region", required=true) + private Output region; + + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + public Output region() { + return this.region; + } + + /** + * Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + @Import(name="secretAccessKey") + private @Nullable Output secretAccessKey; + + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + public Optional> secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + /** + * Defaults to `$AWS_SESSION_TOKEN`. + * + */ + @Import(name="sessionToken") + private @Nullable Output sessionToken; + + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + public Optional> sessionToken() { + return Optional.ofNullable(this.sessionToken); + } + + /** + * Uses `bucket` in the URL instead of hostname when `true`. + * + */ + @Import(name="usePathStyle") + private @Nullable Output usePathStyle; + + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + public Optional> usePathStyle() { + return Optional.ofNullable(this.usePathStyle); + } + + private CacheToS3Args() {} + + private CacheToS3Args(CacheToS3Args $) { + this.accessKeyId = $.accessKeyId; + this.blobsPrefix = $.blobsPrefix; + this.bucket = $.bucket; + this.endpointUrl = $.endpointUrl; + this.ignoreError = $.ignoreError; + this.manifestsPrefix = $.manifestsPrefix; + this.mode = $.mode; + this.name = $.name; + this.region = $.region; + this.secretAccessKey = $.secretAccessKey; + this.sessionToken = $.sessionToken; + this.usePathStyle = $.usePathStyle; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(CacheToS3Args defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private CacheToS3Args $; + + public Builder() { + $ = new CacheToS3Args(); + } + + public Builder(CacheToS3Args defaults) { + $ = new CacheToS3Args(Objects.requireNonNull(defaults)); + } + + /** + * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. + * + * @return builder + * + */ + public Builder accessKeyId(@Nullable Output accessKeyId) { + $.accessKeyId = accessKeyId; + return this; + } + + /** + * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. + * + * @return builder + * + */ + public Builder accessKeyId(String accessKeyId) { + return accessKeyId(Output.of(accessKeyId)); + } + + /** + * @param blobsPrefix Prefix to prepend to blob filenames. + * + * @return builder + * + */ + public Builder blobsPrefix(@Nullable Output blobsPrefix) { + $.blobsPrefix = blobsPrefix; + return this; + } + + /** + * @param blobsPrefix Prefix to prepend to blob filenames. + * + * @return builder + * + */ + public Builder blobsPrefix(String blobsPrefix) { + return blobsPrefix(Output.of(blobsPrefix)); + } + + /** + * @param bucket Name of the S3 bucket. + * + * @return builder + * + */ + public Builder bucket(Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket Name of the S3 bucket. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param endpointUrl Endpoint of the S3 bucket. + * + * @return builder + * + */ + public Builder endpointUrl(@Nullable Output endpointUrl) { + $.endpointUrl = endpointUrl; + return this; + } + + /** + * @param endpointUrl Endpoint of the S3 bucket. + * + * @return builder + * + */ + public Builder endpointUrl(String endpointUrl) { + return endpointUrl(Output.of(endpointUrl)); + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(@Nullable Output ignoreError) { + $.ignoreError = ignoreError; + return this; + } + + /** + * @param ignoreError Ignore errors caused by failed cache exports. + * + * @return builder + * + */ + public Builder ignoreError(Boolean ignoreError) { + return ignoreError(Output.of(ignoreError)); + } + + /** + * @param manifestsPrefix Prefix to prepend on manifest filenames. + * + * @return builder + * + */ + public Builder manifestsPrefix(@Nullable Output manifestsPrefix) { + $.manifestsPrefix = manifestsPrefix; + return this; + } + + /** + * @param manifestsPrefix Prefix to prepend on manifest filenames. + * + * @return builder + * + */ + public Builder manifestsPrefix(String manifestsPrefix) { + return manifestsPrefix(Output.of(manifestsPrefix)); + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(@Nullable Output mode) { + $.mode = mode; + return this; + } + + /** + * @param mode The cache mode to use. Defaults to `min`. + * + * @return builder + * + */ + public Builder mode(CacheMode mode) { + return mode(Output.of(mode)); + } + + /** + * @param name Name of the cache image. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the cache image. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + * @return builder + * + */ + public Builder region(Output region) { + $.region = region; + return this; + } + + /** + * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + * @return builder + * + */ + public Builder region(String region) { + return region(Output.of(region)); + } + + /** + * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + * @return builder + * + */ + public Builder secretAccessKey(@Nullable Output secretAccessKey) { + $.secretAccessKey = secretAccessKey; + return this; + } + + /** + * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + * @return builder + * + */ + public Builder secretAccessKey(String secretAccessKey) { + return secretAccessKey(Output.of(secretAccessKey)); + } + + /** + * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. + * + * @return builder + * + */ + public Builder sessionToken(@Nullable Output sessionToken) { + $.sessionToken = sessionToken; + return this; + } + + /** + * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. + * + * @return builder + * + */ + public Builder sessionToken(String sessionToken) { + return sessionToken(Output.of(sessionToken)); + } + + /** + * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. + * + * @return builder + * + */ + public Builder usePathStyle(@Nullable Output usePathStyle) { + $.usePathStyle = usePathStyle; + return this; + } + + /** + * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. + * + * @return builder + * + */ + public Builder usePathStyle(Boolean usePathStyle) { + return usePathStyle(Output.of(usePathStyle)); + } + + public CacheToS3Args build() { + $.accessKeyId = Codegen.stringProp("accessKeyId").output().arg($.accessKeyId).env("AWS_ACCESS_KEY_ID").def("").getNullable(); + if ($.bucket == null) { + throw new MissingRequiredPropertyException("CacheToS3Args", "bucket"); + } + $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); + $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); + $.region = Codegen.stringProp("region").output().arg($.region).env("AWS_REGION").def("").require(); + $.secretAccessKey = Codegen.stringProp("secretAccessKey").secret().arg($.secretAccessKey).env("AWS_SECRET_ACCESS_KEY").def("").getNullable(); + $.sessionToken = Codegen.stringProp("sessionToken").secret().arg($.sessionToken).env("AWS_SESSION_TOKEN").def("").getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java new file mode 100644 index 0000000..4f187e8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java @@ -0,0 +1,113 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class ContextArgs extends com.pulumi.resources.ResourceArgs { + + public static final ContextArgs Empty = new ContextArgs(); + + /** + * Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + public Output location() { + return this.location; + } + + private ContextArgs() {} + + private ContextArgs(ContextArgs $) { + this.location = $.location; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ContextArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ContextArgs $; + + public Builder() { + $ = new ContextArgs(); + } + + public Builder(ContextArgs defaults) { + $ = new ContextArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + public ContextArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("ContextArgs", "location"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java new file mode 100644 index 0000000..389d794 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java @@ -0,0 +1,160 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DockerfileArgs extends com.pulumi.resources.ResourceArgs { + + public static final DockerfileArgs Empty = new DockerfileArgs(); + + /** + * Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + */ + @Import(name="inline") + private @Nullable Output inline; + + /** + * @return Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + */ + public Optional> inline() { + return Optional.ofNullable(this.inline); + } + + /** + * Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + private DockerfileArgs() {} + + private DockerfileArgs(DockerfileArgs $) { + this.inline = $.inline; + this.location = $.location; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DockerfileArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DockerfileArgs $; + + public Builder() { + $ = new DockerfileArgs(); + } + + public Builder(DockerfileArgs defaults) { + $ = new DockerfileArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param inline Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + * @return builder + * + */ + public Builder inline(@Nullable Output inline) { + $.inline = inline; + return this; + } + + /** + * @param inline Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + * @return builder + * + */ + public Builder inline(String inline) { + return inline(Output.of(inline)); + } + + /** + * @param location Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + public DockerfileArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java new file mode 100644 index 0000000..9952a9e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java @@ -0,0 +1,395 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dockerbuild.inputs.ExportCacheOnlyArgs; +import com.pulumi.dockerbuild.inputs.ExportDockerArgs; +import com.pulumi.dockerbuild.inputs.ExportImageArgs; +import com.pulumi.dockerbuild.inputs.ExportLocalArgs; +import com.pulumi.dockerbuild.inputs.ExportOCIArgs; +import com.pulumi.dockerbuild.inputs.ExportRegistryArgs; +import com.pulumi.dockerbuild.inputs.ExportTarArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ExportArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportArgs Empty = new ExportArgs(); + + /** + * A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + */ + @Import(name="cacheonly") + private @Nullable Output cacheonly; + + /** + * @return A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + */ + public Optional> cacheonly() { + return Optional.ofNullable(this.cacheonly); + } + + /** + * When `true` this entry will be excluded. Defaults to `false`. + * + */ + @Import(name="disabled") + private @Nullable Output disabled; + + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional> disabled() { + return Optional.ofNullable(this.disabled); + } + + /** + * Export as a Docker image layout. + * + */ + @Import(name="docker") + private @Nullable Output docker; + + /** + * @return Export as a Docker image layout. + * + */ + public Optional> docker() { + return Optional.ofNullable(this.docker); + } + + /** + * Outputs the build result into a container image format. + * + */ + @Import(name="image") + private @Nullable Output image; + + /** + * @return Outputs the build result into a container image format. + * + */ + public Optional> image() { + return Optional.ofNullable(this.image); + } + + /** + * Export to a local directory as files and directories. + * + */ + @Import(name="local") + private @Nullable Output local; + + /** + * @return Export to a local directory as files and directories. + * + */ + public Optional> local() { + return Optional.ofNullable(this.local); + } + + /** + * Identical to the Docker exporter but uses OCI media types by default. + * + */ + @Import(name="oci") + private @Nullable Output oci; + + /** + * @return Identical to the Docker exporter but uses OCI media types by default. + * + */ + public Optional> oci() { + return Optional.ofNullable(this.oci); + } + + /** + * A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + */ + @Import(name="raw") + private @Nullable Output raw; + + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + */ + public Optional> raw() { + return Optional.ofNullable(this.raw); + } + + /** + * Identical to the Image exporter, but pushes by default. + * + */ + @Import(name="registry") + private @Nullable Output registry; + + /** + * @return Identical to the Image exporter, but pushes by default. + * + */ + public Optional> registry() { + return Optional.ofNullable(this.registry); + } + + /** + * Export to a local directory as a tarball. + * + */ + @Import(name="tar") + private @Nullable Output tar; + + /** + * @return Export to a local directory as a tarball. + * + */ + public Optional> tar() { + return Optional.ofNullable(this.tar); + } + + private ExportArgs() {} + + private ExportArgs(ExportArgs $) { + this.cacheonly = $.cacheonly; + this.disabled = $.disabled; + this.docker = $.docker; + this.image = $.image; + this.local = $.local; + this.oci = $.oci; + this.raw = $.raw; + this.registry = $.registry; + this.tar = $.tar; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportArgs $; + + public Builder() { + $ = new ExportArgs(); + } + + public Builder(ExportArgs defaults) { + $ = new ExportArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param cacheonly A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + * @return builder + * + */ + public Builder cacheonly(@Nullable Output cacheonly) { + $.cacheonly = cacheonly; + return this; + } + + /** + * @param cacheonly A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + * @return builder + * + */ + public Builder cacheonly(ExportCacheOnlyArgs cacheonly) { + return cacheonly(Output.of(cacheonly)); + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(@Nullable Output disabled) { + $.disabled = disabled; + return this; + } + + /** + * @param disabled When `true` this entry will be excluded. Defaults to `false`. + * + * @return builder + * + */ + public Builder disabled(Boolean disabled) { + return disabled(Output.of(disabled)); + } + + /** + * @param docker Export as a Docker image layout. + * + * @return builder + * + */ + public Builder docker(@Nullable Output docker) { + $.docker = docker; + return this; + } + + /** + * @param docker Export as a Docker image layout. + * + * @return builder + * + */ + public Builder docker(ExportDockerArgs docker) { + return docker(Output.of(docker)); + } + + /** + * @param image Outputs the build result into a container image format. + * + * @return builder + * + */ + public Builder image(@Nullable Output image) { + $.image = image; + return this; + } + + /** + * @param image Outputs the build result into a container image format. + * + * @return builder + * + */ + public Builder image(ExportImageArgs image) { + return image(Output.of(image)); + } + + /** + * @param local Export to a local directory as files and directories. + * + * @return builder + * + */ + public Builder local(@Nullable Output local) { + $.local = local; + return this; + } + + /** + * @param local Export to a local directory as files and directories. + * + * @return builder + * + */ + public Builder local(ExportLocalArgs local) { + return local(Output.of(local)); + } + + /** + * @param oci Identical to the Docker exporter but uses OCI media types by default. + * + * @return builder + * + */ + public Builder oci(@Nullable Output oci) { + $.oci = oci; + return this; + } + + /** + * @param oci Identical to the Docker exporter but uses OCI media types by default. + * + * @return builder + * + */ + public Builder oci(ExportOCIArgs oci) { + return oci(Output.of(oci)); + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + * @return builder + * + */ + public Builder raw(@Nullable Output raw) { + $.raw = raw; + return this; + } + + /** + * @param raw A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + * @return builder + * + */ + public Builder raw(String raw) { + return raw(Output.of(raw)); + } + + /** + * @param registry Identical to the Image exporter, but pushes by default. + * + * @return builder + * + */ + public Builder registry(@Nullable Output registry) { + $.registry = registry; + return this; + } + + /** + * @param registry Identical to the Image exporter, but pushes by default. + * + * @return builder + * + */ + public Builder registry(ExportRegistryArgs registry) { + return registry(Output.of(registry)); + } + + /** + * @param tar Export to a local directory as a tarball. + * + * @return builder + * + */ + public Builder tar(@Nullable Output tar) { + $.tar = tar; + return this; + } + + /** + * @param tar Export to a local directory as a tarball. + * + * @return builder + * + */ + public Builder tar(ExportTarArgs tar) { + return tar(Output.of(tar)); + } + + public ExportArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java new file mode 100644 index 0000000..8e7158b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + + + + +public final class ExportCacheOnlyArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportCacheOnlyArgs Empty = new ExportCacheOnlyArgs(); + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private ExportCacheOnlyArgs $; + + public Builder() { + $ = new ExportCacheOnlyArgs(); + } + public ExportCacheOnlyArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java new file mode 100644 index 0000000..14c75af --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java @@ -0,0 +1,363 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ExportDockerArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportDockerArgs Empty = new ExportDockerArgs(); + + /** + * Attach an arbitrary key/value annotation to the image. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * The local export path. + * + */ + @Import(name="dest") + private @Nullable Output dest; + + /** + * @return The local export path. + * + */ + public Optional> dest() { + return Optional.ofNullable(this.dest); + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Specify images names to export. This is overridden if tags are already specified. + * + */ + @Import(name="names") + private @Nullable Output> names; + + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public Optional>> names() { + return Optional.ofNullable(this.names); + } + + /** + * Use OCI media types in exporter manifests. + * + */ + @Import(name="ociMediaTypes") + private @Nullable Output ociMediaTypes; + + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional> ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + + /** + * Bundle the output into a tarball layout. + * + */ + @Import(name="tar") + private @Nullable Output tar; + + /** + * @return Bundle the output into a tarball layout. + * + */ + public Optional> tar() { + return Optional.ofNullable(this.tar); + } + + private ExportDockerArgs() {} + + private ExportDockerArgs(ExportDockerArgs $) { + this.annotations = $.annotations; + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.dest = $.dest; + this.forceCompression = $.forceCompression; + this.names = $.names; + this.ociMediaTypes = $.ociMediaTypes; + this.tar = $.tar; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportDockerArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportDockerArgs $; + + public Builder() { + $ = new ExportDockerArgs(); + } + + public Builder(ExportDockerArgs defaults) { + $ = new ExportDockerArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param dest The local export path. + * + * @return builder + * + */ + public Builder dest(@Nullable Output dest) { + $.dest = dest; + return this; + } + + /** + * @param dest The local export path. + * + * @return builder + * + */ + public Builder dest(String dest) { + return dest(Output.of(dest)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(@Nullable Output> names) { + $.names = names; + return this; + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(List names) { + return names(Output.of(names)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(String... names) { + return names(List.of(names)); + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { + $.ociMediaTypes = ociMediaTypes; + return this; + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(Boolean ociMediaTypes) { + return ociMediaTypes(Output.of(ociMediaTypes)); + } + + /** + * @param tar Bundle the output into a tarball layout. + * + * @return builder + * + */ + public Builder tar(@Nullable Output tar) { + $.tar = tar; + return this; + } + + /** + * @param tar Bundle the output into a tarball layout. + * + * @return builder + * + */ + public Builder tar(Boolean tar) { + return tar(Output.of(tar)); + } + + public ExportDockerArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); + $.tar = Codegen.booleanProp("tar").output().arg($.tar).def(true).getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java new file mode 100644 index 0000000..37a36f6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java @@ -0,0 +1,576 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ExportImageArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportImageArgs Empty = new ExportImageArgs(); + + /** + * Attach an arbitrary key/value annotation to the image. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + @Import(name="danglingNamePrefix") + private @Nullable Output danglingNamePrefix; + + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + public Optional> danglingNamePrefix() { + return Optional.ofNullable(this.danglingNamePrefix); + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Allow pushing to an insecure registry. + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Allow pushing to an insecure registry. + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * Add additional canonical name (`name{@literal @}<digest>`). + * + */ + @Import(name="nameCanonical") + private @Nullable Output nameCanonical; + + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + public Optional> nameCanonical() { + return Optional.ofNullable(this.nameCanonical); + } + + /** + * Specify images names to export. This is overridden if tags are already specified. + * + */ + @Import(name="names") + private @Nullable Output> names; + + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public Optional>> names() { + return Optional.ofNullable(this.names); + } + + /** + * Use OCI media types in exporter manifests. + * + */ + @Import(name="ociMediaTypes") + private @Nullable Output ociMediaTypes; + + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional> ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + + /** + * Push after creating the image. Defaults to `false`. + * + */ + @Import(name="push") + private @Nullable Output push; + + /** + * @return Push after creating the image. Defaults to `false`. + * + */ + public Optional> push() { + return Optional.ofNullable(this.push); + } + + /** + * Push image without name. + * + */ + @Import(name="pushByDigest") + private @Nullable Output pushByDigest; + + /** + * @return Push image without name. + * + */ + public Optional> pushByDigest() { + return Optional.ofNullable(this.pushByDigest); + } + + /** + * Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + @Import(name="store") + private @Nullable Output store; + + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + public Optional> store() { + return Optional.ofNullable(this.store); + } + + /** + * Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + @Import(name="unpack") + private @Nullable Output unpack; + + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + public Optional> unpack() { + return Optional.ofNullable(this.unpack); + } + + private ExportImageArgs() {} + + private ExportImageArgs(ExportImageArgs $) { + this.annotations = $.annotations; + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.danglingNamePrefix = $.danglingNamePrefix; + this.forceCompression = $.forceCompression; + this.insecure = $.insecure; + this.nameCanonical = $.nameCanonical; + this.names = $.names; + this.ociMediaTypes = $.ociMediaTypes; + this.push = $.push; + this.pushByDigest = $.pushByDigest; + this.store = $.store; + this.unpack = $.unpack; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportImageArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportImageArgs $; + + public Builder() { + $ = new ExportImageArgs(); + } + + public Builder(ExportImageArgs defaults) { + $ = new ExportImageArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + * @return builder + * + */ + public Builder danglingNamePrefix(@Nullable Output danglingNamePrefix) { + $.danglingNamePrefix = danglingNamePrefix; + return this; + } + + /** + * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + * @return builder + * + */ + public Builder danglingNamePrefix(String danglingNamePrefix) { + return danglingNamePrefix(Output.of(danglingNamePrefix)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param insecure Allow pushing to an insecure registry. + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Allow pushing to an insecure registry. + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). + * + * @return builder + * + */ + public Builder nameCanonical(@Nullable Output nameCanonical) { + $.nameCanonical = nameCanonical; + return this; + } + + /** + * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). + * + * @return builder + * + */ + public Builder nameCanonical(Boolean nameCanonical) { + return nameCanonical(Output.of(nameCanonical)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(@Nullable Output> names) { + $.names = names; + return this; + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(List names) { + return names(Output.of(names)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(String... names) { + return names(List.of(names)); + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { + $.ociMediaTypes = ociMediaTypes; + return this; + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(Boolean ociMediaTypes) { + return ociMediaTypes(Output.of(ociMediaTypes)); + } + + /** + * @param push Push after creating the image. Defaults to `false`. + * + * @return builder + * + */ + public Builder push(@Nullable Output push) { + $.push = push; + return this; + } + + /** + * @param push Push after creating the image. Defaults to `false`. + * + * @return builder + * + */ + public Builder push(Boolean push) { + return push(Output.of(push)); + } + + /** + * @param pushByDigest Push image without name. + * + * @return builder + * + */ + public Builder pushByDigest(@Nullable Output pushByDigest) { + $.pushByDigest = pushByDigest; + return this; + } + + /** + * @param pushByDigest Push image without name. + * + * @return builder + * + */ + public Builder pushByDigest(Boolean pushByDigest) { + return pushByDigest(Output.of(pushByDigest)); + } + + /** + * @param store Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + * @return builder + * + */ + public Builder store(@Nullable Output store) { + $.store = store; + return this; + } + + /** + * @param store Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + * @return builder + * + */ + public Builder store(Boolean store) { + return store(Output.of(store)); + } + + /** + * @param unpack Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + * @return builder + * + */ + public Builder unpack(@Nullable Output unpack) { + $.unpack = unpack; + return this; + } + + /** + * @param unpack Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + * @return builder + * + */ + public Builder unpack(Boolean unpack) { + return unpack(Output.of(unpack)); + } + + public ExportImageArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); + $.store = Codegen.booleanProp("store").output().arg($.store).def(true).getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java new file mode 100644 index 0000000..e29295d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class ExportLocalArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportLocalArgs Empty = new ExportLocalArgs(); + + /** + * Output path. + * + */ + @Import(name="dest", required=true) + private Output dest; + + /** + * @return Output path. + * + */ + public Output dest() { + return this.dest; + } + + private ExportLocalArgs() {} + + private ExportLocalArgs(ExportLocalArgs $) { + this.dest = $.dest; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportLocalArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportLocalArgs $; + + public Builder() { + $ = new ExportLocalArgs(); + } + + public Builder(ExportLocalArgs defaults) { + $ = new ExportLocalArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dest Output path. + * + * @return builder + * + */ + public Builder dest(Output dest) { + $.dest = dest; + return this; + } + + /** + * @param dest Output path. + * + * @return builder + * + */ + public Builder dest(String dest) { + return dest(Output.of(dest)); + } + + public ExportLocalArgs build() { + if ($.dest == null) { + throw new MissingRequiredPropertyException("ExportLocalArgs", "dest"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java new file mode 100644 index 0000000..bdabd49 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java @@ -0,0 +1,363 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ExportOCIArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportOCIArgs Empty = new ExportOCIArgs(); + + /** + * Attach an arbitrary key/value annotation to the image. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * The local export path. + * + */ + @Import(name="dest") + private @Nullable Output dest; + + /** + * @return The local export path. + * + */ + public Optional> dest() { + return Optional.ofNullable(this.dest); + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Specify images names to export. This is overridden if tags are already specified. + * + */ + @Import(name="names") + private @Nullable Output> names; + + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public Optional>> names() { + return Optional.ofNullable(this.names); + } + + /** + * Use OCI media types in exporter manifests. + * + */ + @Import(name="ociMediaTypes") + private @Nullable Output ociMediaTypes; + + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional> ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + + /** + * Bundle the output into a tarball layout. + * + */ + @Import(name="tar") + private @Nullable Output tar; + + /** + * @return Bundle the output into a tarball layout. + * + */ + public Optional> tar() { + return Optional.ofNullable(this.tar); + } + + private ExportOCIArgs() {} + + private ExportOCIArgs(ExportOCIArgs $) { + this.annotations = $.annotations; + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.dest = $.dest; + this.forceCompression = $.forceCompression; + this.names = $.names; + this.ociMediaTypes = $.ociMediaTypes; + this.tar = $.tar; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportOCIArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportOCIArgs $; + + public Builder() { + $ = new ExportOCIArgs(); + } + + public Builder(ExportOCIArgs defaults) { + $ = new ExportOCIArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param dest The local export path. + * + * @return builder + * + */ + public Builder dest(@Nullable Output dest) { + $.dest = dest; + return this; + } + + /** + * @param dest The local export path. + * + * @return builder + * + */ + public Builder dest(String dest) { + return dest(Output.of(dest)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(@Nullable Output> names) { + $.names = names; + return this; + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(List names) { + return names(Output.of(names)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(String... names) { + return names(List.of(names)); + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { + $.ociMediaTypes = ociMediaTypes; + return this; + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(Boolean ociMediaTypes) { + return ociMediaTypes(Output.of(ociMediaTypes)); + } + + /** + * @param tar Bundle the output into a tarball layout. + * + * @return builder + * + */ + public Builder tar(@Nullable Output tar) { + $.tar = tar; + return this; + } + + /** + * @param tar Bundle the output into a tarball layout. + * + * @return builder + * + */ + public Builder tar(Boolean tar) { + return tar(Output.of(tar)); + } + + public ExportOCIArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(true).getNullable(); + $.tar = Codegen.booleanProp("tar").output().arg($.tar).def(true).getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java new file mode 100644 index 0000000..df4a773 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java @@ -0,0 +1,577 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ExportRegistryArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportRegistryArgs Empty = new ExportRegistryArgs(); + + /** + * Attach an arbitrary key/value annotation to the image. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * The compression type to use. + * + */ + @Import(name="compression") + private @Nullable Output compression; + + /** + * @return The compression type to use. + * + */ + public Optional> compression() { + return Optional.ofNullable(this.compression); + } + + /** + * Compression level from 0 to 22. + * + */ + @Import(name="compressionLevel") + private @Nullable Output compressionLevel; + + /** + * @return Compression level from 0 to 22. + * + */ + public Optional> compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + + /** + * Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + @Import(name="danglingNamePrefix") + private @Nullable Output danglingNamePrefix; + + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + public Optional> danglingNamePrefix() { + return Optional.ofNullable(this.danglingNamePrefix); + } + + /** + * Forcefully apply compression. + * + */ + @Import(name="forceCompression") + private @Nullable Output forceCompression; + + /** + * @return Forcefully apply compression. + * + */ + public Optional> forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + + /** + * Allow pushing to an insecure registry. + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Allow pushing to an insecure registry. + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * Add additional canonical name (`name{@literal @}<digest>`). + * + */ + @Import(name="nameCanonical") + private @Nullable Output nameCanonical; + + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + public Optional> nameCanonical() { + return Optional.ofNullable(this.nameCanonical); + } + + /** + * Specify images names to export. This is overridden if tags are already specified. + * + */ + @Import(name="names") + private @Nullable Output> names; + + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public Optional>> names() { + return Optional.ofNullable(this.names); + } + + /** + * Use OCI media types in exporter manifests. + * + */ + @Import(name="ociMediaTypes") + private @Nullable Output ociMediaTypes; + + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional> ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + + /** + * Push after creating the image. Defaults to `true`. + * + */ + @Import(name="push") + private @Nullable Output push; + + /** + * @return Push after creating the image. Defaults to `true`. + * + */ + public Optional> push() { + return Optional.ofNullable(this.push); + } + + /** + * Push image without name. + * + */ + @Import(name="pushByDigest") + private @Nullable Output pushByDigest; + + /** + * @return Push image without name. + * + */ + public Optional> pushByDigest() { + return Optional.ofNullable(this.pushByDigest); + } + + /** + * Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + @Import(name="store") + private @Nullable Output store; + + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + public Optional> store() { + return Optional.ofNullable(this.store); + } + + /** + * Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + @Import(name="unpack") + private @Nullable Output unpack; + + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + public Optional> unpack() { + return Optional.ofNullable(this.unpack); + } + + private ExportRegistryArgs() {} + + private ExportRegistryArgs(ExportRegistryArgs $) { + this.annotations = $.annotations; + this.compression = $.compression; + this.compressionLevel = $.compressionLevel; + this.danglingNamePrefix = $.danglingNamePrefix; + this.forceCompression = $.forceCompression; + this.insecure = $.insecure; + this.nameCanonical = $.nameCanonical; + this.names = $.names; + this.ociMediaTypes = $.ociMediaTypes; + this.push = $.push; + this.pushByDigest = $.pushByDigest; + this.store = $.store; + this.unpack = $.unpack; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportRegistryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportRegistryArgs $; + + public Builder() { + $ = new ExportRegistryArgs(); + } + + public Builder(ExportRegistryArgs defaults) { + $ = new ExportRegistryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Attach an arbitrary key/value annotation to the image. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(@Nullable Output compression) { + $.compression = compression; + return this; + } + + /** + * @param compression The compression type to use. + * + * @return builder + * + */ + public Builder compression(CompressionType compression) { + return compression(Output.of(compression)); + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(@Nullable Output compressionLevel) { + $.compressionLevel = compressionLevel; + return this; + } + + /** + * @param compressionLevel Compression level from 0 to 22. + * + * @return builder + * + */ + public Builder compressionLevel(Integer compressionLevel) { + return compressionLevel(Output.of(compressionLevel)); + } + + /** + * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + * @return builder + * + */ + public Builder danglingNamePrefix(@Nullable Output danglingNamePrefix) { + $.danglingNamePrefix = danglingNamePrefix; + return this; + } + + /** + * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + * @return builder + * + */ + public Builder danglingNamePrefix(String danglingNamePrefix) { + return danglingNamePrefix(Output.of(danglingNamePrefix)); + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(@Nullable Output forceCompression) { + $.forceCompression = forceCompression; + return this; + } + + /** + * @param forceCompression Forcefully apply compression. + * + * @return builder + * + */ + public Builder forceCompression(Boolean forceCompression) { + return forceCompression(Output.of(forceCompression)); + } + + /** + * @param insecure Allow pushing to an insecure registry. + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Allow pushing to an insecure registry. + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). + * + * @return builder + * + */ + public Builder nameCanonical(@Nullable Output nameCanonical) { + $.nameCanonical = nameCanonical; + return this; + } + + /** + * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). + * + * @return builder + * + */ + public Builder nameCanonical(Boolean nameCanonical) { + return nameCanonical(Output.of(nameCanonical)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(@Nullable Output> names) { + $.names = names; + return this; + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(List names) { + return names(Output.of(names)); + } + + /** + * @param names Specify images names to export. This is overridden if tags are already specified. + * + * @return builder + * + */ + public Builder names(String... names) { + return names(List.of(names)); + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { + $.ociMediaTypes = ociMediaTypes; + return this; + } + + /** + * @param ociMediaTypes Use OCI media types in exporter manifests. + * + * @return builder + * + */ + public Builder ociMediaTypes(Boolean ociMediaTypes) { + return ociMediaTypes(Output.of(ociMediaTypes)); + } + + /** + * @param push Push after creating the image. Defaults to `true`. + * + * @return builder + * + */ + public Builder push(@Nullable Output push) { + $.push = push; + return this; + } + + /** + * @param push Push after creating the image. Defaults to `true`. + * + * @return builder + * + */ + public Builder push(Boolean push) { + return push(Output.of(push)); + } + + /** + * @param pushByDigest Push image without name. + * + * @return builder + * + */ + public Builder pushByDigest(@Nullable Output pushByDigest) { + $.pushByDigest = pushByDigest; + return this; + } + + /** + * @param pushByDigest Push image without name. + * + * @return builder + * + */ + public Builder pushByDigest(Boolean pushByDigest) { + return pushByDigest(Output.of(pushByDigest)); + } + + /** + * @param store Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + * @return builder + * + */ + public Builder store(@Nullable Output store) { + $.store = store; + return this; + } + + /** + * @param store Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + * @return builder + * + */ + public Builder store(Boolean store) { + return store(Output.of(store)); + } + + /** + * @param unpack Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + * @return builder + * + */ + public Builder unpack(@Nullable Output unpack) { + $.unpack = unpack; + return this; + } + + /** + * @param unpack Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + * @return builder + * + */ + public Builder unpack(Boolean unpack) { + return unpack(Output.of(unpack)); + } + + public ExportRegistryArgs build() { + $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); + $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); + $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); + $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); + $.push = Codegen.booleanProp("push").output().arg($.push).def(true).getNullable(); + $.store = Codegen.booleanProp("store").output().arg($.store).def(true).getNullable(); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java new file mode 100644 index 0000000..4d124fd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class ExportTarArgs extends com.pulumi.resources.ResourceArgs { + + public static final ExportTarArgs Empty = new ExportTarArgs(); + + /** + * Output path. + * + */ + @Import(name="dest", required=true) + private Output dest; + + /** + * @return Output path. + * + */ + public Output dest() { + return this.dest; + } + + private ExportTarArgs() {} + + private ExportTarArgs(ExportTarArgs $) { + this.dest = $.dest; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ExportTarArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ExportTarArgs $; + + public Builder() { + $ = new ExportTarArgs(); + } + + public Builder(ExportTarArgs defaults) { + $ = new ExportTarArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dest Output path. + * + * @return builder + * + */ + public Builder dest(Output dest) { + $.dest = dest; + return this; + } + + /** + * @param dest Output path. + * + * @return builder + * + */ + public Builder dest(String dest) { + return dest(Output.of(dest)); + } + + public ExportTarArgs build() { + if ($.dest == null) { + throw new MissingRequiredPropertyException("ExportTarArgs", "dest"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java new file mode 100644 index 0000000..f00c078 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java @@ -0,0 +1,102 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class Registry { + /** + * @return The registry's address (e.g. "docker.io"). + * + */ + private String address; + /** + * @return Password or token for the registry. + * + */ + private @Nullable String password; + /** + * @return Username for the registry. + * + */ + private @Nullable String username; + + private Registry() {} + /** + * @return The registry's address (e.g. "docker.io"). + * + */ + public String address() { + return this.address; + } + /** + * @return Password or token for the registry. + * + */ + public Optional password() { + return Optional.ofNullable(this.password); + } + /** + * @return Username for the registry. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Registry defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String address; + private @Nullable String password; + private @Nullable String username; + public Builder() {} + public Builder(Registry defaults) { + Objects.requireNonNull(defaults); + this.address = defaults.address; + this.password = defaults.password; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder address(String address) { + if (address == null) { + throw new MissingRequiredPropertyException("Registry", "address"); + } + this.address = address; + return this; + } + @CustomType.Setter + public Builder password(@Nullable String password) { + + this.password = password; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public Registry build() { + final var _resultValue = new Registry(); + _resultValue.address = address; + _resultValue.password = password; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java new file mode 100644 index 0000000..7475b73 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java @@ -0,0 +1,161 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegistryArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegistryArgs Empty = new RegistryArgs(); + + /** + * The registry's address (e.g. "docker.io"). + * + */ + @Import(name="address", required=true) + private Output address; + + /** + * @return The registry's address (e.g. "docker.io"). + * + */ + public Output address() { + return this.address; + } + + /** + * Password or token for the registry. + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return Password or token for the registry. + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * Username for the registry. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return Username for the registry. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private RegistryArgs() {} + + private RegistryArgs(RegistryArgs $) { + this.address = $.address; + this.password = $.password; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegistryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegistryArgs $; + + public Builder() { + $ = new RegistryArgs(); + } + + public Builder(RegistryArgs defaults) { + $ = new RegistryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param address The registry's address (e.g. "docker.io"). + * + * @return builder + * + */ + public Builder address(Output address) { + $.address = address; + return this; + } + + /** + * @param address The registry's address (e.g. "docker.io"). + * + * @return builder + * + */ + public Builder address(String address) { + return address(Output.of(address)); + } + + /** + * @param password Password or token for the registry. + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password Password or token for the registry. + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param username Username for the registry. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username Username for the registry. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public RegistryArgs build() { + if ($.address == null) { + throw new MissingRequiredPropertyException("RegistryArgs", "address"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java new file mode 100644 index 0000000..788599d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java @@ -0,0 +1,182 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SSHArgs extends com.pulumi.resources.ResourceArgs { + + public static final SSHArgs Empty = new SSHArgs(); + + /** + * Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + */ + @Import(name="id", required=true) + private Output id; + + /** + * @return Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + */ + public Output id() { + return this.id; + } + + /** + * SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + */ + @Import(name="paths") + private @Nullable Output> paths; + + /** + * @return SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + */ + public Optional>> paths() { + return Optional.ofNullable(this.paths); + } + + private SSHArgs() {} + + private SSHArgs(SSHArgs $) { + this.id = $.id; + this.paths = $.paths; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SSHArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SSHArgs $; + + public Builder() { + $ = new SSHArgs(); + } + + public Builder(SSHArgs defaults) { + $ = new SSHArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param id Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + * @return builder + * + */ + public Builder id(Output id) { + $.id = id; + return this; + } + + /** + * @param id Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + * @return builder + * + */ + public Builder id(String id) { + return id(Output.of(id)); + } + + /** + * @param paths SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + * @return builder + * + */ + public Builder paths(@Nullable Output> paths) { + $.paths = paths; + return this; + } + + /** + * @param paths SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + * @return builder + * + */ + public Builder paths(List paths) { + return paths(Output.of(paths)); + } + + /** + * @param paths SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + * @return builder + * + */ + public Builder paths(String... paths) { + return paths(List.of(paths)); + } + + public SSHArgs build() { + if ($.id == null) { + throw new MissingRequiredPropertyException("SSHArgs", "id"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java new file mode 100644 index 0000000..71713b3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java @@ -0,0 +1,106 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.outputs.Context; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class BuildContext { + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + private String location; + /** + * @return Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + */ + private @Nullable Map named; + + private BuildContext() {} + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + public String location() { + return this.location; + } + /** + * @return Additional build contexts to use. + * + * These contexts are accessed with `FROM name` or `--from=name` + * statements when using Dockerfile 1.4+ syntax. + * + * Values can be local paths, HTTP URLs, or `docker-image://` images. + * + */ + public Map named() { + return this.named == null ? Map.of() : this.named; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(BuildContext defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String location; + private @Nullable Map named; + public Builder() {} + public Builder(BuildContext defaults) { + Objects.requireNonNull(defaults); + this.location = defaults.location; + this.named = defaults.named; + } + + @CustomType.Setter + public Builder location(String location) { + if (location == null) { + throw new MissingRequiredPropertyException("BuildContext", "location"); + } + this.location = location; + return this; + } + @CustomType.Setter + public Builder named(@Nullable Map named) { + + this.named = named; + return this; + } + public BuildContext build() { + final var _resultValue = new BuildContext(); + _resultValue.location = location; + _resultValue.named = named; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java new file mode 100644 index 0000000..dbfa0ad --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java @@ -0,0 +1,67 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class BuilderConfig { + /** + * @return Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + */ + private @Nullable String name; + + private BuilderConfig() {} + /** + * @return Name of an existing buildx builder to use. + * + * Only `docker-container`, `kubernetes`, or `remote` drivers are + * supported. The legacy `docker` driver is not supported. + * + * Equivalent to Docker's `--builder` flag. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(BuilderConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String name; + public Builder() {} + public Builder(BuilderConfig defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + } + + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + public BuilderConfig build() { + final var _resultValue = new BuilderConfig(); + _resultValue.name = name; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java new file mode 100644 index 0000000..dfc24b8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java @@ -0,0 +1,199 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.outputs.CacheFromAzureBlob; +import com.pulumi.dockerbuild.outputs.CacheFromGitHubActions; +import com.pulumi.dockerbuild.outputs.CacheFromLocal; +import com.pulumi.dockerbuild.outputs.CacheFromRegistry; +import com.pulumi.dockerbuild.outputs.CacheFromS3; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheFrom { + /** + * @return Upload build caches to Azure's blob storage service. + * + */ + private @Nullable CacheFromAzureBlob azblob; + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + private @Nullable Boolean disabled; + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + private @Nullable CacheFromGitHubActions gha; + /** + * @return A simple backend which caches images on your local filesystem. + * + */ + private @Nullable CacheFromLocal local; + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + */ + private @Nullable String raw; + /** + * @return Upload build caches to remote registries. + * + */ + private @Nullable CacheFromRegistry registry; + /** + * @return Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + */ + private @Nullable CacheFromS3 s3; + + private CacheFrom() {} + /** + * @return Upload build caches to Azure's blob storage service. + * + */ + public Optional azblob() { + return Optional.ofNullable(this.azblob); + } + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional disabled() { + return Optional.ofNullable(this.disabled); + } + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + public Optional gha() { + return Optional.ofNullable(this.gha); + } + /** + * @return A simple backend which caches images on your local filesystem. + * + */ + public Optional local() { + return Optional.ofNullable(this.local); + } + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`). + * + */ + public Optional raw() { + return Optional.ofNullable(this.raw); + } + /** + * @return Upload build caches to remote registries. + * + */ + public Optional registry() { + return Optional.ofNullable(this.registry); + } + /** + * @return Upload build caches to AWS S3 or an S3-compatible services such as + * MinIO. + * + */ + public Optional s3() { + return Optional.ofNullable(this.s3); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFrom defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable CacheFromAzureBlob azblob; + private @Nullable Boolean disabled; + private @Nullable CacheFromGitHubActions gha; + private @Nullable CacheFromLocal local; + private @Nullable String raw; + private @Nullable CacheFromRegistry registry; + private @Nullable CacheFromS3 s3; + public Builder() {} + public Builder(CacheFrom defaults) { + Objects.requireNonNull(defaults); + this.azblob = defaults.azblob; + this.disabled = defaults.disabled; + this.gha = defaults.gha; + this.local = defaults.local; + this.raw = defaults.raw; + this.registry = defaults.registry; + this.s3 = defaults.s3; + } + + @CustomType.Setter + public Builder azblob(@Nullable CacheFromAzureBlob azblob) { + + this.azblob = azblob; + return this; + } + @CustomType.Setter + public Builder disabled(@Nullable Boolean disabled) { + + this.disabled = disabled; + return this; + } + @CustomType.Setter + public Builder gha(@Nullable CacheFromGitHubActions gha) { + + this.gha = gha; + return this; + } + @CustomType.Setter + public Builder local(@Nullable CacheFromLocal local) { + + this.local = local; + return this; + } + @CustomType.Setter + public Builder raw(@Nullable String raw) { + + this.raw = raw; + return this; + } + @CustomType.Setter + public Builder registry(@Nullable CacheFromRegistry registry) { + + this.registry = registry; + return this; + } + @CustomType.Setter + public Builder s3(@Nullable CacheFromS3 s3) { + + this.s3 = s3; + return this; + } + public CacheFrom build() { + final var _resultValue = new CacheFrom(); + _resultValue.azblob = azblob; + _resultValue.disabled = disabled; + _resultValue.gha = gha; + _resultValue.local = local; + _resultValue.raw = raw; + _resultValue.registry = registry; + _resultValue.s3 = s3; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java new file mode 100644 index 0000000..92a25a9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java @@ -0,0 +1,102 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheFromAzureBlob { + /** + * @return Base URL of the storage account. + * + */ + private @Nullable String accountUrl; + /** + * @return The name of the cache image. + * + */ + private String name; + /** + * @return Blob storage account key. + * + */ + private @Nullable String secretAccessKey; + + private CacheFromAzureBlob() {} + /** + * @return Base URL of the storage account. + * + */ + public Optional accountUrl() { + return Optional.ofNullable(this.accountUrl); + } + /** + * @return The name of the cache image. + * + */ + public String name() { + return this.name; + } + /** + * @return Blob storage account key. + * + */ + public Optional secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFromAzureBlob defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String accountUrl; + private String name; + private @Nullable String secretAccessKey; + public Builder() {} + public Builder(CacheFromAzureBlob defaults) { + Objects.requireNonNull(defaults); + this.accountUrl = defaults.accountUrl; + this.name = defaults.name; + this.secretAccessKey = defaults.secretAccessKey; + } + + @CustomType.Setter + public Builder accountUrl(@Nullable String accountUrl) { + + this.accountUrl = accountUrl; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("CacheFromAzureBlob", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder secretAccessKey(@Nullable String secretAccessKey) { + + this.secretAccessKey = secretAccessKey; + return this; + } + public CacheFromAzureBlob build() { + final var _resultValue = new CacheFromAzureBlob(); + _resultValue.accountUrl = accountUrl; + _resultValue.name = name; + _resultValue.secretAccessKey = secretAccessKey; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java new file mode 100644 index 0000000..3ecd007 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java @@ -0,0 +1,123 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheFromGitHubActions { + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + private @Nullable String scope; + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + private @Nullable String token; + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + private @Nullable String url; + + private CacheFromGitHubActions() {} + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + public Optional scope() { + return Optional.ofNullable(this.scope); + } + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional token() { + return Optional.ofNullable(this.token); + } + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional url() { + return Optional.ofNullable(this.url); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFromGitHubActions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String scope; + private @Nullable String token; + private @Nullable String url; + public Builder() {} + public Builder(CacheFromGitHubActions defaults) { + Objects.requireNonNull(defaults); + this.scope = defaults.scope; + this.token = defaults.token; + this.url = defaults.url; + } + + @CustomType.Setter + public Builder scope(@Nullable String scope) { + + this.scope = scope; + return this; + } + @CustomType.Setter + public Builder token(@Nullable String token) { + + this.token = token; + return this; + } + @CustomType.Setter + public Builder url(@Nullable String url) { + + this.url = url; + return this; + } + public CacheFromGitHubActions build() { + final var _resultValue = new CacheFromGitHubActions(); + _resultValue.scope = scope; + _resultValue.token = token; + _resultValue.url = url; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java new file mode 100644 index 0000000..cd1362d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheFromLocal { + /** + * @return Digest of manifest to import. + * + */ + private @Nullable String digest; + /** + * @return Path of the local directory where cache gets imported from. + * + */ + private String src; + + private CacheFromLocal() {} + /** + * @return Digest of manifest to import. + * + */ + public Optional digest() { + return Optional.ofNullable(this.digest); + } + /** + * @return Path of the local directory where cache gets imported from. + * + */ + public String src() { + return this.src; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFromLocal defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String digest; + private String src; + public Builder() {} + public Builder(CacheFromLocal defaults) { + Objects.requireNonNull(defaults); + this.digest = defaults.digest; + this.src = defaults.src; + } + + @CustomType.Setter + public Builder digest(@Nullable String digest) { + + this.digest = digest; + return this; + } + @CustomType.Setter + public Builder src(String src) { + if (src == null) { + throw new MissingRequiredPropertyException("CacheFromLocal", "src"); + } + this.src = src; + return this; + } + public CacheFromLocal build() { + final var _resultValue = new CacheFromLocal(); + _resultValue.digest = digest; + _resultValue.src = src; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java new file mode 100644 index 0000000..5202fd2 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class CacheFromRegistry { + /** + * @return Fully qualified name of the cache image to import. + * + */ + private String ref; + + private CacheFromRegistry() {} + /** + * @return Fully qualified name of the cache image to import. + * + */ + public String ref() { + return this.ref; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFromRegistry defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String ref; + public Builder() {} + public Builder(CacheFromRegistry defaults) { + Objects.requireNonNull(defaults); + this.ref = defaults.ref; + } + + @CustomType.Setter + public Builder ref(String ref) { + if (ref == null) { + throw new MissingRequiredPropertyException("CacheFromRegistry", "ref"); + } + this.ref = ref; + return this; + } + public CacheFromRegistry build() { + final var _resultValue = new CacheFromRegistry(); + _resultValue.ref = ref; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java new file mode 100644 index 0000000..230713b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java @@ -0,0 +1,252 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheFromS3 { + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + private @Nullable String accessKeyId; + /** + * @return Prefix to prepend to blob filenames. + * + */ + private @Nullable String blobsPrefix; + /** + * @return Name of the S3 bucket. + * + */ + private String bucket; + /** + * @return Endpoint of the S3 bucket. + * + */ + private @Nullable String endpointUrl; + /** + * @return Prefix to prepend on manifest filenames. + * + */ + private @Nullable String manifestsPrefix; + /** + * @return Name of the cache image. + * + */ + private @Nullable String name; + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + private String region; + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + private @Nullable String secretAccessKey; + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + private @Nullable String sessionToken; + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + private @Nullable Boolean usePathStyle; + + private CacheFromS3() {} + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + public Optional accessKeyId() { + return Optional.ofNullable(this.accessKeyId); + } + /** + * @return Prefix to prepend to blob filenames. + * + */ + public Optional blobsPrefix() { + return Optional.ofNullable(this.blobsPrefix); + } + /** + * @return Name of the S3 bucket. + * + */ + public String bucket() { + return this.bucket; + } + /** + * @return Endpoint of the S3 bucket. + * + */ + public Optional endpointUrl() { + return Optional.ofNullable(this.endpointUrl); + } + /** + * @return Prefix to prepend on manifest filenames. + * + */ + public Optional manifestsPrefix() { + return Optional.ofNullable(this.manifestsPrefix); + } + /** + * @return Name of the cache image. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + public String region() { + return this.region; + } + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + public Optional secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + public Optional sessionToken() { + return Optional.ofNullable(this.sessionToken); + } + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + public Optional usePathStyle() { + return Optional.ofNullable(this.usePathStyle); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheFromS3 defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String accessKeyId; + private @Nullable String blobsPrefix; + private String bucket; + private @Nullable String endpointUrl; + private @Nullable String manifestsPrefix; + private @Nullable String name; + private String region; + private @Nullable String secretAccessKey; + private @Nullable String sessionToken; + private @Nullable Boolean usePathStyle; + public Builder() {} + public Builder(CacheFromS3 defaults) { + Objects.requireNonNull(defaults); + this.accessKeyId = defaults.accessKeyId; + this.blobsPrefix = defaults.blobsPrefix; + this.bucket = defaults.bucket; + this.endpointUrl = defaults.endpointUrl; + this.manifestsPrefix = defaults.manifestsPrefix; + this.name = defaults.name; + this.region = defaults.region; + this.secretAccessKey = defaults.secretAccessKey; + this.sessionToken = defaults.sessionToken; + this.usePathStyle = defaults.usePathStyle; + } + + @CustomType.Setter + public Builder accessKeyId(@Nullable String accessKeyId) { + + this.accessKeyId = accessKeyId; + return this; + } + @CustomType.Setter + public Builder blobsPrefix(@Nullable String blobsPrefix) { + + this.blobsPrefix = blobsPrefix; + return this; + } + @CustomType.Setter + public Builder bucket(String bucket) { + if (bucket == null) { + throw new MissingRequiredPropertyException("CacheFromS3", "bucket"); + } + this.bucket = bucket; + return this; + } + @CustomType.Setter + public Builder endpointUrl(@Nullable String endpointUrl) { + + this.endpointUrl = endpointUrl; + return this; + } + @CustomType.Setter + public Builder manifestsPrefix(@Nullable String manifestsPrefix) { + + this.manifestsPrefix = manifestsPrefix; + return this; + } + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + @CustomType.Setter + public Builder region(String region) { + if (region == null) { + throw new MissingRequiredPropertyException("CacheFromS3", "region"); + } + this.region = region; + return this; + } + @CustomType.Setter + public Builder secretAccessKey(@Nullable String secretAccessKey) { + + this.secretAccessKey = secretAccessKey; + return this; + } + @CustomType.Setter + public Builder sessionToken(@Nullable String sessionToken) { + + this.sessionToken = sessionToken; + return this; + } + @CustomType.Setter + public Builder usePathStyle(@Nullable Boolean usePathStyle) { + + this.usePathStyle = usePathStyle; + return this; + } + public CacheFromS3 build() { + final var _resultValue = new CacheFromS3(); + _resultValue.accessKeyId = accessKeyId; + _resultValue.blobsPrefix = blobsPrefix; + _resultValue.bucket = bucket; + _resultValue.endpointUrl = endpointUrl; + _resultValue.manifestsPrefix = manifestsPrefix; + _resultValue.name = name; + _resultValue.region = region; + _resultValue.secretAccessKey = secretAccessKey; + _resultValue.sessionToken = sessionToken; + _resultValue.usePathStyle = usePathStyle; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java new file mode 100644 index 0000000..1a87645 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java @@ -0,0 +1,225 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.outputs.CacheToAzureBlob; +import com.pulumi.dockerbuild.outputs.CacheToGitHubActions; +import com.pulumi.dockerbuild.outputs.CacheToInline; +import com.pulumi.dockerbuild.outputs.CacheToLocal; +import com.pulumi.dockerbuild.outputs.CacheToRegistry; +import com.pulumi.dockerbuild.outputs.CacheToS3; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheTo { + /** + * @return Push cache to Azure's blob storage service. + * + */ + private @Nullable CacheToAzureBlob azblob; + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + private @Nullable Boolean disabled; + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + private @Nullable CacheToGitHubActions gha; + /** + * @return The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + */ + private @Nullable CacheToInline inline; + /** + * @return A simple backend which caches imagines on your local filesystem. + * + */ + private @Nullable CacheToLocal local; + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + */ + private @Nullable String raw; + /** + * @return Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + */ + private @Nullable CacheToRegistry registry; + /** + * @return Push cache to AWS S3 or S3-compatible services such as MinIO. + * + */ + private @Nullable CacheToS3 s3; + + private CacheTo() {} + /** + * @return Push cache to Azure's blob storage service. + * + */ + public Optional azblob() { + return Optional.ofNullable(this.azblob); + } + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional disabled() { + return Optional.ofNullable(this.disabled); + } + /** + * @return Recommended for use with GitHub Actions workflows. + * + * An action like `crazy-max/ghaction-github-runtime` is recommended to + * expose appropriate credentials to your GitHub workflow. + * + */ + public Optional gha() { + return Optional.ofNullable(this.gha); + } + /** + * @return The inline cache storage backend is the simplest implementation to get + * started with, but it does not handle multi-stage builds. Consider the + * `registry` cache backend instead. + * + */ + public Optional inline() { + return Optional.ofNullable(this.inline); + } + /** + * @return A simple backend which caches imagines on your local filesystem. + * + */ + public Optional local() { + return Optional.ofNullable(this.local); + } + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=inline`) + * + */ + public Optional raw() { + return Optional.ofNullable(this.raw); + } + /** + * @return Push caches to remote registries. Incompatible with the `docker` build + * driver. + * + */ + public Optional registry() { + return Optional.ofNullable(this.registry); + } + /** + * @return Push cache to AWS S3 or S3-compatible services such as MinIO. + * + */ + public Optional s3() { + return Optional.ofNullable(this.s3); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheTo defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable CacheToAzureBlob azblob; + private @Nullable Boolean disabled; + private @Nullable CacheToGitHubActions gha; + private @Nullable CacheToInline inline; + private @Nullable CacheToLocal local; + private @Nullable String raw; + private @Nullable CacheToRegistry registry; + private @Nullable CacheToS3 s3; + public Builder() {} + public Builder(CacheTo defaults) { + Objects.requireNonNull(defaults); + this.azblob = defaults.azblob; + this.disabled = defaults.disabled; + this.gha = defaults.gha; + this.inline = defaults.inline; + this.local = defaults.local; + this.raw = defaults.raw; + this.registry = defaults.registry; + this.s3 = defaults.s3; + } + + @CustomType.Setter + public Builder azblob(@Nullable CacheToAzureBlob azblob) { + + this.azblob = azblob; + return this; + } + @CustomType.Setter + public Builder disabled(@Nullable Boolean disabled) { + + this.disabled = disabled; + return this; + } + @CustomType.Setter + public Builder gha(@Nullable CacheToGitHubActions gha) { + + this.gha = gha; + return this; + } + @CustomType.Setter + public Builder inline(@Nullable CacheToInline inline) { + + this.inline = inline; + return this; + } + @CustomType.Setter + public Builder local(@Nullable CacheToLocal local) { + + this.local = local; + return this; + } + @CustomType.Setter + public Builder raw(@Nullable String raw) { + + this.raw = raw; + return this; + } + @CustomType.Setter + public Builder registry(@Nullable CacheToRegistry registry) { + + this.registry = registry; + return this; + } + @CustomType.Setter + public Builder s3(@Nullable CacheToS3 s3) { + + this.s3 = s3; + return this; + } + public CacheTo build() { + final var _resultValue = new CacheTo(); + _resultValue.azblob = azblob; + _resultValue.disabled = disabled; + _resultValue.gha = gha; + _resultValue.inline = inline; + _resultValue.local = local; + _resultValue.raw = raw; + _resultValue.registry = registry; + _resultValue.s3 = s3; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java new file mode 100644 index 0000000..1c79892 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java @@ -0,0 +1,146 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheToAzureBlob { + /** + * @return Base URL of the storage account. + * + */ + private @Nullable String accountUrl; + /** + * @return Ignore errors caused by failed cache exports. + * + */ + private @Nullable Boolean ignoreError; + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + private @Nullable CacheMode mode; + /** + * @return The name of the cache image. + * + */ + private String name; + /** + * @return Blob storage account key. + * + */ + private @Nullable String secretAccessKey; + + private CacheToAzureBlob() {} + /** + * @return Base URL of the storage account. + * + */ + public Optional accountUrl() { + return Optional.ofNullable(this.accountUrl); + } + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional mode() { + return Optional.ofNullable(this.mode); + } + /** + * @return The name of the cache image. + * + */ + public String name() { + return this.name; + } + /** + * @return Blob storage account key. + * + */ + public Optional secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToAzureBlob defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String accountUrl; + private @Nullable Boolean ignoreError; + private @Nullable CacheMode mode; + private String name; + private @Nullable String secretAccessKey; + public Builder() {} + public Builder(CacheToAzureBlob defaults) { + Objects.requireNonNull(defaults); + this.accountUrl = defaults.accountUrl; + this.ignoreError = defaults.ignoreError; + this.mode = defaults.mode; + this.name = defaults.name; + this.secretAccessKey = defaults.secretAccessKey; + } + + @CustomType.Setter + public Builder accountUrl(@Nullable String accountUrl) { + + this.accountUrl = accountUrl; + return this; + } + @CustomType.Setter + public Builder ignoreError(@Nullable Boolean ignoreError) { + + this.ignoreError = ignoreError; + return this; + } + @CustomType.Setter + public Builder mode(@Nullable CacheMode mode) { + + this.mode = mode; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("CacheToAzureBlob", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder secretAccessKey(@Nullable String secretAccessKey) { + + this.secretAccessKey = secretAccessKey; + return this; + } + public CacheToAzureBlob build() { + final var _resultValue = new CacheToAzureBlob(); + _resultValue.accountUrl = accountUrl; + _resultValue.ignoreError = ignoreError; + _resultValue.mode = mode; + _resultValue.name = name; + _resultValue.secretAccessKey = secretAccessKey; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java new file mode 100644 index 0000000..a101219 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java @@ -0,0 +1,167 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CacheMode; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheToGitHubActions { + /** + * @return Ignore errors caused by failed cache exports. + * + */ + private @Nullable Boolean ignoreError; + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + private @Nullable CacheMode mode; + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + private @Nullable String scope; + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + private @Nullable String token; + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + private @Nullable String url; + + private CacheToGitHubActions() {} + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional mode() { + return Optional.ofNullable(this.mode); + } + /** + * @return The scope to use for cache keys. Defaults to `buildkit`. + * + * This should be set if building and caching multiple images in one + * workflow, otherwise caches will overwrite each other. + * + */ + public Optional scope() { + return Optional.ofNullable(this.scope); + } + /** + * @return The GitHub Actions token to use. This is not a personal access tokens + * and is typically generated automatically as part of each job. + * + * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional token() { + return Optional.ofNullable(this.token); + } + /** + * @return The cache server URL to use for artifacts. + * + * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like + * `crazy-max/ghaction-github-runtime` is recommended to expose this + * environment variable to your jobs. + * + */ + public Optional url() { + return Optional.ofNullable(this.url); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToGitHubActions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Boolean ignoreError; + private @Nullable CacheMode mode; + private @Nullable String scope; + private @Nullable String token; + private @Nullable String url; + public Builder() {} + public Builder(CacheToGitHubActions defaults) { + Objects.requireNonNull(defaults); + this.ignoreError = defaults.ignoreError; + this.mode = defaults.mode; + this.scope = defaults.scope; + this.token = defaults.token; + this.url = defaults.url; + } + + @CustomType.Setter + public Builder ignoreError(@Nullable Boolean ignoreError) { + + this.ignoreError = ignoreError; + return this; + } + @CustomType.Setter + public Builder mode(@Nullable CacheMode mode) { + + this.mode = mode; + return this; + } + @CustomType.Setter + public Builder scope(@Nullable String scope) { + + this.scope = scope; + return this; + } + @CustomType.Setter + public Builder token(@Nullable String token) { + + this.token = token; + return this; + } + @CustomType.Setter + public Builder url(@Nullable String url) { + + this.url = url; + return this; + } + public CacheToGitHubActions build() { + final var _resultValue = new CacheToGitHubActions(); + _resultValue.ignoreError = ignoreError; + _resultValue.mode = mode; + _resultValue.scope = scope; + _resultValue.token = token; + _resultValue.url = url; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java new file mode 100644 index 0000000..509470b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; + +@CustomType +public final class CacheToInline { + private CacheToInline() {} + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToInline defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + public Builder() {} + public Builder(CacheToInline defaults) { + Objects.requireNonNull(defaults); + } + + public CacheToInline build() { + final var _resultValue = new CacheToInline(); + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java new file mode 100644 index 0000000..2711ae9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java @@ -0,0 +1,169 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.dockerbuild.enums.CompressionType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheToLocal { + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return Path of the local directory to export the cache. + * + */ + private String dest; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Ignore errors caused by failed cache exports. + * + */ + private @Nullable Boolean ignoreError; + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + private @Nullable CacheMode mode; + + private CacheToLocal() {} + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return Path of the local directory to export the cache. + * + */ + public String dest() { + return this.dest; + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional mode() { + return Optional.ofNullable(this.mode); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToLocal defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private String dest; + private @Nullable Boolean forceCompression; + private @Nullable Boolean ignoreError; + private @Nullable CacheMode mode; + public Builder() {} + public Builder(CacheToLocal defaults) { + Objects.requireNonNull(defaults); + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.dest = defaults.dest; + this.forceCompression = defaults.forceCompression; + this.ignoreError = defaults.ignoreError; + this.mode = defaults.mode; + } + + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder dest(String dest) { + if (dest == null) { + throw new MissingRequiredPropertyException("CacheToLocal", "dest"); + } + this.dest = dest; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder ignoreError(@Nullable Boolean ignoreError) { + + this.ignoreError = ignoreError; + return this; + } + @CustomType.Setter + public Builder mode(@Nullable CacheMode mode) { + + this.mode = mode; + return this; + } + public CacheToLocal build() { + final var _resultValue = new CacheToLocal(); + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.dest = dest; + _resultValue.forceCompression = forceCompression; + _resultValue.ignoreError = ignoreError; + _resultValue.mode = mode; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java new file mode 100644 index 0000000..0ceb1c0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java @@ -0,0 +1,225 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.dockerbuild.enums.CompressionType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheToRegistry { + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Ignore errors caused by failed cache exports. + * + */ + private @Nullable Boolean ignoreError; + /** + * @return Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + */ + private @Nullable Boolean imageManifest; + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + private @Nullable CacheMode mode; + /** + * @return Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + */ + private @Nullable Boolean ociMediaTypes; + /** + * @return Fully qualified name of the cache image to import. + * + */ + private String ref; + + private CacheToRegistry() {} + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + /** + * @return Export cache manifest as an OCI-compatible image manifest instead of a + * manifest list. Requires `ociMediaTypes` to also be `true`. + * + * Some registries like AWS ECR will not work with caching if this is + * `false`. + * + * Defaults to `false` to match Docker's default behavior. + * + */ + public Optional imageManifest() { + return Optional.ofNullable(this.imageManifest); + } + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional mode() { + return Optional.ofNullable(this.mode); + } + /** + * @return Whether to use OCI media types in exported manifests. Defaults to + * `true`. + * + */ + public Optional ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + /** + * @return Fully qualified name of the cache image to import. + * + */ + public String ref() { + return this.ref; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToRegistry defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private @Nullable Boolean forceCompression; + private @Nullable Boolean ignoreError; + private @Nullable Boolean imageManifest; + private @Nullable CacheMode mode; + private @Nullable Boolean ociMediaTypes; + private String ref; + public Builder() {} + public Builder(CacheToRegistry defaults) { + Objects.requireNonNull(defaults); + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.forceCompression = defaults.forceCompression; + this.ignoreError = defaults.ignoreError; + this.imageManifest = defaults.imageManifest; + this.mode = defaults.mode; + this.ociMediaTypes = defaults.ociMediaTypes; + this.ref = defaults.ref; + } + + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder ignoreError(@Nullable Boolean ignoreError) { + + this.ignoreError = ignoreError; + return this; + } + @CustomType.Setter + public Builder imageManifest(@Nullable Boolean imageManifest) { + + this.imageManifest = imageManifest; + return this; + } + @CustomType.Setter + public Builder mode(@Nullable CacheMode mode) { + + this.mode = mode; + return this; + } + @CustomType.Setter + public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { + + this.ociMediaTypes = ociMediaTypes; + return this; + } + @CustomType.Setter + public Builder ref(String ref) { + if (ref == null) { + throw new MissingRequiredPropertyException("CacheToRegistry", "ref"); + } + this.ref = ref; + return this; + } + public CacheToRegistry build() { + final var _resultValue = new CacheToRegistry(); + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.forceCompression = forceCompression; + _resultValue.ignoreError = ignoreError; + _resultValue.imageManifest = imageManifest; + _resultValue.mode = mode; + _resultValue.ociMediaTypes = ociMediaTypes; + _resultValue.ref = ref; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java new file mode 100644 index 0000000..c2e21e4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java @@ -0,0 +1,295 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CacheMode; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class CacheToS3 { + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + private @Nullable String accessKeyId; + /** + * @return Prefix to prepend to blob filenames. + * + */ + private @Nullable String blobsPrefix; + /** + * @return Name of the S3 bucket. + * + */ + private String bucket; + /** + * @return Endpoint of the S3 bucket. + * + */ + private @Nullable String endpointUrl; + /** + * @return Ignore errors caused by failed cache exports. + * + */ + private @Nullable Boolean ignoreError; + /** + * @return Prefix to prepend on manifest filenames. + * + */ + private @Nullable String manifestsPrefix; + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + private @Nullable CacheMode mode; + /** + * @return Name of the cache image. + * + */ + private @Nullable String name; + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + private String region; + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + private @Nullable String secretAccessKey; + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + private @Nullable String sessionToken; + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + private @Nullable Boolean usePathStyle; + + private CacheToS3() {} + /** + * @return Defaults to `$AWS_ACCESS_KEY_ID`. + * + */ + public Optional accessKeyId() { + return Optional.ofNullable(this.accessKeyId); + } + /** + * @return Prefix to prepend to blob filenames. + * + */ + public Optional blobsPrefix() { + return Optional.ofNullable(this.blobsPrefix); + } + /** + * @return Name of the S3 bucket. + * + */ + public String bucket() { + return this.bucket; + } + /** + * @return Endpoint of the S3 bucket. + * + */ + public Optional endpointUrl() { + return Optional.ofNullable(this.endpointUrl); + } + /** + * @return Ignore errors caused by failed cache exports. + * + */ + public Optional ignoreError() { + return Optional.ofNullable(this.ignoreError); + } + /** + * @return Prefix to prepend on manifest filenames. + * + */ + public Optional manifestsPrefix() { + return Optional.ofNullable(this.manifestsPrefix); + } + /** + * @return The cache mode to use. Defaults to `min`. + * + */ + public Optional mode() { + return Optional.ofNullable(this.mode); + } + /** + * @return Name of the cache image. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. + * + */ + public String region() { + return this.region; + } + /** + * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. + * + */ + public Optional secretAccessKey() { + return Optional.ofNullable(this.secretAccessKey); + } + /** + * @return Defaults to `$AWS_SESSION_TOKEN`. + * + */ + public Optional sessionToken() { + return Optional.ofNullable(this.sessionToken); + } + /** + * @return Uses `bucket` in the URL instead of hostname when `true`. + * + */ + public Optional usePathStyle() { + return Optional.ofNullable(this.usePathStyle); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(CacheToS3 defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String accessKeyId; + private @Nullable String blobsPrefix; + private String bucket; + private @Nullable String endpointUrl; + private @Nullable Boolean ignoreError; + private @Nullable String manifestsPrefix; + private @Nullable CacheMode mode; + private @Nullable String name; + private String region; + private @Nullable String secretAccessKey; + private @Nullable String sessionToken; + private @Nullable Boolean usePathStyle; + public Builder() {} + public Builder(CacheToS3 defaults) { + Objects.requireNonNull(defaults); + this.accessKeyId = defaults.accessKeyId; + this.blobsPrefix = defaults.blobsPrefix; + this.bucket = defaults.bucket; + this.endpointUrl = defaults.endpointUrl; + this.ignoreError = defaults.ignoreError; + this.manifestsPrefix = defaults.manifestsPrefix; + this.mode = defaults.mode; + this.name = defaults.name; + this.region = defaults.region; + this.secretAccessKey = defaults.secretAccessKey; + this.sessionToken = defaults.sessionToken; + this.usePathStyle = defaults.usePathStyle; + } + + @CustomType.Setter + public Builder accessKeyId(@Nullable String accessKeyId) { + + this.accessKeyId = accessKeyId; + return this; + } + @CustomType.Setter + public Builder blobsPrefix(@Nullable String blobsPrefix) { + + this.blobsPrefix = blobsPrefix; + return this; + } + @CustomType.Setter + public Builder bucket(String bucket) { + if (bucket == null) { + throw new MissingRequiredPropertyException("CacheToS3", "bucket"); + } + this.bucket = bucket; + return this; + } + @CustomType.Setter + public Builder endpointUrl(@Nullable String endpointUrl) { + + this.endpointUrl = endpointUrl; + return this; + } + @CustomType.Setter + public Builder ignoreError(@Nullable Boolean ignoreError) { + + this.ignoreError = ignoreError; + return this; + } + @CustomType.Setter + public Builder manifestsPrefix(@Nullable String manifestsPrefix) { + + this.manifestsPrefix = manifestsPrefix; + return this; + } + @CustomType.Setter + public Builder mode(@Nullable CacheMode mode) { + + this.mode = mode; + return this; + } + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + @CustomType.Setter + public Builder region(String region) { + if (region == null) { + throw new MissingRequiredPropertyException("CacheToS3", "region"); + } + this.region = region; + return this; + } + @CustomType.Setter + public Builder secretAccessKey(@Nullable String secretAccessKey) { + + this.secretAccessKey = secretAccessKey; + return this; + } + @CustomType.Setter + public Builder sessionToken(@Nullable String sessionToken) { + + this.sessionToken = sessionToken; + return this; + } + @CustomType.Setter + public Builder usePathStyle(@Nullable Boolean usePathStyle) { + + this.usePathStyle = usePathStyle; + return this; + } + public CacheToS3 build() { + final var _resultValue = new CacheToS3(); + _resultValue.accessKeyId = accessKeyId; + _resultValue.blobsPrefix = blobsPrefix; + _resultValue.bucket = bucket; + _resultValue.endpointUrl = endpointUrl; + _resultValue.ignoreError = ignoreError; + _resultValue.manifestsPrefix = manifestsPrefix; + _resultValue.mode = mode; + _resultValue.name = name; + _resultValue.region = region; + _resultValue.secretAccessKey = secretAccessKey; + _resultValue.sessionToken = sessionToken; + _resultValue.usePathStyle = usePathStyle; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java new file mode 100644 index 0000000..829614a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java @@ -0,0 +1,72 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class Context { + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + private String location; + + private Context() {} + /** + * @return Resources to use for build context. + * + * The location can be: + * * A relative or absolute path to a local directory (`.`, `./app`, + * `/app`, etc.). + * * A remote URL of a Git repository, tarball, or plain text file + * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, + * etc.). + * + */ + public String location() { + return this.location; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Context defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String location; + public Builder() {} + public Builder(Context defaults) { + Objects.requireNonNull(defaults); + this.location = defaults.location; + } + + @CustomType.Setter + public Builder location(String location) { + if (location == null) { + throw new MissingRequiredPropertyException("Context", "location"); + } + this.location = location; + return this; + } + public Context build() { + final var _resultValue = new Context(); + _resultValue.location = location; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java new file mode 100644 index 0000000..a47d107 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java @@ -0,0 +1,98 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class Dockerfile { + /** + * @return Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + */ + private @Nullable String inline; + /** + * @return Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + */ + private @Nullable String location; + + private Dockerfile() {} + /** + * @return Raw Dockerfile contents. + * + * Conflicts with `location`. + * + * Equivalent to invoking Docker with `-f -`. + * + */ + public Optional inline() { + return Optional.ofNullable(this.inline); + } + /** + * @return Location of the Dockerfile to use. + * + * Can be a relative or absolute path to a local file, or a remote URL. + * + * Defaults to `${context.location}/Dockerfile` if context is on-disk. + * + * Conflicts with `inline`. + * + */ + public Optional location() { + return Optional.ofNullable(this.location); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Dockerfile defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String inline; + private @Nullable String location; + public Builder() {} + public Builder(Dockerfile defaults) { + Objects.requireNonNull(defaults); + this.inline = defaults.inline; + this.location = defaults.location; + } + + @CustomType.Setter + public Builder inline(@Nullable String inline) { + + this.inline = inline; + return this; + } + @CustomType.Setter + public Builder location(@Nullable String location) { + + this.location = location; + return this; + } + public Dockerfile build() { + final var _resultValue = new Dockerfile(); + _resultValue.inline = inline; + _resultValue.location = location; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java new file mode 100644 index 0000000..8a6a167 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java @@ -0,0 +1,237 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.outputs.ExportCacheOnly; +import com.pulumi.dockerbuild.outputs.ExportDocker; +import com.pulumi.dockerbuild.outputs.ExportImage; +import com.pulumi.dockerbuild.outputs.ExportLocal; +import com.pulumi.dockerbuild.outputs.ExportOCI; +import com.pulumi.dockerbuild.outputs.ExportRegistry; +import com.pulumi.dockerbuild.outputs.ExportTar; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class Export { + /** + * @return A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + */ + private @Nullable ExportCacheOnly cacheonly; + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + private @Nullable Boolean disabled; + /** + * @return Export as a Docker image layout. + * + */ + private @Nullable ExportDocker docker; + /** + * @return Outputs the build result into a container image format. + * + */ + private @Nullable ExportImage image; + /** + * @return Export to a local directory as files and directories. + * + */ + private @Nullable ExportLocal local; + /** + * @return Identical to the Docker exporter but uses OCI media types by default. + * + */ + private @Nullable ExportOCI oci; + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + */ + private @Nullable String raw; + /** + * @return Identical to the Image exporter, but pushes by default. + * + */ + private @Nullable ExportRegistry registry; + /** + * @return Export to a local directory as a tarball. + * + */ + private @Nullable ExportTar tar; + + private Export() {} + /** + * @return A no-op export. Helpful for silencing the 'no exports' warning if you + * just want to populate caches. + * + */ + public Optional cacheonly() { + return Optional.ofNullable(this.cacheonly); + } + /** + * @return When `true` this entry will be excluded. Defaults to `false`. + * + */ + public Optional disabled() { + return Optional.ofNullable(this.disabled); + } + /** + * @return Export as a Docker image layout. + * + */ + public Optional docker() { + return Optional.ofNullable(this.docker); + } + /** + * @return Outputs the build result into a container image format. + * + */ + public Optional image() { + return Optional.ofNullable(this.image); + } + /** + * @return Export to a local directory as files and directories. + * + */ + public Optional local() { + return Optional.ofNullable(this.local); + } + /** + * @return Identical to the Docker exporter but uses OCI media types by default. + * + */ + public Optional oci() { + return Optional.ofNullable(this.oci); + } + /** + * @return A raw string as you would provide it to the Docker CLI (e.g., + * `type=docker`) + * + */ + public Optional raw() { + return Optional.ofNullable(this.raw); + } + /** + * @return Identical to the Image exporter, but pushes by default. + * + */ + public Optional registry() { + return Optional.ofNullable(this.registry); + } + /** + * @return Export to a local directory as a tarball. + * + */ + public Optional tar() { + return Optional.ofNullable(this.tar); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Export defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable ExportCacheOnly cacheonly; + private @Nullable Boolean disabled; + private @Nullable ExportDocker docker; + private @Nullable ExportImage image; + private @Nullable ExportLocal local; + private @Nullable ExportOCI oci; + private @Nullable String raw; + private @Nullable ExportRegistry registry; + private @Nullable ExportTar tar; + public Builder() {} + public Builder(Export defaults) { + Objects.requireNonNull(defaults); + this.cacheonly = defaults.cacheonly; + this.disabled = defaults.disabled; + this.docker = defaults.docker; + this.image = defaults.image; + this.local = defaults.local; + this.oci = defaults.oci; + this.raw = defaults.raw; + this.registry = defaults.registry; + this.tar = defaults.tar; + } + + @CustomType.Setter + public Builder cacheonly(@Nullable ExportCacheOnly cacheonly) { + + this.cacheonly = cacheonly; + return this; + } + @CustomType.Setter + public Builder disabled(@Nullable Boolean disabled) { + + this.disabled = disabled; + return this; + } + @CustomType.Setter + public Builder docker(@Nullable ExportDocker docker) { + + this.docker = docker; + return this; + } + @CustomType.Setter + public Builder image(@Nullable ExportImage image) { + + this.image = image; + return this; + } + @CustomType.Setter + public Builder local(@Nullable ExportLocal local) { + + this.local = local; + return this; + } + @CustomType.Setter + public Builder oci(@Nullable ExportOCI oci) { + + this.oci = oci; + return this; + } + @CustomType.Setter + public Builder raw(@Nullable String raw) { + + this.raw = raw; + return this; + } + @CustomType.Setter + public Builder registry(@Nullable ExportRegistry registry) { + + this.registry = registry; + return this; + } + @CustomType.Setter + public Builder tar(@Nullable ExportTar tar) { + + this.tar = tar; + return this; + } + public Export build() { + final var _resultValue = new Export(); + _resultValue.cacheonly = cacheonly; + _resultValue.disabled = disabled; + _resultValue.docker = docker; + _resultValue.image = image; + _resultValue.local = local; + _resultValue.oci = oci; + _resultValue.raw = raw; + _resultValue.registry = registry; + _resultValue.tar = tar; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java new file mode 100644 index 0000000..f25be65 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; + +@CustomType +public final class ExportCacheOnly { + private ExportCacheOnly() {} + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportCacheOnly defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + public Builder() {} + public Builder(ExportCacheOnly defaults) { + Objects.requireNonNull(defaults); + } + + public ExportCacheOnly build() { + final var _resultValue = new ExportCacheOnly(); + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java new file mode 100644 index 0000000..e96c714 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java @@ -0,0 +1,212 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ExportDocker { + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + private @Nullable Map annotations; + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return The local export path. + * + */ + private @Nullable String dest; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + private @Nullable List names; + /** + * @return Use OCI media types in exporter manifests. + * + */ + private @Nullable Boolean ociMediaTypes; + /** + * @return Bundle the output into a tarball layout. + * + */ + private @Nullable Boolean tar; + + private ExportDocker() {} + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Map annotations() { + return this.annotations == null ? Map.of() : this.annotations; + } + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return The local export path. + * + */ + public Optional dest() { + return Optional.ofNullable(this.dest); + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public List names() { + return this.names == null ? List.of() : this.names; + } + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + /** + * @return Bundle the output into a tarball layout. + * + */ + public Optional tar() { + return Optional.ofNullable(this.tar); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportDocker defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map annotations; + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private @Nullable String dest; + private @Nullable Boolean forceCompression; + private @Nullable List names; + private @Nullable Boolean ociMediaTypes; + private @Nullable Boolean tar; + public Builder() {} + public Builder(ExportDocker defaults) { + Objects.requireNonNull(defaults); + this.annotations = defaults.annotations; + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.dest = defaults.dest; + this.forceCompression = defaults.forceCompression; + this.names = defaults.names; + this.ociMediaTypes = defaults.ociMediaTypes; + this.tar = defaults.tar; + } + + @CustomType.Setter + public Builder annotations(@Nullable Map annotations) { + + this.annotations = annotations; + return this; + } + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder dest(@Nullable String dest) { + + this.dest = dest; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder names(@Nullable List names) { + + this.names = names; + return this; + } + public Builder names(String... names) { + return names(List.of(names)); + } + @CustomType.Setter + public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { + + this.ociMediaTypes = ociMediaTypes; + return this; + } + @CustomType.Setter + public Builder tar(@Nullable Boolean tar) { + + this.tar = tar; + return this; + } + public ExportDocker build() { + final var _resultValue = new ExportDocker(); + _resultValue.annotations = annotations; + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.dest = dest; + _resultValue.forceCompression = forceCompression; + _resultValue.names = names; + _resultValue.ociMediaTypes = ociMediaTypes; + _resultValue.tar = tar; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java new file mode 100644 index 0000000..b18459d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java @@ -0,0 +1,331 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ExportImage { + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + private @Nullable Map annotations; + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + private @Nullable String danglingNamePrefix; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Allow pushing to an insecure registry. + * + */ + private @Nullable Boolean insecure; + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + private @Nullable Boolean nameCanonical; + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + private @Nullable List names; + /** + * @return Use OCI media types in exporter manifests. + * + */ + private @Nullable Boolean ociMediaTypes; + /** + * @return Push after creating the image. Defaults to `false`. + * + */ + private @Nullable Boolean push; + /** + * @return Push image without name. + * + */ + private @Nullable Boolean pushByDigest; + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + private @Nullable Boolean store; + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + private @Nullable Boolean unpack; + + private ExportImage() {} + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Map annotations() { + return this.annotations == null ? Map.of() : this.annotations; + } + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + public Optional danglingNamePrefix() { + return Optional.ofNullable(this.danglingNamePrefix); + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Allow pushing to an insecure registry. + * + */ + public Optional insecure() { + return Optional.ofNullable(this.insecure); + } + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + public Optional nameCanonical() { + return Optional.ofNullable(this.nameCanonical); + } + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public List names() { + return this.names == null ? List.of() : this.names; + } + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + /** + * @return Push after creating the image. Defaults to `false`. + * + */ + public Optional push() { + return Optional.ofNullable(this.push); + } + /** + * @return Push image without name. + * + */ + public Optional pushByDigest() { + return Optional.ofNullable(this.pushByDigest); + } + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + public Optional store() { + return Optional.ofNullable(this.store); + } + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + public Optional unpack() { + return Optional.ofNullable(this.unpack); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportImage defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map annotations; + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private @Nullable String danglingNamePrefix; + private @Nullable Boolean forceCompression; + private @Nullable Boolean insecure; + private @Nullable Boolean nameCanonical; + private @Nullable List names; + private @Nullable Boolean ociMediaTypes; + private @Nullable Boolean push; + private @Nullable Boolean pushByDigest; + private @Nullable Boolean store; + private @Nullable Boolean unpack; + public Builder() {} + public Builder(ExportImage defaults) { + Objects.requireNonNull(defaults); + this.annotations = defaults.annotations; + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.danglingNamePrefix = defaults.danglingNamePrefix; + this.forceCompression = defaults.forceCompression; + this.insecure = defaults.insecure; + this.nameCanonical = defaults.nameCanonical; + this.names = defaults.names; + this.ociMediaTypes = defaults.ociMediaTypes; + this.push = defaults.push; + this.pushByDigest = defaults.pushByDigest; + this.store = defaults.store; + this.unpack = defaults.unpack; + } + + @CustomType.Setter + public Builder annotations(@Nullable Map annotations) { + + this.annotations = annotations; + return this; + } + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder danglingNamePrefix(@Nullable String danglingNamePrefix) { + + this.danglingNamePrefix = danglingNamePrefix; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder insecure(@Nullable Boolean insecure) { + + this.insecure = insecure; + return this; + } + @CustomType.Setter + public Builder nameCanonical(@Nullable Boolean nameCanonical) { + + this.nameCanonical = nameCanonical; + return this; + } + @CustomType.Setter + public Builder names(@Nullable List names) { + + this.names = names; + return this; + } + public Builder names(String... names) { + return names(List.of(names)); + } + @CustomType.Setter + public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { + + this.ociMediaTypes = ociMediaTypes; + return this; + } + @CustomType.Setter + public Builder push(@Nullable Boolean push) { + + this.push = push; + return this; + } + @CustomType.Setter + public Builder pushByDigest(@Nullable Boolean pushByDigest) { + + this.pushByDigest = pushByDigest; + return this; + } + @CustomType.Setter + public Builder store(@Nullable Boolean store) { + + this.store = store; + return this; + } + @CustomType.Setter + public Builder unpack(@Nullable Boolean unpack) { + + this.unpack = unpack; + return this; + } + public ExportImage build() { + final var _resultValue = new ExportImage(); + _resultValue.annotations = annotations; + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.danglingNamePrefix = danglingNamePrefix; + _resultValue.forceCompression = forceCompression; + _resultValue.insecure = insecure; + _resultValue.nameCanonical = nameCanonical; + _resultValue.names = names; + _resultValue.ociMediaTypes = ociMediaTypes; + _resultValue.push = push; + _resultValue.pushByDigest = pushByDigest; + _resultValue.store = store; + _resultValue.unpack = unpack; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java new file mode 100644 index 0000000..c09cc50 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ExportLocal { + /** + * @return Output path. + * + */ + private String dest; + + private ExportLocal() {} + /** + * @return Output path. + * + */ + public String dest() { + return this.dest; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportLocal defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String dest; + public Builder() {} + public Builder(ExportLocal defaults) { + Objects.requireNonNull(defaults); + this.dest = defaults.dest; + } + + @CustomType.Setter + public Builder dest(String dest) { + if (dest == null) { + throw new MissingRequiredPropertyException("ExportLocal", "dest"); + } + this.dest = dest; + return this; + } + public ExportLocal build() { + final var _resultValue = new ExportLocal(); + _resultValue.dest = dest; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java new file mode 100644 index 0000000..bd0d6d7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java @@ -0,0 +1,212 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ExportOCI { + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + private @Nullable Map annotations; + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return The local export path. + * + */ + private @Nullable String dest; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + private @Nullable List names; + /** + * @return Use OCI media types in exporter manifests. + * + */ + private @Nullable Boolean ociMediaTypes; + /** + * @return Bundle the output into a tarball layout. + * + */ + private @Nullable Boolean tar; + + private ExportOCI() {} + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Map annotations() { + return this.annotations == null ? Map.of() : this.annotations; + } + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return The local export path. + * + */ + public Optional dest() { + return Optional.ofNullable(this.dest); + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public List names() { + return this.names == null ? List.of() : this.names; + } + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + /** + * @return Bundle the output into a tarball layout. + * + */ + public Optional tar() { + return Optional.ofNullable(this.tar); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportOCI defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map annotations; + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private @Nullable String dest; + private @Nullable Boolean forceCompression; + private @Nullable List names; + private @Nullable Boolean ociMediaTypes; + private @Nullable Boolean tar; + public Builder() {} + public Builder(ExportOCI defaults) { + Objects.requireNonNull(defaults); + this.annotations = defaults.annotations; + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.dest = defaults.dest; + this.forceCompression = defaults.forceCompression; + this.names = defaults.names; + this.ociMediaTypes = defaults.ociMediaTypes; + this.tar = defaults.tar; + } + + @CustomType.Setter + public Builder annotations(@Nullable Map annotations) { + + this.annotations = annotations; + return this; + } + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder dest(@Nullable String dest) { + + this.dest = dest; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder names(@Nullable List names) { + + this.names = names; + return this; + } + public Builder names(String... names) { + return names(List.of(names)); + } + @CustomType.Setter + public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { + + this.ociMediaTypes = ociMediaTypes; + return this; + } + @CustomType.Setter + public Builder tar(@Nullable Boolean tar) { + + this.tar = tar; + return this; + } + public ExportOCI build() { + final var _resultValue = new ExportOCI(); + _resultValue.annotations = annotations; + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.dest = dest; + _resultValue.forceCompression = forceCompression; + _resultValue.names = names; + _resultValue.ociMediaTypes = ociMediaTypes; + _resultValue.tar = tar; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java new file mode 100644 index 0000000..50dea1b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java @@ -0,0 +1,331 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dockerbuild.enums.CompressionType; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ExportRegistry { + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + private @Nullable Map annotations; + /** + * @return The compression type to use. + * + */ + private @Nullable CompressionType compression; + /** + * @return Compression level from 0 to 22. + * + */ + private @Nullable Integer compressionLevel; + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + private @Nullable String danglingNamePrefix; + /** + * @return Forcefully apply compression. + * + */ + private @Nullable Boolean forceCompression; + /** + * @return Allow pushing to an insecure registry. + * + */ + private @Nullable Boolean insecure; + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + private @Nullable Boolean nameCanonical; + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + private @Nullable List names; + /** + * @return Use OCI media types in exporter manifests. + * + */ + private @Nullable Boolean ociMediaTypes; + /** + * @return Push after creating the image. Defaults to `true`. + * + */ + private @Nullable Boolean push; + /** + * @return Push image without name. + * + */ + private @Nullable Boolean pushByDigest; + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + private @Nullable Boolean store; + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + private @Nullable Boolean unpack; + + private ExportRegistry() {} + /** + * @return Attach an arbitrary key/value annotation to the image. + * + */ + public Map annotations() { + return this.annotations == null ? Map.of() : this.annotations; + } + /** + * @return The compression type to use. + * + */ + public Optional compression() { + return Optional.ofNullable(this.compression); + } + /** + * @return Compression level from 0 to 22. + * + */ + public Optional compressionLevel() { + return Optional.ofNullable(this.compressionLevel); + } + /** + * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. + * + */ + public Optional danglingNamePrefix() { + return Optional.ofNullable(this.danglingNamePrefix); + } + /** + * @return Forcefully apply compression. + * + */ + public Optional forceCompression() { + return Optional.ofNullable(this.forceCompression); + } + /** + * @return Allow pushing to an insecure registry. + * + */ + public Optional insecure() { + return Optional.ofNullable(this.insecure); + } + /** + * @return Add additional canonical name (`name{@literal @}<digest>`). + * + */ + public Optional nameCanonical() { + return Optional.ofNullable(this.nameCanonical); + } + /** + * @return Specify images names to export. This is overridden if tags are already specified. + * + */ + public List names() { + return this.names == null ? List.of() : this.names; + } + /** + * @return Use OCI media types in exporter manifests. + * + */ + public Optional ociMediaTypes() { + return Optional.ofNullable(this.ociMediaTypes); + } + /** + * @return Push after creating the image. Defaults to `true`. + * + */ + public Optional push() { + return Optional.ofNullable(this.push); + } + /** + * @return Push image without name. + * + */ + public Optional pushByDigest() { + return Optional.ofNullable(this.pushByDigest); + } + /** + * @return Store resulting images to the worker's image store and ensure all of + * its blobs are in the content store. + * + * Defaults to `true`. + * + * Ignored if the worker doesn't have image store (when using OCI workers, + * for example). + * + */ + public Optional store() { + return Optional.ofNullable(this.store); + } + /** + * @return Unpack image after creation (for use with containerd). Defaults to + * `false`. + * + */ + public Optional unpack() { + return Optional.ofNullable(this.unpack); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportRegistry defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Map annotations; + private @Nullable CompressionType compression; + private @Nullable Integer compressionLevel; + private @Nullable String danglingNamePrefix; + private @Nullable Boolean forceCompression; + private @Nullable Boolean insecure; + private @Nullable Boolean nameCanonical; + private @Nullable List names; + private @Nullable Boolean ociMediaTypes; + private @Nullable Boolean push; + private @Nullable Boolean pushByDigest; + private @Nullable Boolean store; + private @Nullable Boolean unpack; + public Builder() {} + public Builder(ExportRegistry defaults) { + Objects.requireNonNull(defaults); + this.annotations = defaults.annotations; + this.compression = defaults.compression; + this.compressionLevel = defaults.compressionLevel; + this.danglingNamePrefix = defaults.danglingNamePrefix; + this.forceCompression = defaults.forceCompression; + this.insecure = defaults.insecure; + this.nameCanonical = defaults.nameCanonical; + this.names = defaults.names; + this.ociMediaTypes = defaults.ociMediaTypes; + this.push = defaults.push; + this.pushByDigest = defaults.pushByDigest; + this.store = defaults.store; + this.unpack = defaults.unpack; + } + + @CustomType.Setter + public Builder annotations(@Nullable Map annotations) { + + this.annotations = annotations; + return this; + } + @CustomType.Setter + public Builder compression(@Nullable CompressionType compression) { + + this.compression = compression; + return this; + } + @CustomType.Setter + public Builder compressionLevel(@Nullable Integer compressionLevel) { + + this.compressionLevel = compressionLevel; + return this; + } + @CustomType.Setter + public Builder danglingNamePrefix(@Nullable String danglingNamePrefix) { + + this.danglingNamePrefix = danglingNamePrefix; + return this; + } + @CustomType.Setter + public Builder forceCompression(@Nullable Boolean forceCompression) { + + this.forceCompression = forceCompression; + return this; + } + @CustomType.Setter + public Builder insecure(@Nullable Boolean insecure) { + + this.insecure = insecure; + return this; + } + @CustomType.Setter + public Builder nameCanonical(@Nullable Boolean nameCanonical) { + + this.nameCanonical = nameCanonical; + return this; + } + @CustomType.Setter + public Builder names(@Nullable List names) { + + this.names = names; + return this; + } + public Builder names(String... names) { + return names(List.of(names)); + } + @CustomType.Setter + public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { + + this.ociMediaTypes = ociMediaTypes; + return this; + } + @CustomType.Setter + public Builder push(@Nullable Boolean push) { + + this.push = push; + return this; + } + @CustomType.Setter + public Builder pushByDigest(@Nullable Boolean pushByDigest) { + + this.pushByDigest = pushByDigest; + return this; + } + @CustomType.Setter + public Builder store(@Nullable Boolean store) { + + this.store = store; + return this; + } + @CustomType.Setter + public Builder unpack(@Nullable Boolean unpack) { + + this.unpack = unpack; + return this; + } + public ExportRegistry build() { + final var _resultValue = new ExportRegistry(); + _resultValue.annotations = annotations; + _resultValue.compression = compression; + _resultValue.compressionLevel = compressionLevel; + _resultValue.danglingNamePrefix = danglingNamePrefix; + _resultValue.forceCompression = forceCompression; + _resultValue.insecure = insecure; + _resultValue.nameCanonical = nameCanonical; + _resultValue.names = names; + _resultValue.ociMediaTypes = ociMediaTypes; + _resultValue.push = push; + _resultValue.pushByDigest = pushByDigest; + _resultValue.store = store; + _resultValue.unpack = unpack; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java new file mode 100644 index 0000000..44dd20b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ExportTar { + /** + * @return Output path. + * + */ + private String dest; + + private ExportTar() {} + /** + * @return Output path. + * + */ + public String dest() { + return this.dest; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ExportTar defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String dest; + public Builder() {} + public Builder(ExportTar defaults) { + Objects.requireNonNull(defaults); + this.dest = defaults.dest; + } + + @CustomType.Setter + public Builder dest(String dest) { + if (dest == null) { + throw new MissingRequiredPropertyException("ExportTar", "dest"); + } + this.dest = dest; + return this; + } + public ExportTar build() { + final var _resultValue = new ExportTar(); + _resultValue.dest = dest; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java new file mode 100644 index 0000000..f1853fc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java @@ -0,0 +1,102 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class Registry { + /** + * @return The registry's address (e.g. "docker.io"). + * + */ + private String address; + /** + * @return Password or token for the registry. + * + */ + private @Nullable String password; + /** + * @return Username for the registry. + * + */ + private @Nullable String username; + + private Registry() {} + /** + * @return The registry's address (e.g. "docker.io"). + * + */ + public String address() { + return this.address; + } + /** + * @return Password or token for the registry. + * + */ + public Optional password() { + return Optional.ofNullable(this.password); + } + /** + * @return Username for the registry. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Registry defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String address; + private @Nullable String password; + private @Nullable String username; + public Builder() {} + public Builder(Registry defaults) { + Objects.requireNonNull(defaults); + this.address = defaults.address; + this.password = defaults.password; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder address(String address) { + if (address == null) { + throw new MissingRequiredPropertyException("Registry", "address"); + } + this.address = address; + return this; + } + @CustomType.Setter + public Builder password(@Nullable String password) { + + this.password = password; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public Registry build() { + final var _resultValue = new Registry(); + _resultValue.address = address; + _resultValue.password = password; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java new file mode 100644 index 0000000..48bcf4c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dockerbuild.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class SSH { + /** + * @return Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + */ + private String id; + /** + * @return SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + */ + private @Nullable List paths; + + private SSH() {} + /** + * @return Useful for distinguishing different servers that are part of the same + * build. + * + * A value of `default` is appropriate if only dealing with a single host. + * + */ + public String id() { + return this.id; + } + /** + * @return SSH agent socket or private keys to expose to the build under the given + * identifier. + * + * Defaults to `[$SSH_AUTH_SOCK]`. + * + * Note that your keys are **not** automatically added when using an + * agent. Run `ssh-add -l` locally to confirm which public keys are + * visible to the agent; these will be exposed to your build. + * + */ + public List paths() { + return this.paths == null ? List.of() : this.paths; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SSH defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + private @Nullable List paths; + public Builder() {} + public Builder(SSH defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + this.paths = defaults.paths; + } + + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("SSH", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder paths(@Nullable List paths) { + + this.paths = paths; + return this; + } + public Builder paths(String... paths) { + return paths(List.of(paths)); + } + public SSH build() { + final var _resultValue = new SSH(); + _resultValue.id = id; + _resultValue.paths = paths; + return _resultValue; + } + } +}