import { GitProject } from "@atomist/automation-client"; import { FulfillableGoalDetails, FulfillableGoalWithRegistrations, Goal, ImplementationRegistration } from "@atomist/sdm"; import { DockerImageNameCreator } from "./executeDockerBuild"; export interface DockerRegistry { /** * Push Url for this registry */ registry: string; /** * Should this registry be displayed with the goal status after a push? Default true. */ display?: boolean; /** * Display Url - ie the url humans can go to * assumes / */ displayUrl?: string; /** * If specified, this will replace the label version details (eg <:version>) * For example, for Dockerhub the correct value would be `/tags`, with a displayUrl set * to https://hub.docker.com/r/; will result in: * https://hub.docker.com/r///tags as the link URL * */ displayBrowsePath?: string; /** * How should urls to this registry be labeled? * ie DockerHub, ECR, etc (friendly name instead of big tag string) * if not supplied, we'll display the tag */ label?: string; user?: string; password?: string; } /** * Options to configure the Docker image build */ export interface DockerOptions extends Partial { /** * Provide the image tag for the docker image to build */ dockerImageNameCreator?: DockerImageNameCreator; /** * True if the docker image should be pushed to the registry */ push?: boolean; /** * True if pushes should happen concurrently */ concurrentPush?: boolean; /** * Optional registries to push the docker image too. * Needs to set when push === true */ registry?: DockerRegistry | DockerRegistry[]; /** * Optional Docker config in json as alternative to running * 'docker login' with provided registry, user and password. */ config?: string; /** * Find the Dockerfile within the project * @param p the project */ dockerfileFinder?: (p: GitProject) => Promise; /** * Optionally specify what docker image builder to use. * Defaults to "docker" */ builder?: "docker" | "kaniko"; /** * Optional arguments passed to the docker image builder */ builderArgs?: string[]; /** * Path relative to base of project to build. If not provided, * ".", i.e., the project base directory, is used. */ builderPath?: string; } /** * Goal that performs docker build and push depending on the provided options */ export declare class DockerBuild extends FulfillableGoalWithRegistrations { private readonly goalDetailsOrUniqueName; constructor(goalDetailsOrUniqueName?: FulfillableGoalDetails | string, ...dependsOn: Goal[]); with(registration: DockerOptions): this; }