Compare commits

...

23 Commits

Author SHA1 Message Date
Bryce Lampe
5f16c2f2fa Fix unauthenticated example 2024-04-25 10:13:52 -07:00
Bryce Lampe
9d35ccefac Regenerate SDKs 2024-04-25 09:58:30 -07:00
Bryce Lampe
13fb5b6158 Update examples and docs for required push 2024-04-25 09:51:24 -07:00
Bryce Lampe
f8796f9095 Make push a required param 2024-04-25 09:25:50 -07:00
Bryce Lampe
5175dbeb3f Add an upgrade test 2024-04-25 09:22:20 -07:00
Bryce Lampe
2499eeb27b Don't tidy 2024-04-23 09:33:42 -07:00
Bryce Lampe
5135d9c759 Update preview docs 2024-04-23 09:13:42 -07:00
Bryce Lampe
f5e57ab70c Merge branch 'main' of github.com:pulumi/pulumi-docker-build into forklift 2024-04-22 16:29:36 -07:00
Bryce Lampe
2987a65183 Fix diff behavior for buildOnPreview 2024-04-22 16:28:45 -07:00
Bryce Lampe
fbc4ddec66 Regenerate schema 2024-04-22 16:05:51 -07:00
Bryce Lampe
40a3223b23 Build images during preview by default 2024-04-22 16:04:01 -07:00
Bryce Lampe
72bd40b97c Add note about stability and tweak index docs 2024-04-22 15:57:02 -07:00
Bryce Lampe
a6247a78b1 Update README 2024-04-22 13:52:59 -07:00
Bryce Lampe
7597ca32ca Fix host auth key format 2024-04-22 12:44:24 -07:00
Bryce Lampe
0f23201468 Extend cli auth wrap test 2024-04-22 12:34:20 -07:00
Bryce Lampe
d72c895b59 Add a test for unauthenticated dockerhub pulls 2024-04-22 12:17:37 -07:00
Bryce Lampe
da63cd4cf4 Fix target docs 2024-04-22 12:04:35 -07:00
Bryce Lampe
561b185221 Don't log empty status or errors 2024-04-22 11:22:36 -07:00
Bryce Lampe
50b9b5ce3e Upgrade go-provider to fix panic 2024-04-22 11:22:00 -07:00
Bryce Lampe
bcf1c48554 More renames 2024-04-19 16:29:31 -07:00
Pulumi Bot
2545dd3089 Update GitHub Actions workflows. (#33)
This PR was automatically generated by the
update-native-provider-workflows workflow in the pulumi/ci-mgmt repo,
from commit 0f215352010902e51d20ed66185ecb6f5a403245.
2024-04-18 22:03:49 -07:00
Bryce Lampe
40f5fdf15e Test version 2024-04-18 10:08:12 -07:00
Pulumi Bot
c6ebf2c6ca Update GitHub Actions workflows. (#30)
This PR was automatically generated by the
update-native-provider-workflows workflow in the pulumi/ci-mgmt repo,
from commit 65ba487d5688115d8b9c8533c384953f66342fc6.
2024-04-17 22:03:35 -07:00
79 changed files with 2723 additions and 1269 deletions

View File

@@ -8,8 +8,6 @@ updates:
pulumi: pulumi:
patterns: patterns:
- "github.com/pulumi/*" - "github.com/pulumi/*"
exclude-patterns:
- "k8s.io/utils"
labels: labels:
- dependencies - dependencies
- impact/no-changelog-required - impact/no-changelog-required

View File

@@ -75,6 +75,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -172,6 +173,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -267,6 +269,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -379,6 +382,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Clear GitHub Actions Ubuntu runner disk space - name: Clear GitHub Actions Ubuntu runner disk space
uses: jlumbroso/free-disk-space@v1.3.1 uses: jlumbroso/free-disk-space@v1.3.1
with: with:
@@ -439,6 +443,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -517,6 +522,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -562,6 +568,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: golangci-lint provider pkg - name: golangci-lint provider pkg
uses: golangci/golangci-lint-action@v4 uses: golangci/golangci-lint-action@v4
with: with:

View File

@@ -67,6 +67,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -164,6 +165,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -258,6 +260,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -370,6 +373,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Clear GitHub Actions Ubuntu runner disk space - name: Clear GitHub Actions Ubuntu runner disk space
uses: jlumbroso/free-disk-space@v1.3.1 uses: jlumbroso/free-disk-space@v1.3.1
with: with:
@@ -430,6 +434,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -508,6 +513,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:

View File

@@ -67,6 +67,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -164,6 +165,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -258,6 +260,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -370,6 +373,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Clear GitHub Actions Ubuntu runner disk space - name: Clear GitHub Actions Ubuntu runner disk space
uses: jlumbroso/free-disk-space@v1.3.1 uses: jlumbroso/free-disk-space@v1.3.1
with: with:
@@ -430,6 +434,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -508,6 +513,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:

View File

@@ -92,6 +92,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -192,6 +193,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -290,6 +292,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:
@@ -412,6 +415,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: golangci-lint provider pkg - name: golangci-lint provider pkg
uses: golangci/golangci-lint-action@v4 uses: golangci/golangci-lint-action@v4
with: with:

View File

@@ -60,6 +60,7 @@ jobs:
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: ${{ env.GOVERSION }} go-version: ${{ env.GOVERSION }}
cache-dependency-path: "**/*.sum"
- name: Install pulumictl - name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.11.0 uses: jaxxstorm/action-install-gh-release@v1.11.0
with: with:

View File

@@ -18,6 +18,7 @@ builds:
ldflags: ldflags:
- -X - -X
github.com/pulumi/pulumi-docker-build/provider/pkg/version.Version={{.Tag}} github.com/pulumi/pulumi-docker-build/provider/pkg/version.Version={{.Tag}}
- -X github.com/pulumi/pulumi-docker-build/provider.Version={{.Tag}}
binary: pulumi-resource-docker-build binary: pulumi-resource-docker-build
archives: archives:
- name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}" - name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}"

View File

@@ -18,6 +18,7 @@ builds:
ldflags: ldflags:
- -X - -X
github.com/pulumi/pulumi-docker-build/provider/pkg/version.Version={{.Tag}} github.com/pulumi/pulumi-docker-build/provider/pkg/version.Version={{.Tag}}
- -X github.com/pulumi/pulumi-docker-build/provider.Version={{.Tag}}
binary: pulumi-resource-docker-build binary: pulumi-resource-docker-build
archives: archives:
- name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}" - name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}"

View File

@@ -25,7 +25,8 @@ GOGLANGCILINT := bin/golangci-lint
ensure:: tidy lint test_provider examples ensure:: tidy lint test_provider examples
.PHONY: tidy .PHONY: tidy
tidy: go.sum tidy:
go mod tidy
.PHONY: provider .PHONY: provider
provider: bin/${PROVIDER} bin/pulumi-gen-${PACK} # Required by CI provider: bin/${PROVIDER} bin/pulumi-gen-${PACK} # Required by CI
@@ -179,7 +180,6 @@ bin/pulumi-gen-${PACK}: # Required by CI
go.mod: $(shell find . -name '*.go') go.mod: $(shell find . -name '*.go')
go.sum: go.mod go.sum: go.mod
go mod tidy
sdk: $(shell mkdir -p sdk) sdk: $(shell mkdir -p sdk)
sdk: sdk/python sdk/nodejs sdk/java sdk/python sdk/go sdk/dotnet sdk: sdk/python sdk/nodejs sdk/java sdk/python sdk/go sdk/dotnet
@@ -243,6 +243,6 @@ sdk/java: $(PULUMI) bin/${PROVIDER}
cd ${TMPDIR}/java/ && gradle --console=plain build cd ${TMPDIR}/java/ && gradle --console=plain build
mv -f ${TMPDIR}/java ${WORKING_DIR}/sdk/. mv -f ${TMPDIR}/java ${WORKING_DIR}/sdk/.
docs: $(shell find docs/yaml -type f) $(shell find ./provider/internal/embed -name '*.md') docs: $(shell find docs/yaml -type f) $(shell find ./provider/internal/embed -name '*.md') ${SCHEMA_PATH}
go generate docs/generate.go go generate docs/generate.go
@touch docs @touch docs

117
README.md
View File

@@ -1,106 +1,23 @@
# Pulumi Native Provider Boilerplate [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
[![NPM version](https://badge.fury.io/js/%40pulumi%2fdocker-build.svg)](https://www.npmjs.com/package/@pulumi/docker-build)
[![Python version](https://badge.fury.io/py/pulumi-docker-build.svg)](https://pypi.org/project/pulumi-docker-build)
[![NuGet version](https://badge.fury.io/nu/pulumi.dockerbuild.svg)](https://badge.fury.io/nu/pulumi.dockerbuild)
[![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-docker-build/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-docker-build/sdk/go)
[![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-docker-build/blob/main/LICENSE)
This repository is a boilerplate showing how to create and locally test a native Pulumi provider. # Docker-Build Resource Provider
## Authoring a Pulumi Native Provider A [Pulumi](http://pulumi.com) provider for building modern Docker images with [buildx](https://docs.docker.com/build/architecture/) and [BuildKit](https://docs.docker.com/build/buildkit/).
This boilerplate creates a working Pulumi-owned provider named `xyz`. Not to be confused with the earlier
It implements a random number generator that you can [build and test out for yourself](#test-against-the-example) and then replace the Random code with code specific to your provider. [Docker](http://github.com/pulumi/pulumi-docker) provider, which is still
appropriate for managing resources unrelated to building images.
| Provider | Use cases |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `@pulumi/docker-build` | Anything related to building images with `docker build`. |
| `@pulumi/docker` | Everything else -- including running containers and creating networks. |
### Prerequisites ## Reference
Prerequisites for this repository are already satisfied by the [Pulumi Devcontainer](https://github.com/pulumi/devcontainer) if you are using Github Codespaces, or VSCode. For more information, including examples and migration guidance, please see the Docker-Build provider's detailed [API documentation](https://www.pulumi.com/registry/packages/docker-build/).
If you are not using VSCode, you will need to ensure the following tools are installed and present in your `$PATH`:
* [`pulumictl`](https://github.com/pulumi/pulumictl#installation)
* [Go 1.21](https://golang.org/dl/) or 1.latest
* [NodeJS](https://nodejs.org/en/) 14.x. We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.
* [Yarn](https://yarnpkg.com/)
* [TypeScript](https://www.typescriptlang.org/)
* [Python](https://www.python.org/downloads/) (called as `python3`). For recent versions of MacOS, the system-installed version is fine.
* [.NET](https://dotnet.microsoft.com/download)
### Build & test the boilerplate XYZ provider
1. Create a new Github CodeSpaces environment using this repository.
1. Open a terminal in the CodeSpaces environment.
1. Run `make build install` to build and install the provider.
1. Run `make gen_examples` to generate the example programs in `examples/` off of the source `examples/yaml` example program.
1. Run `make up` to run the example program in `examples/yaml`.
1. Run `make down` to tear down the example program.
### Creating a new provider repository
Pulumi offers this repository as a [GitHub template repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template) for convenience. From this repository:
1. Click "Use this template".
1. Set the following options:
* Owner: pulumi
* Repository name: pulumi-xyz-native (replace "xyz" with the name of your provider)
* Description: Pulumi provider for xyz
* Repository type: Public
1. Clone the generated repository.
From the templated repository:
1. Search-replace `xyz` with the name of your desired provider.
#### Build the provider and install the plugin
```bash
$ make build install
```
This will:
1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored)
2. Create the provider binary and place it in the `./bin` folder (gitignored)
3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder
4. Install the provider on your machine.
#### Test against the example
```bash
$ cd examples/simple
$ yarn link @pulumi/xyz
$ yarn install
$ pulumi stack init test
$ pulumi up
```
Now that you have completed all of the above steps, you have a working provider that generates a random string for you.
#### A brief repository overview
You now have:
1. A `provider/` folder containing the building and implementation logic
1. `cmd/pulumi-resource-xyz/main.go` - holds the provider's sample implementation logic.
2. `deployment-templates` - a set of files to help you around deployment and publication
3. `sdk` - holds the generated code libraries created by `pulumi-gen-xyz/main.go`
4. `examples` a folder of Pulumi programs to try locally and/or use in CI.
5. A `Makefile` and this `README`.
#### Additional Details
This repository depends on the pulumi-go-provider library. For more details on building providers, please check
the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider).
### Build Examples
Create an example program using the resources defined in your provider, and place it in the `examples/` folder.
You can now repeat the steps for [build, install, and test](#test-against-the-example).
## Configuring CI and releases
1. Follow the instructions laid out in the [deployment templates](./deployment-templates/README-DEPLOYMENT.md).
## References
Other resources/examples for implementing providers:
* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go)
* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider)

View File

@@ -6,7 +6,7 @@ resources:
ecr-repository: ecr-repository:
type: aws:ecr:Repository type: aws:ecr:Repository
my-image: my-image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
tags: tags:
- ${ecr-repository.repositoryUrl}:latest - ${ecr-repository.repositoryUrl}:latest
@@ -36,20 +36,21 @@ runtime: yaml
description: Multi-platform image description: Multi-platform image
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
platforms: platforms:
- plan9/amd64 - plan9/amd64
- plan9/386 - plan9/386
push: false
--- ---
name: registry name: registry
runtime: yaml runtime: yaml
description: Registry export description: Registry export
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
tags: tags:
- "docker.io/pulumi/pulumi:3.107.0" - "docker.io/pulumi/pulumi:3.107.0"
@@ -68,7 +69,7 @@ runtime: yaml
description: Caching description: Caching
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
@@ -79,65 +80,71 @@ resources:
cacheFrom: cacheFrom:
- local: - local:
src: tmp/cache src: tmp/cache
push: false
--- ---
name: dbc name: dbc
runtime: yaml runtime: yaml
description: Docker Build Cloud description: Docker Build Cloud
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
exec: true exec: true
builder: builder:
name: cloud-builder-name name: cloud-builder-name
push: false
--- ---
name: build-args name: build-args
runtime: yaml runtime: yaml
description: Build arguments description: Build arguments
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
buildArgs: buildArgs:
SET_ME_TO_TRUE: "true" SET_ME_TO_TRUE: "true"
push: false
--- ---
name: build-target name: build-target
runtime: yaml runtime: yaml
description: Build target description: Build target
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
target: "build-me" target: "build-me"
push: false
--- ---
name: named-contexts name: named-contexts
runtime: yaml runtime: yaml
description: Named contexts description: Named contexts
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: app location: app
named: named:
"golang:latest": "golang:latest":
location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984" location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"
push: false
--- ---
name: remote-context name: remote-context
runtime: yaml runtime: yaml
description: Remote context description: Remote context
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile" location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"
push: false
--- ---
name: inline name: inline
@@ -145,7 +152,7 @@ runtime: yaml
description: Inline Dockerfile description: Inline Dockerfile
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
dockerfile: dockerfile:
inline: | inline: |
@@ -153,28 +160,31 @@ resources:
COPY hello.c ./ COPY hello.c ./
context: context:
location: "app" location: "app"
push: false
--- ---
name: remote-context name: remote-context
runtime: yaml runtime: yaml
description: Remote context description: Remote context
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
dockerfile: dockerfile:
location: app/Dockerfile location: app/Dockerfile
context: context:
location: "https://github.com/docker-library/hello-world.git" location: "https://github.com/docker-library/hello-world.git"
push: false
--- ---
name: docker-load name: docker-load
runtime: yaml runtime: yaml
description: Local export description: Local export
resources: resources:
image: image:
type: dockerbuild:Image type: docker-build:Image
properties: properties:
context: context:
location: "app" location: "app"
exports: exports:
- docker: - docker:
tar: true tar: true
push: false

View File

@@ -9,6 +9,7 @@ return await Deployment.RunAsync(() =>
var dockerHubPassword = config.Require("dockerHubPassword"); var dockerHubPassword = config.Require("dockerHubPassword");
var multiPlatform = new DockerBuild.Image("multiPlatform", new() var multiPlatform = new DockerBuild.Image("multiPlatform", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.multiPlatform", Location = "./app/Dockerfile.multiPlatform",
@@ -26,6 +27,7 @@ return await Deployment.RunAsync(() =>
var registryPush = new DockerBuild.Image("registryPush", new() var registryPush = new DockerBuild.Image("registryPush", new()
{ {
Push = false,
Context = new DockerBuild.Inputs.BuildContextArgs Context = new DockerBuild.Inputs.BuildContextArgs
{ {
Location = "./app", Location = "./app",
@@ -58,6 +60,7 @@ return await Deployment.RunAsync(() =>
var cached = new DockerBuild.Image("cached", new() var cached = new DockerBuild.Image("cached", new()
{ {
Push = false,
Context = new DockerBuild.Inputs.BuildContextArgs Context = new DockerBuild.Inputs.BuildContextArgs
{ {
Location = "./app", Location = "./app",
@@ -87,6 +90,7 @@ return await Deployment.RunAsync(() =>
var buildArgs = new DockerBuild.Image("buildArgs", new() var buildArgs = new DockerBuild.Image("buildArgs", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.buildArgs", Location = "./app/Dockerfile.buildArgs",
@@ -103,6 +107,7 @@ return await Deployment.RunAsync(() =>
var extraHosts = new DockerBuild.Image("extraHosts", new() var extraHosts = new DockerBuild.Image("extraHosts", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.extraHosts", Location = "./app/Dockerfile.extraHosts",
@@ -119,6 +124,7 @@ return await Deployment.RunAsync(() =>
var sshMount = new DockerBuild.Image("sshMount", new() var sshMount = new DockerBuild.Image("sshMount", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.sshMount", Location = "./app/Dockerfile.sshMount",
@@ -138,6 +144,7 @@ return await Deployment.RunAsync(() =>
var secrets = new DockerBuild.Image("secrets", new() var secrets = new DockerBuild.Image("secrets", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.secrets", Location = "./app/Dockerfile.secrets",
@@ -154,6 +161,7 @@ return await Deployment.RunAsync(() =>
var labels = new DockerBuild.Image("labels", new() var labels = new DockerBuild.Image("labels", new()
{ {
Push = false,
Context = new DockerBuild.Inputs.BuildContextArgs Context = new DockerBuild.Inputs.BuildContextArgs
{ {
Location = "./app", Location = "./app",
@@ -166,6 +174,7 @@ return await Deployment.RunAsync(() =>
var target = new DockerBuild.Image("target", new() var target = new DockerBuild.Image("target", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.target", Location = "./app/Dockerfile.target",
@@ -179,6 +188,7 @@ return await Deployment.RunAsync(() =>
var namedContexts = new DockerBuild.Image("namedContexts", new() var namedContexts = new DockerBuild.Image("namedContexts", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Location = "./app/Dockerfile.namedContexts", Location = "./app/Dockerfile.namedContexts",
@@ -198,6 +208,7 @@ return await Deployment.RunAsync(() =>
var remoteContext = new DockerBuild.Image("remoteContext", new() var remoteContext = new DockerBuild.Image("remoteContext", new()
{ {
Push = false,
Context = new DockerBuild.Inputs.BuildContextArgs Context = new DockerBuild.Inputs.BuildContextArgs
{ {
Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
@@ -206,6 +217,7 @@ return await Deployment.RunAsync(() =>
var remoteContextWithInline = new DockerBuild.Image("remoteContextWithInline", new() var remoteContextWithInline = new DockerBuild.Image("remoteContextWithInline", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Inline = @"FROM busybox Inline = @"FROM busybox
@@ -220,6 +232,7 @@ COPY hello.c ./
var inline = new DockerBuild.Image("inline", new() var inline = new DockerBuild.Image("inline", new()
{ {
Push = false,
Dockerfile = new DockerBuild.Inputs.DockerfileArgs Dockerfile = new DockerBuild.Inputs.DockerfileArgs
{ {
Inline = @"FROM alpine Inline = @"FROM alpine
@@ -234,6 +247,7 @@ RUN echo ""This uses an inline Dockerfile! 👍""
var dockerLoad = new DockerBuild.Image("dockerLoad", new() var dockerLoad = new DockerBuild.Image("dockerLoad", new()
{ {
Push = false,
Context = new DockerBuild.Inputs.BuildContextArgs Context = new DockerBuild.Inputs.BuildContextArgs
{ {
Location = "./app", Location = "./app",

View File

@@ -11,6 +11,7 @@ func main() {
cfg := config.New(ctx, "") cfg := config.New(ctx, "")
dockerHubPassword := cfg.Require("dockerHubPassword") dockerHubPassword := cfg.Require("dockerHubPassword")
multiPlatform, err := dockerbuild.NewImage(ctx, "multiPlatform", &dockerbuild.ImageArgs{ multiPlatform, err := dockerbuild.NewImage(ctx, "multiPlatform", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.multiPlatform"), Location: pulumi.String("./app/Dockerfile.multiPlatform"),
}, },
@@ -26,6 +27,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "registryPush", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "registryPush", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Context: &dockerbuild.BuildContextArgs{ Context: &dockerbuild.BuildContextArgs{
Location: pulumi.String("./app"), Location: pulumi.String("./app"),
}, },
@@ -52,6 +54,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "cached", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "cached", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Context: &dockerbuild.BuildContextArgs{ Context: &dockerbuild.BuildContextArgs{
Location: pulumi.String("./app"), Location: pulumi.String("./app"),
}, },
@@ -75,6 +78,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "buildArgs", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "buildArgs", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.buildArgs"), Location: pulumi.String("./app/Dockerfile.buildArgs"),
}, },
@@ -89,6 +93,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "extraHosts", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "extraHosts", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.extraHosts"), Location: pulumi.String("./app/Dockerfile.extraHosts"),
}, },
@@ -103,6 +108,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "sshMount", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "sshMount", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.sshMount"), Location: pulumi.String("./app/Dockerfile.sshMount"),
}, },
@@ -119,6 +125,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "secrets", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "secrets", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.secrets"), Location: pulumi.String("./app/Dockerfile.secrets"),
}, },
@@ -133,6 +140,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "labels", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "labels", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Context: &dockerbuild.BuildContextArgs{ Context: &dockerbuild.BuildContextArgs{
Location: pulumi.String("./app"), Location: pulumi.String("./app"),
}, },
@@ -144,6 +152,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "target", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "target", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.target"), Location: pulumi.String("./app/Dockerfile.target"),
}, },
@@ -156,6 +165,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "namedContexts", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "namedContexts", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Location: pulumi.String("./app/Dockerfile.namedContexts"), Location: pulumi.String("./app/Dockerfile.namedContexts"),
}, },
@@ -172,6 +182,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "remoteContext", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "remoteContext", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Context: &dockerbuild.BuildContextArgs{ Context: &dockerbuild.BuildContextArgs{
Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"),
}, },
@@ -180,6 +191,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "remoteContextWithInline", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "remoteContextWithInline", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"),
}, },
@@ -191,6 +203,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "inline", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "inline", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Dockerfile: &dockerbuild.DockerfileArgs{ Dockerfile: &dockerbuild.DockerfileArgs{
Inline: pulumi.String("FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"), Inline: pulumi.String("FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"),
}, },
@@ -202,6 +215,7 @@ func main() {
return err return err
} }
_, err = dockerbuild.NewImage(ctx, "dockerLoad", &dockerbuild.ImageArgs{ _, err = dockerbuild.NewImage(ctx, "dockerLoad", &dockerbuild.ImageArgs{
Push: pulumi.Bool(false),
Context: &dockerbuild.BuildContextArgs{ Context: &dockerbuild.BuildContextArgs{
Location: pulumi.String("./app"), Location: pulumi.String("./app"),
}, },

View File

@@ -32,6 +32,7 @@ public class App {
final var config = ctx.config(); final var config = ctx.config();
final var dockerHubPassword = config.get("dockerHubPassword"); final var dockerHubPassword = config.get("dockerHubPassword");
var multiPlatform = new Image("multiPlatform", ImageArgs.builder() var multiPlatform = new Image("multiPlatform", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.multiPlatform") .location("./app/Dockerfile.multiPlatform")
.build()) .build())
@@ -44,6 +45,7 @@ public class App {
.build()); .build());
var registryPush = new Image("registryPush", ImageArgs.builder() var registryPush = new Image("registryPush", ImageArgs.builder()
.push(false)
.context(BuildContextArgs.builder() .context(BuildContextArgs.builder()
.location("./app") .location("./app")
.build()) .build())
@@ -62,6 +64,7 @@ public class App {
.build()); .build());
var cached = new Image("cached", ImageArgs.builder() var cached = new Image("cached", ImageArgs.builder()
.push(false)
.context(BuildContextArgs.builder() .context(BuildContextArgs.builder()
.location("./app") .location("./app")
.build()) .build())
@@ -79,6 +82,7 @@ public class App {
.build()); .build());
var buildArgs = new Image("buildArgs", ImageArgs.builder() var buildArgs = new Image("buildArgs", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.buildArgs") .location("./app/Dockerfile.buildArgs")
.build()) .build())
@@ -89,6 +93,7 @@ public class App {
.build()); .build());
var extraHosts = new Image("extraHosts", ImageArgs.builder() var extraHosts = new Image("extraHosts", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.extraHosts") .location("./app/Dockerfile.extraHosts")
.build()) .build())
@@ -99,6 +104,7 @@ public class App {
.build()); .build());
var sshMount = new Image("sshMount", ImageArgs.builder() var sshMount = new Image("sshMount", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.sshMount") .location("./app/Dockerfile.sshMount")
.build()) .build())
@@ -111,6 +117,7 @@ public class App {
.build()); .build());
var secrets = new Image("secrets", ImageArgs.builder() var secrets = new Image("secrets", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.secrets") .location("./app/Dockerfile.secrets")
.build()) .build())
@@ -121,6 +128,7 @@ public class App {
.build()); .build());
var labels = new Image("labels", ImageArgs.builder() var labels = new Image("labels", ImageArgs.builder()
.push(false)
.context(BuildContextArgs.builder() .context(BuildContextArgs.builder()
.location("./app") .location("./app")
.build()) .build())
@@ -128,6 +136,7 @@ public class App {
.build()); .build());
var target = new Image("target", ImageArgs.builder() var target = new Image("target", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.target") .location("./app/Dockerfile.target")
.build()) .build())
@@ -138,6 +147,7 @@ public class App {
.build()); .build());
var namedContexts = new Image("namedContexts", ImageArgs.builder() var namedContexts = new Image("namedContexts", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.location("./app/Dockerfile.namedContexts") .location("./app/Dockerfile.namedContexts")
.build()) .build())
@@ -148,12 +158,14 @@ public class App {
.build()); .build());
var remoteContext = new Image("remoteContext", ImageArgs.builder() var remoteContext = new Image("remoteContext", ImageArgs.builder()
.push(false)
.context(BuildContextArgs.builder() .context(BuildContextArgs.builder()
.location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile") .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile")
.build()) .build())
.build()); .build());
var remoteContextWithInline = new Image("remoteContextWithInline", ImageArgs.builder() var remoteContextWithInline = new Image("remoteContextWithInline", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.inline(""" .inline("""
FROM busybox FROM busybox
@@ -166,6 +178,7 @@ COPY hello.c ./
.build()); .build());
var inline = new Image("inline", ImageArgs.builder() var inline = new Image("inline", ImageArgs.builder()
.push(false)
.dockerfile(DockerfileArgs.builder() .dockerfile(DockerfileArgs.builder()
.inline(""" .inline("""
FROM alpine FROM alpine
@@ -178,6 +191,7 @@ RUN echo "This uses an inline Dockerfile! 👍"
.build()); .build());
var dockerLoad = new Image("dockerLoad", ImageArgs.builder() var dockerLoad = new Image("dockerLoad", ImageArgs.builder()
.push(false)
.context(BuildContextArgs.builder() .context(BuildContextArgs.builder()
.location("./app") .location("./app")
.build()) .build())

View File

@@ -4,6 +4,7 @@ import * as docker_build from "@pulumi/docker-build";
const config = new pulumi.Config(); const config = new pulumi.Config();
const dockerHubPassword = config.require("dockerHubPassword"); const dockerHubPassword = config.require("dockerHubPassword");
const multiPlatform = new docker_build.Image("multiPlatform", { const multiPlatform = new docker_build.Image("multiPlatform", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.multiPlatform", location: "./app/Dockerfile.multiPlatform",
}, },
@@ -16,6 +17,7 @@ const multiPlatform = new docker_build.Image("multiPlatform", {
], ],
}); });
const registryPush = new docker_build.Image("registryPush", { const registryPush = new docker_build.Image("registryPush", {
push: false,
context: { context: {
location: "./app", location: "./app",
}, },
@@ -33,6 +35,7 @@ const registryPush = new docker_build.Image("registryPush", {
}], }],
}); });
const cached = new docker_build.Image("cached", { const cached = new docker_build.Image("cached", {
push: false,
context: { context: {
location: "./app", location: "./app",
}, },
@@ -49,6 +52,7 @@ const cached = new docker_build.Image("cached", {
}], }],
}); });
const buildArgs = new docker_build.Image("buildArgs", { const buildArgs = new docker_build.Image("buildArgs", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.buildArgs", location: "./app/Dockerfile.buildArgs",
}, },
@@ -60,6 +64,7 @@ const buildArgs = new docker_build.Image("buildArgs", {
}, },
}); });
const extraHosts = new docker_build.Image("extraHosts", { const extraHosts = new docker_build.Image("extraHosts", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.extraHosts", location: "./app/Dockerfile.extraHosts",
}, },
@@ -69,6 +74,7 @@ const extraHosts = new docker_build.Image("extraHosts", {
addHosts: ["metadata.google.internal:169.254.169.254"], addHosts: ["metadata.google.internal:169.254.169.254"],
}); });
const sshMount = new docker_build.Image("sshMount", { const sshMount = new docker_build.Image("sshMount", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.sshMount", location: "./app/Dockerfile.sshMount",
}, },
@@ -80,6 +86,7 @@ const sshMount = new docker_build.Image("sshMount", {
}], }],
}); });
const secrets = new docker_build.Image("secrets", { const secrets = new docker_build.Image("secrets", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.secrets", location: "./app/Dockerfile.secrets",
}, },
@@ -91,6 +98,7 @@ const secrets = new docker_build.Image("secrets", {
}, },
}); });
const labels = new docker_build.Image("labels", { const labels = new docker_build.Image("labels", {
push: false,
context: { context: {
location: "./app", location: "./app",
}, },
@@ -99,6 +107,7 @@ const labels = new docker_build.Image("labels", {
}, },
}); });
const target = new docker_build.Image("target", { const target = new docker_build.Image("target", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.target", location: "./app/Dockerfile.target",
}, },
@@ -108,6 +117,7 @@ const target = new docker_build.Image("target", {
target: "build-me", target: "build-me",
}); });
const namedContexts = new docker_build.Image("namedContexts", { const namedContexts = new docker_build.Image("namedContexts", {
push: false,
dockerfile: { dockerfile: {
location: "./app/Dockerfile.namedContexts", location: "./app/Dockerfile.namedContexts",
}, },
@@ -120,10 +130,14 @@ const namedContexts = new docker_build.Image("namedContexts", {
}, },
}, },
}); });
const remoteContext = new docker_build.Image("remoteContext", {context: { const remoteContext = new docker_build.Image("remoteContext", {
location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", push: false,
}}); context: {
location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
},
});
const remoteContextWithInline = new docker_build.Image("remoteContextWithInline", { const remoteContextWithInline = new docker_build.Image("remoteContextWithInline", {
push: false,
dockerfile: { dockerfile: {
inline: `FROM busybox inline: `FROM busybox
COPY hello.c ./ COPY hello.c ./
@@ -134,6 +148,7 @@ COPY hello.c ./
}, },
}); });
const inline = new docker_build.Image("inline", { const inline = new docker_build.Image("inline", {
push: false,
dockerfile: { dockerfile: {
inline: `FROM alpine inline: `FROM alpine
RUN echo "This uses an inline Dockerfile! 👍" RUN echo "This uses an inline Dockerfile! 👍"
@@ -144,6 +159,7 @@ RUN echo "This uses an inline Dockerfile! 👍"
}, },
}); });
const dockerLoad = new docker_build.Image("dockerLoad", { const dockerLoad = new docker_build.Image("dockerLoad", {
push: false,
context: { context: {
location: "./app", location: "./app",
}, },

View File

@@ -4,6 +4,7 @@ import pulumi_docker_build as docker_build
config = pulumi.Config() config = pulumi.Config()
docker_hub_password = config.require("dockerHubPassword") docker_hub_password = config.require("dockerHubPassword")
multi_platform = docker_build.Image("multiPlatform", multi_platform = docker_build.Image("multiPlatform",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.multiPlatform", location="./app/Dockerfile.multiPlatform",
), ),
@@ -15,6 +16,7 @@ multi_platform = docker_build.Image("multiPlatform",
docker_build.Platform.PLAN9_386, docker_build.Platform.PLAN9_386,
]) ])
registry_push = docker_build.Image("registryPush", registry_push = docker_build.Image("registryPush",
push=False,
context=docker_build.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),
@@ -31,6 +33,7 @@ registry_push = docker_build.Image("registryPush",
password=docker_hub_password, password=docker_hub_password,
)]) )])
cached = docker_build.Image("cached", cached = docker_build.Image("cached",
push=False,
context=docker_build.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),
@@ -46,6 +49,7 @@ cached = docker_build.Image("cached",
), ),
)]) )])
build_args = docker_build.Image("buildArgs", build_args = docker_build.Image("buildArgs",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.buildArgs", location="./app/Dockerfile.buildArgs",
), ),
@@ -56,6 +60,7 @@ build_args = docker_build.Image("buildArgs",
"SET_ME_TO_TRUE": "true", "SET_ME_TO_TRUE": "true",
}) })
extra_hosts = docker_build.Image("extraHosts", extra_hosts = docker_build.Image("extraHosts",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.extraHosts", location="./app/Dockerfile.extraHosts",
), ),
@@ -64,6 +69,7 @@ extra_hosts = docker_build.Image("extraHosts",
), ),
add_hosts=["metadata.google.internal:169.254.169.254"]) add_hosts=["metadata.google.internal:169.254.169.254"])
ssh_mount = docker_build.Image("sshMount", ssh_mount = docker_build.Image("sshMount",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.sshMount", location="./app/Dockerfile.sshMount",
), ),
@@ -74,6 +80,7 @@ ssh_mount = docker_build.Image("sshMount",
id="default", id="default",
)]) )])
secrets = docker_build.Image("secrets", secrets = docker_build.Image("secrets",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.secrets", location="./app/Dockerfile.secrets",
), ),
@@ -84,6 +91,7 @@ secrets = docker_build.Image("secrets",
"password": "hunter2", "password": "hunter2",
}) })
labels = docker_build.Image("labels", labels = docker_build.Image("labels",
push=False,
context=docker_build.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),
@@ -91,6 +99,7 @@ labels = docker_build.Image("labels",
"description": "This image will get a descriptive label 👍", "description": "This image will get a descriptive label 👍",
}) })
target = docker_build.Image("target", target = docker_build.Image("target",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.target", location="./app/Dockerfile.target",
), ),
@@ -99,6 +108,7 @@ target = docker_build.Image("target",
), ),
target="build-me") target="build-me")
named_contexts = docker_build.Image("namedContexts", named_contexts = docker_build.Image("namedContexts",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="./app/Dockerfile.namedContexts", location="./app/Dockerfile.namedContexts",
), ),
@@ -110,10 +120,13 @@ named_contexts = docker_build.Image("namedContexts",
), ),
}, },
)) ))
remote_context = docker_build.Image("remoteContext", context=docker_build.BuildContextArgs( remote_context = docker_build.Image("remoteContext",
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", push=False,
)) context=docker_build.BuildContextArgs(
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
))
remote_context_with_inline = docker_build.Image("remoteContextWithInline", remote_context_with_inline = docker_build.Image("remoteContextWithInline",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
inline="""FROM busybox inline="""FROM busybox
COPY hello.c ./ COPY hello.c ./
@@ -123,6 +136,7 @@ COPY hello.c ./
location="https://github.com/docker-library/hello-world.git", location="https://github.com/docker-library/hello-world.git",
)) ))
inline = docker_build.Image("inline", inline = docker_build.Image("inline",
push=False,
dockerfile=docker_build.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
inline="""FROM alpine inline="""FROM alpine
RUN echo "This uses an inline Dockerfile! 👍" RUN echo "This uses an inline Dockerfile! 👍"
@@ -132,6 +146,7 @@ RUN echo "This uses an inline Dockerfile! 👍"
location="./app", location="./app",
)) ))
docker_load = docker_build.Image("dockerLoad", docker_load = docker_build.Image("dockerLoad",
push=False,
context=docker_build.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),

View File

@@ -0,0 +1,238 @@
{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetRequiredPlugins","request":{"project":"deprecated","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{"plugins":[{"name":"docker-build","kind":"resource"}]},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"pulumi:pulumi:Stack","name":"provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fgo%2Fpkg%2Fmod%2Fgithub.com%2Fpulumi%2Fpulumi%2Fsdk%2Fv3@v3.109.0%2Fgo%2Fpulumi%2Frun.go","line":113}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.0.2-alpha.1713828576+f5e57ab7.dirty"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{},"news":{}},"response":{"inputs":{"host":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Configure","request":{"variables":{"docker-build:config:host":""},"args":{"host":""},"acceptSecrets":true,"acceptResources":true,"sendsOldInputs":true,"sendsOldInputsToDelete":true},"response":{"acceptSecrets":true,"supportsPreview":true,"acceptResources":true,"acceptOutputs":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"randomSeed":"Zpop9M+JmIOwQmpumbecUCsV/ks1h9w6l2kNF3lHjtY="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"randomSeed":"dazhCjb2uC3lg762/5M8fHXC64y7VpteYy88EbBvYRk="},"response":{"inputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"randomSeed":"k/yAQzkpHW8a2lT12qIMuQfWrQ6sxi52a7UTd31LbD4="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"randomSeed":"NEWS/2SobJBiSZclKMV4daNb9w/gZpL9pcnSEjW15fY="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"randomSeed":"w9MW3AkZK+TS8c5c+uX+fP+Vt8poZV/PUbderi6/3dE="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"randomSeed":"mV9MJBEc699p8wXnrZvEsyefqhUZDd3HxcbOcnUAdO0="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"randomSeed":"SPsY4RQylcrhPetcrwIr7G+BibJW0+09naCR6cJSJGg="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"randomSeed":"6nH/HyMcjBzTIyOjPbXERsM0mAuEXlIBKB24F1Gsa80="},"response":{"inputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"fMySvdt7mS2bvuQkC+8ICtuDrqf6d8R/cNdjP+iii6w="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"randomSeed":"pXjbeSMAG78wM0O3cgoHerpS38bRyXVDCXAXHVmkeXA="},"response":{"inputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"randomSeed":"hU23n1oCU57Ug9cijDs3BOi/NUF0CsL2DRpU9QXayJU="},"response":{"inputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"randomSeed":"9oO+TJ0chIeCLZuHJV29ILCIQ6XWA9HcT34B8nt7lI8="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"randomSeed":"kWpnWR43XXn09f6NoRg3J1ahweFpu+Ki90I2VetJ8SM="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"randomSeed":"VXrvj73695AeVkkB+YfN35qaeyIUVEvBOVHVxSSfaIw="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"preview":true},"response":{"id":"sshMount","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"labels","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"ssh":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"inline","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"preview":true},"response":{"id":"secrets","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"propertyDependencies":{"context":{},"labels":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"secrets":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"preview":true},"response":{"id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"registryPush","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"tags":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"},"preview":true},"response":{"id":"target","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"target","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"target":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"buildArgs","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"dockerLoad","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"propertyDependencies":{"context":{},"exports":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","properties":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"cached","properties":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"cached","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"multiPlatform","properties":{"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"multiPlatform","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"remoteContext","properties":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"propertyDependencies":{"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"extraHosts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"remoteContextWithInline","properties":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContextWithInline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"namedContexts","properties":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","digest":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"04da6b54-80e4-46f7-96ec-b56ff0331ba9","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"namedContexts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.LanguageRuntime/Run","request":{"project":"provider-docker-build","stack":"p-it-bryces-wor-upgrade-e061461f","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","dryRun":true,"parallel":40,"monitorAddress":"127.0.0.1:60753","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetRequiredPlugins","request":{"project":"deprecated","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{"plugins":[{"name":"docker-build","kind":"resource"}]},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"pulumi:pulumi:Stack","name":"provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fgo%2Fpkg%2Fmod%2Fgithub.com%2Fpulumi%2Fpulumi%2Fsdk%2Fv3@v3.109.0%2Fgo%2Fpulumi%2Frun.go","line":113}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.0.2-alpha.1713828576+f5e57ab7.dirty"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{},"news":{}},"response":{"inputs":{"host":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Configure","request":{"variables":{"docker-build:config:host":""},"args":{"host":""},"acceptSecrets":true,"acceptResources":true,"sendsOldInputs":true,"sendsOldInputsToDelete":true},"response":{"acceptSecrets":true,"supportsPreview":true,"acceptResources":true,"acceptOutputs":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"randomSeed":"c+JQMdFhF6DOlV8hBuEsf76TrMLc6uX0cKSx/rvuQcc="},"response":{"inputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"randomSeed":"iPranfQEDhU2tBPuJ2P7Q3/OHjdBPVHK9/IzM11zxfk="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"randomSeed":"nIXHrGklHMSwivplBfBucdtH4wJ7A5eo7bjj4ZxL8QE="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"randomSeed":"hd2D8/SmwfN3kSVt2mzNB6K7p8wSD24qhpQ+kH+6Kxk="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"randomSeed":"i/5eV6MV38Hjst81A4OlJF42udbJ9Asyz/r3P+1NTZ0="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"randomSeed":"spb/oBaOJEb8pwkhwRwVY/swPtN8qOE65qm/r+WENhM="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"randomSeed":"VAIZ261e1K5SdjJGxUK4lFZZ81lVX9uLZNaMJZSaSgc="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"randomSeed":"ckcraHsDcgQy8Xfc5GCkEctolkFoPJuQBchIjgaIy5o="},"response":{"inputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"qLetBHXWUUbd1nzRKwb+4Q3vMS1U992mEpsIV3aWY68="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"randomSeed":"1Z8ESqA4tOmwRrcM6D0q+ipiiHXwTJ9qgw9HT7+WaWo="},"response":{"inputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"randomSeed":"jVeY5oCFxhbO0PQM/yzT/j5sqyKRIiswQOHMkXQy1cw="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"randomSeed":"DhxVd/uvzafm07NfEWe2OBqp3t/o9IR6AT18EKLmEuU="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"randomSeed":"I0Y9+u4kHEsYQsS6cmtW6TOL8Bagud98ZK8PBzHAKOU="},"response":{"inputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"randomSeed":"T9HnfRgKDfZ+iBd2a68qPmyp8eGs0f+K2xsnjj0ISWE="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"remoteContext","properties":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"propertyDependencies":{"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"inline","properties":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"response":{"id":"target","properties":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"target","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"target":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"response":{"id":"secrets","properties":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"secrets":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"response":{"id":"sshMount","properties":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"ssh":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{"id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"registryPush","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"tags":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","properties":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"cached","properties":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"cached","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"dockerLoad","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"propertyDependencies":{"context":{},"exports":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"extraHosts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"labels","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"propertyDependencies":{"context":{},"labels":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"buildArgs","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"response":{"id":"multiPlatform","properties":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"multiPlatform","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"namedContexts","properties":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"namedContexts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"remoteContextWithInline","properties":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContextWithInline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.LanguageRuntime/Run","request":{"project":"provider-docker-build","stack":"p-it-bryces-wor-upgrade-e061461f","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","parallel":40,"monitorAddress":"127.0.0.1:60794","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetRequiredPlugins","request":{"project":"deprecated","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{"plugins":[{"name":"docker-build","kind":"resource"}]},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"pulumi:pulumi:Stack","name":"provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fgo%2Fpkg%2Fmod%2Fgithub.com%2Fpulumi%2Fpulumi%2Fsdk%2Fv3@v3.109.0%2Fgo%2Fpulumi%2Frun.go","line":113}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.0.2-alpha.1713828576+f5e57ab7.dirty"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{"host":""},"news":{}},"response":{"inputs":{"host":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/DiffConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{"host":""},"news":{"host":""},"oldInputs":{"host":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Configure","request":{"variables":{"docker-build:config:host":""},"args":{"host":""},"acceptSecrets":true,"acceptResources":true,"sendsOldInputs":true,"sendsOldInputsToDelete":true},"response":{"acceptSecrets":true,"supportsPreview":true,"acceptResources":true,"acceptOutputs":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"randomSeed":"tMXM48V491BYs4k3nOqa+BUpCpy8mkFXc1Jyngtv2ks="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"buildArgs","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"buildArgs","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"randomSeed":"DcWNEJg0Y5LZ6MCTk5H8k58+T7cr/GbT3jb4gNz5zNc="},"response":{"inputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"cached","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"cached","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"randomSeed":"H71/WG0tiWTMF269z3kMD9zBX9Ln0uXis2MuCV/A1NQ="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"dockerLoad","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"propertyDependencies":{"context":{},"exports":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"randomSeed":"HMPS/w4UZY/QwMCrYxUJnzTrLqe3q5V/LmY6nKTB484="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"extraHosts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"extraHosts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"randomSeed":"agoXAuKdGsp1d8fTJ9q9+zEZCYWyZTuS2p3bvSUHOyA="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"inline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"randomSeed":"9dw+AeJcDZPN4zirq4fWzncjMehMUqGP+reeeUwWhBY="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"labels","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"propertyDependencies":{"context":{},"labels":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"randomSeed":"eisHaeSJgr13Hz+Y+OW0HajMWGInl2AdIdvYKhaiYM8="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"multiPlatform","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"multiPlatform","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"randomSeed":"dozyePo0yXgy++Qeg4zKJgYgteXPg9nDONDS38XVAWc="},"response":{"inputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"namedContexts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"namedContexts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"randomSeed":"GeqkcC4hzoLB0IuMuSrn0UluNtAKnAwskinrZUpwQHY="},"response":{"inputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"remoteContext","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"propertyDependencies":{"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"dJuBcpYybxF+YavduppyVIwRmNtwxnfbY/QvUOcVEkU="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"registryPush","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"tags":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"randomSeed":"DQv3cDSC/jY0j+m+Uuxz4NGr+SPwkxRd0NQEcjXKjFU="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"secrets","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"secrets":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"randomSeed":"LUCJNdWcMwcGg8+RC4Ps+WrX65B8InJWTsWzq/7tadw="},"response":{"inputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"remoteContextWithInline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContextWithInline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"randomSeed":"XvWY+fKcYQGtROjT+EFktlT4gOcDqR5hl3ICvkGeEDE="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sshMount","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"ssh":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"randomSeed":"H0mPGShL53nYNHWweNJpfa/pyS3//KbQRVxI9hsRdqM="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"target","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"target","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"target":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.LanguageRuntime/Run","request":{"project":"provider-docker-build","stack":"p-it-bryces-wor-upgrade-e061461f","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","dryRun":true,"parallel":40,"monitorAddress":"127.0.0.1:60813","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.LanguageRuntime/GetRequiredPlugins","request":{"project":"deprecated","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{"plugins":[{"name":"docker-build","kind":"resource"}]},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"},"response":{"hasSupport":true},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"pulumi:pulumi:Stack","name":"provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fgo%2Fpkg%2Fmod%2Fgithub.com%2Fpulumi%2Fpulumi%2Fsdk%2Fv3@v3.109.0%2Fgo%2Fpulumi%2Frun.go","line":113}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","object":{}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.0.2-alpha.1713828576+f5e57ab7.dirty"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{"host":""},"news":{}},"response":{"inputs":{"host":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/DiffConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default","olds":{"host":""},"news":{"host":""},"oldInputs":{"host":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Configure","request":{"variables":{"docker-build:config:host":""},"args":{"host":""},"acceptSecrets":true,"acceptResources":true,"sendsOldInputs":true,"sendsOldInputsToDelete":true},"response":{"acceptSecrets":true,"supportsPreview":true,"acceptResources":true,"acceptOutputs":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"randomSeed":"0R8XzurAkZVBVo5Ak3rdfLsdkT4+q95F/3DhfHyWma8="},"response":{"inputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"cached","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","olds":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"cached","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"}},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"randomSeed":"y7SP2cfhyxX/xTtxfJbroa9/iXEXVW6Eaci4JXJTNxQ="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"buildArgs","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"buildArgs","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"}},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"randomSeed":"cz62E7jO5yWlw9mkJj9Ez4cpdYBF2dgh7E0FUuzLxl8="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"dockerLoad","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}]},"propertyDependencies":{"context":{},"exports":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"randomSeed":"7y6D1J226DjAjOcjiIkhaRj6CTPNcN4M2H70xK/eCVE="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"extraHosts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"extraHosts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"}},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"randomSeed":"YY7uODwIoO2TN3U21WRsr19e/afGYYMZhvFEdWfsi4g="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"inline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","olds":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"randomSeed":"w3KBpsGE5S0Y+m/1J+0/lClLXfM53bkQwrs6RHl3xlE="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"labels","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"}},"propertyDependencies":{"context":{},"labels":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"randomSeed":"Ty0cOel4m07ZkB3A+9oMsoZbmI2Q+HUb8UsAbfy/QvU="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"multiPlatform","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"multiPlatform","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"]},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"randomSeed":"zIZQ9y9Yx+mkkcVMVreEF0oSRj3raIAxkTQxi9rr18E="},"response":{"inputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"namedContexts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"namedContexts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"+e5XWIeDD3dvxfeCWWouOUkymanKzu57dKusbE3L9Zg="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","olds":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"registryPush","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"tags":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","object":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"randomSeed":"uB8WQMUAsec6AH38scYXxeWFx+nAhZp+rUm2WGgrYxk="},"response":{"inputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"remoteContext","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"}},"propertyDependencies":{"context":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"randomSeed":"1V9l2UKAV9cHSJcJTKt0ymI0WMMLUnIr+8qPkP6XqGc="},"response":{"inputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"remoteContextWithInline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContextWithInline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"}},"propertyDependencies":{"context":{},"dockerfile":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"randomSeed":"+icqSaPIIvsMlPWlo6cwzRCAeYedBVcz625lO/zhkio="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"secrets","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","olds":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"secrets":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"randomSeed":"rK2kTpMkTSvZwJOL04Qni9QGC/C92dnGNNjTxCKtSO8="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sshMount","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","olds":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"ssh":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"randomSeed":"qrvpFrYtistuCpd/I8Dq63WU/hRxec5tndtlGxorgoY="},"response":{"inputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"target","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","olds":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"response":{"changes":"DIFF_NONE","hasDetailedDiff":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"target","parent":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"target":{}},"acceptSecrets":true,"customTimeouts":{},"acceptResources":true,"sourcePosition":{"uri":"project://%2FUsers%2Frunner%2Fwork%2Fpulumi-yaml%2Fpulumi-yaml%2Fpkg%2Fpulumiyaml%2Frun.go","line":1330}},"response":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"metadata":{"mode":"server"}}
{"method":"/pulumirpc.LanguageRuntime/Run","request":{"project":"provider-docker-build","stack":"p-it-bryces-wor-upgrade-e061461f","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","program":".","parallel":40,"monitorAddress":"127.0.0.1:60829","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-e061461f-4146250643","entryPoint":".","options":{}}},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}}
{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.0.2-alpha.1713828576+f5e57ab7.dirty"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Configure","request":{"variables":{"docker-build:config:host":""},"args":{"host":""},"acceptSecrets":true,"acceptResources":true,"sendsOldInputs":true,"sendsOldInputsToDelete":true},"response":{"acceptSecrets":true,"supportsPreview":true,"acceptResources":true,"acceptOutputs":true},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compressionLevel":0,"dest":"","tar":true},"raw":""}],"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"multiPlatform","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"inline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline","properties":{"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"buildArgs","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"target","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target","properties":{"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":"build-me"}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"labels","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"sshMount","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount","properties":{"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"namedContexts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"contextHash":"3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"cached","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached","properties":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compressionLevel":0,"dest":"tmp/cache","mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"remoteContextWithInline","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"extraHosts","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"secrets","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets","properties":{"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"remoteContext","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"noCache":false,"pull":false,"push":false,"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}
{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","urn":"urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush","properties":{"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compressionLevel":0,"danglingNamePrefix":"","ociMediaTypes":true,"push":false}}],"load":false,"noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}}

View File

@@ -0,0 +1,856 @@
{
"version": 3,
"deployment": {
"manifest": {
"time": "2024-04-25T08:48:01.267863-07:00",
"magic": "",
"version": ""
},
"secrets_providers": {
"type": "passphrase",
"state": {
"salt": "v1:VL+kccbv65M=:v1:rRAfrl2TUFiFVdMv:sqpTiKP4J8mt05CfZp3bhu9Zqp4UsA=="
}
},
"resources": [
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"custom": false,
"type": "pulumi:pulumi:Stack",
"outputs": {
"platforms": [
"plan9/amd64",
"plan9/386"
]
},
"created": "2024-04-25T15:47:59.523578Z",
"modified": "2024-04-25T15:47:59.523578Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default",
"custom": true,
"id": "1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"type": "pulumi:providers:docker-build",
"inputs": {
"host": ""
},
"outputs": {
"host": ""
},
"created": "2024-04-25T15:47:59.664483Z",
"modified": "2024-04-25T15:47:59.664483Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContext",
"custom": true,
"id": "remoteContext",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"
},
"dockerfile": {
"inline": "",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"
},
"contextHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"digest": "",
"dockerfile": {
"inline": "",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": []
},
"created": "2024-04-25T15:48:00.520476Z",
"modified": "2024-04-25T15:48:00.520476Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::inline",
"custom": true,
"id": "inline",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec",
"digest": "",
"dockerfile": {
"inline": "FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": []
},
"created": "2024-04-25T15:48:00.542164Z",
"modified": "2024-04-25T15:48:00.542164Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::target",
"custom": true,
"id": "target",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.target"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": "build-me"
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.target"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": "build-me"
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": [],
"target": []
},
"created": "2024-04-25T15:48:00.568397Z",
"modified": "2024-04-25T15:48:00.568397Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::secrets",
"custom": true,
"id": "secrets",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.secrets"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"secrets": {
"password": "hunter2"
},
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.secrets"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"secrets": {
"password": "hunter2"
},
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": [],
"secrets": []
},
"created": "2024-04-25T15:48:00.578273Z",
"modified": "2024-04-25T15:48:00.578273Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::sshMount",
"custom": true,
"id": "sshMount",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.sshMount"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ssh": [
{
"id": "default"
}
],
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.sshMount"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"ssh": [
{
"id": "default"
}
],
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": [],
"ssh": []
},
"created": "2024-04-25T15:48:00.590119Z",
"modified": "2024-04-25T15:48:00.590119Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::registryPush",
"custom": true,
"id": "sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"exports": [
{
"disabled": false,
"raw": "",
"registry": {
"compressionLevel": 0,
"danglingNamePrefix": "",
"ociMediaTypes": true,
"push": false
}
}
],
"load": false,
"noCache": false,
"pull": false,
"push": false,
"tags": [
"docker.io/pulumibot/buildkit-e2e:example"
],
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5",
"digest": "sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e",
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"exports": [
{
"disabled": false,
"raw": "",
"registry": {
"compressionLevel": 0,
"danglingNamePrefix": "",
"ociMediaTypes": true,
"push": false
}
}
],
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "docker.io/pulumibot/buildkit-e2e:example@sha256:daf363fb4e814674f8e3e542e3dc1dbb9f7fb21f83c1956ddc948f20c1f9553e",
"tags": [
"docker.io/pulumibot/buildkit-e2e:example"
],
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"exports": [],
"tags": []
},
"created": "2024-04-25T15:48:00.59945Z",
"modified": "2024-04-25T15:48:00.59945Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::cached",
"custom": true,
"id": "cached",
"type": "docker-build:index:Image",
"inputs": {
"cacheFrom": [
{
"disabled": false,
"local": {
"digest": "",
"src": "tmp/cache"
},
"raw": ""
}
],
"cacheTo": [
{
"disabled": false,
"local": {
"compressionLevel": 0,
"dest": "tmp/cache",
"mode": "max"
},
"raw": ""
}
],
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"cacheFrom": [
{
"disabled": false,
"local": {
"digest": "",
"src": "tmp/cache"
},
"raw": ""
}
],
"cacheTo": [
{
"disabled": false,
"local": {
"compressionLevel": 0,
"dest": "tmp/cache",
"mode": "max"
},
"raw": ""
}
],
"context": {
"location": "./app"
},
"contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5",
"digest": "",
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"cacheFrom": [],
"cacheTo": [],
"context": []
},
"created": "2024-04-25T15:48:00.616567Z",
"modified": "2024-04-25T15:48:00.616567Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::dockerLoad",
"custom": true,
"id": "sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"exports": [
{
"disabled": false,
"docker": {
"compressionLevel": 0,
"dest": "",
"tar": true
},
"raw": ""
}
],
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5",
"digest": "sha256:af0f1b830122444f250e8f6d50ceea71b6f485cfc0f7a9cc828390c2f0647040",
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"exports": [
{
"disabled": false,
"docker": {
"compressionLevel": 0,
"dest": "",
"tar": true
},
"raw": ""
}
],
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"exports": []
},
"created": "2024-04-25T15:48:00.629463Z",
"modified": "2024-04-25T15:48:00.629463Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::extraHosts",
"custom": true,
"id": "extraHosts",
"type": "docker-build:index:Image",
"inputs": {
"addHosts": [
"metadata.google.internal:169.254.169.254"
],
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.extraHosts"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"addHosts": [
"metadata.google.internal:169.254.169.254"
],
"context": {
"location": "./app"
},
"contextHash": "e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.extraHosts"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"addHosts": [],
"context": [],
"dockerfile": []
},
"created": "2024-04-25T15:48:00.639744Z",
"modified": "2024-04-25T15:48:00.639744Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::labels",
"custom": true,
"id": "labels",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"labels": {
"description": "This image will get a descriptive label 👍"
},
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5",
"digest": "",
"dockerfile": {
"inline": "",
"location": "app/Dockerfile"
},
"exec": false,
"labels": {
"description": "This image will get a descriptive label 👍"
},
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"labels": []
},
"created": "2024-04-25T15:48:00.707146Z",
"modified": "2024-04-25T15:48:00.707146Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::buildArgs",
"custom": true,
"id": "buildArgs",
"type": "docker-build:index:Image",
"inputs": {
"buildArgs": {
"SET_ME_TO_TRUE": "true"
},
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.buildArgs"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"buildArgs": {
"SET_ME_TO_TRUE": "true"
},
"context": {
"location": "./app"
},
"contextHash": "55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.buildArgs"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"buildArgs": [],
"context": [],
"dockerfile": []
},
"created": "2024-04-25T15:48:00.713219Z",
"modified": "2024-04-25T15:48:00.713219Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::multiPlatform",
"custom": true,
"id": "multiPlatform",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app"
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.multiPlatform"
},
"exec": false,
"load": false,
"noCache": false,
"platforms": [
"plan9/amd64",
"plan9/386"
],
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "./app"
},
"contextHash": "c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.multiPlatform"
},
"exec": false,
"load": false,
"noCache": false,
"platforms": [
"plan9/amd64",
"plan9/386"
],
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": [],
"platforms": []
},
"created": "2024-04-25T15:48:00.802952Z",
"modified": "2024-04-25T15:48:00.802952Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::namedContexts",
"custom": true,
"id": "namedContexts",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "./app",
"named": {
"golang:latest": {
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"
}
}
},
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.namedContexts"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "./app",
"named": {
"golang:latest": {
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"
}
}
},
"contextHash": "3adfaaf17fbb548f06310e76d2826bccb223b49463504d0cc4fe86b0eef5d47d",
"digest": "",
"dockerfile": {
"inline": "",
"location": "./app/Dockerfile.namedContexts"
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": []
},
"created": "2024-04-25T15:48:00.82495Z",
"modified": "2024-04-25T15:48:00.82495Z"
},
{
"urn": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::docker-build:index:Image::remoteContextWithInline",
"custom": true,
"id": "remoteContextWithInline",
"type": "docker-build:index:Image",
"inputs": {
"context": {
"location": "https://github.com/docker-library/hello-world.git"
},
"dockerfile": {
"inline": "FROM busybox\nCOPY hello.c ./\n",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"target": ""
},
"outputs": {
"context": {
"location": "https://github.com/docker-library/hello-world.git"
},
"contextHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"digest": "",
"dockerfile": {
"inline": "FROM busybox\nCOPY hello.c ./\n",
"location": ""
},
"exec": false,
"load": false,
"noCache": false,
"pull": false,
"push": false,
"ref": "",
"target": ""
},
"parent": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-e061461f",
"provider": "urn:pulumi:p-it-bryces-wor-upgrade-e061461f::provider-docker-build::pulumi:providers:docker-build::default::1262d75a-1f92-4f7b-8b32-6b5246d188f0",
"propertyDependencies": {
"context": [],
"dockerfile": []
},
"created": "2024-04-25T15:48:01.263124Z",
"modified": "2024-04-25T15:48:01.263124Z"
}
]
}
}

View File

@@ -0,0 +1 @@
*

View File

@@ -0,0 +1,19 @@
name: dockerhub-unauthenticated
description: Pull an image from Dockerhub without credentials
runtime: yaml
plugins:
providers:
- name: docker-build
path: ../../../bin
resources:
my-image:
type: docker-build:Image
properties:
tags:
- alpine-local
load: true
push: false
context:
location: .
dockerfile:
inline: FROM alpine

View File

@@ -0,0 +1,187 @@
name: provider-docker-build
runtime: yaml
plugins:
providers:
- name: docker-build
path: ../../bin
resources:
# docker buildx build -f app/Dockerfile.multiPlatform --platform plan9/amd64,plan9/386 app
multiPlatform:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.multiPlatform"
context:
location: "./app"
platforms:
- plan9/amd64
- plan9/386
# docker buildx build --output=type=registry app
registryPush:
type: docker-build:Image
properties:
push: false
context:
location: "./app"
tags: ["docker.io/pulumibot/buildkit-e2e:example"]
exports:
- registry:
ociMediaTypes: true
push: false # Omit this to actually push images.
# docker buildx build --cache-to=type=local,dest=tmp/cache,mode=max --cache-from=type=local,src=tmp/cache app
cached:
type: docker-build:Image
properties:
push: false
context:
location: "./app"
cacheTo:
- local:
dest: tmp/cache
mode: max
cacheFrom:
- local:
src: tmp/cache
# docker buildx build -f app/Dockerfile.buildArgs --build-arg SET_ME_TO_TRUE=true app
buildArgs:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.buildArgs"
context:
location: "./app"
buildArgs:
SET_ME_TO_TRUE: "true"
# docker buildx build -f app/Dockerfile.extraHosts --add-host metadata.google.internal:169.254.169.254 app
extraHosts:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.extraHosts"
context:
location: "./app"
addHosts:
- "metadata.google.internal:169.254.169.254"
# docker buildx build -f app/Dockerfile.sshMount --ssh default app
sshMount:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.sshMount"
context:
location: "./app"
ssh:
- id: default
# PASSWORD=hunter2 docker buildx build -f app/Dockerfile.secrets --secret id=password,env=PASSWORD app
secrets:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.secrets"
context:
location: "./app"
secrets:
password: hunter2
# docker buildx build --label "description=This image will get a descriptive label 👍" app
labels:
type: docker-build:Image
properties:
push: false
context:
location: "./app"
labels:
description: "This image will get a descriptive label 👍"
# docker buildx build -f app/Dockerfile.target --target build-me app
target:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.target"
context:
location: "./app"
target: "build-me"
# docker buildx build -f app/Dockerfile.namedContexts \
# --build-context golang:latest=docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984 app
namedContexts:
type: docker-build:Image
properties:
push: false
dockerfile:
location: "./app/Dockerfile.namedContexts"
context:
location: "./app"
named:
"golang:latest":
location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"
# docker buildx build https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile
remoteContext:
type: docker-build:Image
properties:
push: false
context:
location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"
# docker buildx build -f - https://github.com/docker-library/hello-world.git <<EOF
# FROM busybox
# COPY hello.c ./
# EOF
remoteContextWithInline:
type: docker-build:Image
properties:
push: false
dockerfile:
inline: |
FROM busybox
COPY hello.c ./
context:
location: "https://github.com/docker-library/hello-world.git"
# echo "FROM alpine" | docker buildx build -f - .
inline:
type: docker-build:Image
properties:
push: false
dockerfile:
inline: |
FROM alpine
RUN echo "This uses an inline Dockerfile! 👍"
context:
location: "./app"
# docker buildx build --load .
dockerLoad:
type: docker-build:Image
properties:
push: false
context:
location: "./app"
exports:
- docker:
tar: true
# docker buildx build - < app/Dockerfile.emptyContext
#emptyContext:
# type: docker-build:Image
# properties:
# file: "app/Dockerfile.emptyContext"
# context: "-"
outputs:
platforms: ${multiPlatform.platforms}

View File

@@ -0,0 +1,15 @@
# YAML Example Program
Test Pulumi program written in YAML for testing this provider locally.
Edit this yaml program to test features of your provider locally. You can run this program using the following command:
```bash
pulumi login
pulumi stack init local
pulumi up
```
Note that unlike the rest of the auto-generated examples in the ./examples directory, this example is not automatically generated. It is intended to be a place for you to test your provider locally.
The remaining examples are language specific examples derived from the `make gen_examples` command supported in this provider's Makefile. These examples are automatically generated and should not be edited directly. To regenerate these examples, run `make gen_examples` in the root of this provider's repository.

View File

@@ -0,0 +1,2 @@
FROM alpine
RUN echo 👍

View File

@@ -0,0 +1,5 @@
FROM alpine
ARG SET_ME_TO_TRUE
RUN [ "$SET_ME_TO_TRUE" = "true" ]
RUN echo "That's the correct build arg, thanks! 👍"

View File

@@ -0,0 +1,2 @@
FROM alpine
RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍"

View File

@@ -0,0 +1,3 @@
FROM bash AS base
RUN getent hosts metadata.google.internal

View File

@@ -0,0 +1,7 @@
FROM --platform=$BUILDPLATFORM alpine as build
RUN echo ${BUILDPLATFORM} > buildplatform
RUN echo ${TARGETPLATFORM} > targetplatform
FROM build
RUN cat buildplatform
RUN cat targetplatform

View File

@@ -0,0 +1,5 @@
# syntax=docker/dockerfile:1.4
FROM golang:latest
RUN version="$(go version)" && echo $version && [ "$version" = "go version go1.21.7 linux/amd64" ]
RUN echo "This image uses named contexts to pin golang:latest to a specific SHA 👍"

View File

@@ -0,0 +1,4 @@
FROM alpine
RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ]

View File

@@ -0,0 +1,5 @@
FROM alpine
RUN apk add openssh-client
RUN --mount=type=ssh ssh-add -l

View File

@@ -0,0 +1,8 @@
FROM alpine as build-me
RUN echo 👍
FROM build-me as also-build-me
RUN echo 🤙
FROM build-me as dont-build-me
RUN [ "true" = "false" ]

View File

@@ -10,6 +10,7 @@ resources:
multiPlatform: multiPlatform:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.multiPlatform" location: "./app/Dockerfile.multiPlatform"
context: context:
@@ -22,6 +23,7 @@ resources:
registryPush: registryPush:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
context: context:
location: "./app" location: "./app"
tags: ["docker.io/pulumibot/buildkit-e2e:example"] tags: ["docker.io/pulumibot/buildkit-e2e:example"]
@@ -38,6 +40,7 @@ resources:
cached: cached:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
context: context:
location: "./app" location: "./app"
cacheTo: cacheTo:
@@ -52,6 +55,7 @@ resources:
buildArgs: buildArgs:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.buildArgs" location: "./app/Dockerfile.buildArgs"
context: context:
@@ -63,6 +67,7 @@ resources:
extraHosts: extraHosts:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.extraHosts" location: "./app/Dockerfile.extraHosts"
context: context:
@@ -74,6 +79,7 @@ resources:
sshMount: sshMount:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.sshMount" location: "./app/Dockerfile.sshMount"
context: context:
@@ -85,6 +91,7 @@ resources:
secrets: secrets:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.secrets" location: "./app/Dockerfile.secrets"
context: context:
@@ -96,6 +103,7 @@ resources:
labels: labels:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
context: context:
location: "./app" location: "./app"
labels: labels:
@@ -105,6 +113,7 @@ resources:
target: target:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.target" location: "./app/Dockerfile.target"
context: context:
@@ -116,6 +125,7 @@ resources:
namedContexts: namedContexts:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
location: "./app/Dockerfile.namedContexts" location: "./app/Dockerfile.namedContexts"
context: context:
@@ -128,6 +138,7 @@ resources:
remoteContext: remoteContext:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
context: context:
location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile" location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"
@@ -138,6 +149,7 @@ resources:
remoteContextWithInline: remoteContextWithInline:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
inline: | inline: |
FROM busybox FROM busybox
@@ -149,6 +161,7 @@ resources:
inline: inline:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
dockerfile: dockerfile:
inline: | inline: |
FROM alpine FROM alpine
@@ -160,6 +173,7 @@ resources:
dockerLoad: dockerLoad:
type: docker-build:Image type: docker-build:Image
properties: properties:
push: false
context: context:
location: "./app" location: "./app"
exports: exports:

View File

@@ -6,8 +6,11 @@ package examples
import ( import (
"os" "os"
"path" "path"
"path/filepath"
"testing" "testing"
"github.com/pulumi/providertest"
"github.com/pulumi/pulumi-docker-build/provider"
"github.com/pulumi/pulumi/pkg/v3/testing/integration" "github.com/pulumi/pulumi/pkg/v3/testing/integration"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@@ -26,6 +29,28 @@ func TestYAMLExample(t *testing.T) {
integration.ProgramTest(t, &test) integration.ProgramTest(t, &test)
} }
func TestYAMLExampleUpgrade(t *testing.T) {
// t.Setenv("PULUMI_PROVIDER_TEST_MODE", "snapshot")
cwd, err := os.Getwd()
require.NoError(t, err)
bin, err := filepath.Abs("../bin")
require.NoError(t, err)
t.Setenv("PATH", bin+":"+os.Getenv("PATH"))
p, err := provider.New(nil)
require.NoError(t, err)
test := providertest.NewProviderTest(path.Join(cwd, "upgrade"),
providertest.WithProviderName("docker-build"),
providertest.WithBaselineVersion("0.0.1"),
providertest.WithResourceProviderServer(p),
// providertest.WithConfig("dockerHubPassword", os.Getenv("DOCKER_HUB_PASSWORD")), // Doesn't support secrets yet.
)
test.Run(t)
}
func TestECR(t *testing.T) { func TestECR(t *testing.T) {
if os.Getenv("AWS_SESSION_TOKEN") == "" { if os.Getenv("AWS_SESSION_TOKEN") == "" {
t.Skip("Missing AWS credentials") t.Skip("Missing AWS credentials")
@@ -58,3 +83,14 @@ func TestDockerHub(t *testing.T) {
integration.ProgramTest(t, &test) integration.ProgramTest(t, &test)
} }
func TestDockerHubUnauthenticated(t *testing.T) {
cwd, err := os.Getwd()
require.NoError(t, err)
test := integration.ProgramTestOptions{
Dir: path.Join(cwd, "tests/unauthenticated"),
}
integration.ProgramTest(t, &test)
}

5
go.mod
View File

@@ -14,7 +14,7 @@ require (
github.com/moby/patternmatcher v0.6.0 github.com/moby/patternmatcher v0.6.0
github.com/muesli/reflow v0.3.0 github.com/muesli/reflow v0.3.0
github.com/otiai10/copy v1.14.0 github.com/otiai10/copy v1.14.0
github.com/pulumi/pulumi-go-provider v0.15.0 github.com/pulumi/pulumi-go-provider v0.16.0
github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf
github.com/pulumi/pulumi-java/pkg v0.10.0 github.com/pulumi/pulumi-java/pkg v0.10.0
github.com/pulumi/pulumi/pkg/v3 v3.113.0 github.com/pulumi/pulumi/pkg/v3 v3.113.0
@@ -322,6 +322,7 @@ require (
github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect
github.com/nishanths/predeclared v0.2.2 // indirect github.com/nishanths/predeclared v0.2.2 // indirect
github.com/nunnatsa/ginkgolinter v0.16.1 // indirect github.com/nunnatsa/ginkgolinter v0.16.1 // indirect
github.com/nxadm/tail v1.4.11 // indirect
github.com/oklog/run v1.1.0 // indirect github.com/oklog/run v1.1.0 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect
@@ -349,6 +350,7 @@ require (
github.com/prometheus/procfs v0.12.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
github.com/pulumi/esc v0.6.2 // indirect github.com/pulumi/esc v0.6.2 // indirect
github.com/pulumi/providertest v0.0.12 // indirect
github.com/pulumi/pulumi-yaml v1.6.0 // indirect github.com/pulumi/pulumi-yaml v1.6.0 // indirect
github.com/quasilyte/go-ruleguard v0.4.2 // indirect github.com/quasilyte/go-ruleguard v0.4.2 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect
@@ -471,6 +473,7 @@ require (
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect
honnef.co/go/tools v0.4.7 // indirect honnef.co/go/tools v0.4.7 // indirect

9
go.sum
View File

@@ -2075,6 +2075,8 @@ github.com/nunnatsa/ginkgolinter v0.16.1 h1:uDIPSxgVHZ7PgbJElRDGzymkXH+JaF7mjew+
github.com/nunnatsa/ginkgolinter v0.16.1/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ= github.com/nunnatsa/ginkgolinter v0.16.1/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
@@ -2306,8 +2308,10 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw=
github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k=
github.com/pulumi/pulumi-go-provider v0.15.0 h1:KEFQhAVHMCbu9NPNe584mtlgZXaqnuDpcWarUcGbQ5w= github.com/pulumi/providertest v0.0.12 h1:UjcFQHHs4AGJyJqxhvC2q8yVQ7Li+UyCyP95HZcK03U=
github.com/pulumi/pulumi-go-provider v0.15.0/go.mod h1:q3gz5HmArwNALbFihAt1vpg/1xpZlAKjB6A6uMsTgfw= github.com/pulumi/providertest v0.0.12/go.mod h1:REAoaN+hGOtdWJGirfWYqcSjCejlbGfzyVTUuemJTuE=
github.com/pulumi/pulumi-go-provider v0.16.0 h1:vLAiECprIoLdTPd0UFs9Vv/HgSw7l/SBAurRBm3vpSU=
github.com/pulumi/pulumi-go-provider v0.16.0/go.mod h1:2yjjeyMSmsb/o/BRJeWk+kcXrJWF5U2EulJKnN7qVLs=
github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf h1:7fDWArOUFH+qQ9EywoC4K2ElXP76Ks/CtVJkEBmv2pk= github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf h1:7fDWArOUFH+qQ9EywoC4K2ElXP76Ks/CtVJkEBmv2pk=
github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf/go.mod h1:sf87soow+4JkV361vHI0W04hpJmWiWajzJytFMNonCE= github.com/pulumi/pulumi-go-provider/integration v0.10.1-0.20240314105842-9fbffb634faf/go.mod h1:sf87soow+4JkV361vHI0W04hpJmWiWajzJytFMNonCE=
github.com/pulumi/pulumi-java/pkg v0.10.0 h1:D1i5MiiNrxYr2uJ1szcj1aQwF9DYv7TTsPmajB9dKSw= github.com/pulumi/pulumi-java/pkg v0.10.0 h1:D1i5MiiNrxYr2uJ1szcj1aQwF9DYv7TTsPmajB9dKSw=
@@ -3666,6 +3670,7 @@ gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76
gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=

File diff suppressed because one or more lines are too long

View File

@@ -81,6 +81,9 @@ func wrap(host *host, registries ...Registry) (*cli, error) {
auths := map[string]cfgtypes.AuthConfig{} auths := map[string]cfgtypes.AuthConfig{}
for k, v := range host.auths { for k, v := range host.auths {
if k != config.DockerRegistryAuth {
k = credentials.ConvertToHostname(k)
}
auths[k] = cfgtypes.AuthConfig{ auths[k] = cfgtypes.AuthConfig{
ServerAddress: v.ServerAddress, ServerAddress: v.ServerAddress,
Username: v.Username, Username: v.Username,
@@ -95,10 +98,6 @@ func wrap(host *host, registries ...Registry) (*cli, error) {
if key == "" { if key == "" {
key = h.Hostname key = h.Hostname
} }
// Add a scheme if it's missing.
if !strings.Contains(key, "://") {
key = "https://" + key
}
auths[key] = cfgtypes.AuthConfig{ auths[key] = cfgtypes.AuthConfig{
ServerAddress: h.Hostname, ServerAddress: h.Hostname,
@@ -179,8 +178,12 @@ func (c *cli) tail(ctx provider.Context) {
if c.dumplogs { if c.dumplogs {
// Persist the full Docker output on error for easier debugging. // Persist the full Docker output on error for easier debugging.
ctx.Log(diag.Info, b.String()) if b.Len() > 0 {
ctx.Log(diag.Error, c.err.String()) ctx.Log(diag.Info, b.String())
}
if c.err.Len() > 0 {
ctx.Log(diag.Error, c.err.String())
}
} }
} }

View File

@@ -43,6 +43,10 @@ func TestExec(t *testing.T) {
func TestWrappedAuth(t *testing.T) { func TestWrappedAuth(t *testing.T) {
t.Parallel() t.Parallel()
ecr := "https://1234.dkr.ecr.us-west-2.amazonaws.com" ecr := "https://1234.dkr.ecr.us-west-2.amazonaws.com"
realhost, err := newHost(nil)
require.NoError(t, err)
h := &host{ h := &host{
auths: map[string]types.AuthConfig{ auths: map[string]types.AuthConfig{
ecr: { ecr: {
@@ -50,7 +54,7 @@ func TestWrappedAuth(t *testing.T) {
Password: "host-aws-password", Password: "host-aws-password",
ServerAddress: ecr, ServerAddress: ecr,
}, },
"misc": { "https://misc": { // Legacy config includes http/https scheme.
Username: "host-misc-user", Username: "host-misc-user",
Password: "host-misc-password", Password: "host-misc-password",
ServerAddress: "misc", ServerAddress: "misc",
@@ -71,25 +75,34 @@ func TestWrappedAuth(t *testing.T) {
}, },
} }
_, err = wrap(h, registries...)
require.NoError(t, err)
cli, err := wrap(h, registries...) cli, err := wrap(h, registries...)
require.NoError(t, err) require.NoError(t, err)
require.Contains(t, cli.auths, ecr) expected := map[string]types.AuthConfig{
aws := cli.auths[ecr] "1234.dkr.ecr.us-west-2.amazonaws.com": {
assert.Equal(t, "resource-aws-user", aws.Username) Username: "resource-aws-user",
assert.Equal(t, "resource-aws-password", aws.Password) Password: "resource-aws-password",
assert.Equal(t, "1234.dkr.ecr.us-west-2.amazonaws.com", aws.ServerAddress) ServerAddress: "1234.dkr.ecr.us-west-2.amazonaws.com",
},
config.DockerRegistryAuth: {
Username: "resource-dockerhub-user",
Password: "resource-dockerhub-password",
ServerAddress: config.DockerRegistryDNS,
},
"misc": {
Username: "host-misc-user",
Password: "host-misc-password",
ServerAddress: "misc",
},
}
assert.Equal(t, expected, cli.auths)
assert.Len(t, h.auths, 2) // In-memory host auth is unchanged.
require.Contains(t, cli.auths, config.DockerRegistryAuth) // Assert that our on-disk host's auth is untouched.
dockerhub := cli.auths[config.DockerRegistryAuth] realhostRefreshed, err := newHost(nil)
assert.Equal(t, "resource-dockerhub-user", dockerhub.Username) require.NoError(t, err)
assert.Equal(t, "resource-dockerhub-password", dockerhub.Password) assert.Equal(t, realhost.auths, realhostRefreshed.auths)
assert.Equal(t, config.DockerRegistryDNS, dockerhub.ServerAddress)
// Auths derived from the host should be untouched, e.g. no scheme added, etc.
require.Contains(t, cli.auths, "misc")
misc := cli.auths["misc"]
assert.Equal(t, "host-misc-user", misc.Username)
assert.Equal(t, "host-misc-password", misc.Password)
assert.Equal(t, "misc", misc.ServerAddress)
} }

View File

@@ -323,7 +323,7 @@ func TestInspect(t *testing.T) {
t.Parallel() t.Parallel()
cli := testcli(t, false) cli := testcli(t, false)
descriptors, err := cli.Inspect(context.Background(), "pulumibot/myapp:buildx") descriptors, err := cli.Inspect(context.Background(), "pulumibot/myapp:buildx")
assert.NoError(t, err) require.NoError(t, err)
assert.Equal( assert.Equal(
t, t,
"application/vnd.docker.distribution.manifest.v2+json", "application/vnd.docker.distribution.manifest.v2+json",

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
## Migrating v3 and v4 Image resources ## Migrating Pulumi Docker v3 and v4 Image resources
The `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. 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. Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
### Behavioral differences ### Behavioral differences
@@ -14,19 +14,17 @@ This is helpful as a safeguard to prevent "broken" images from merging, but user
Version `4.x` changed build-on-preview behavior to be opt-in. 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. By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
Some users felt this made previews in CI less helpful because they no longer detected bad images by default. Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. This behavior can be changed by specifying `buildOnPreview`.
Previews run in non-CI environments will not build images.
This behavior is still configurable with `buildOnPreview`.
#### Push behavior #### Push behavior
Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. 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. They expose a `skipPush: true` option to disable pushing.
The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. 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`). 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. 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.
@@ -146,7 +144,7 @@ const v3Migrated = new dockerbuild.Image("v3-to-buildx", {
context: { context: {
location: "../app", location: "../app",
}, },
targets: ["mytarget"], target: "mytarget",
buildArgs: { buildArgs: {
MY_BUILD_ARG: "foo", MY_BUILD_ARG: "foo",
}, },
@@ -205,7 +203,7 @@ const v4Migrated = new dockerbuild.Image("v4-to-buildx", {
context: { context: {
location: "../app", location: "../app",
}, },
targets: ["mytarget"], target: "mytarget",
buildArgs: { buildArgs: {
MY_BUILD_ARG: "foo", MY_BUILD_ARG: "foo",
}, },

View File

@@ -40,7 +40,7 @@ import (
"github.com/pulumi/pulumi-go-provider/infer" "github.com/pulumi/pulumi-go-provider/infer"
"github.com/pulumi/pulumi/sdk/v3/go/common/diag" "github.com/pulumi/pulumi/sdk/v3/go/common/diag"
"github.com/pulumi/pulumi/sdk/v3/go/common/resource" "github.com/pulumi/pulumi/sdk/v3/go/common/resource"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/ciutil" "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
) )
var ( var (
@@ -72,16 +72,10 @@ func (i *Image) Annotate(a infer.Annotator) {
## Stability ## Stability
**This resource is experimental and subject to change.** **This resource is pre-1.0 and in public preview.**
API types are unstable. Subsequent releases _may_ require manual edits We will strive to keep APIs and behavior as stable as possible, but we
to your state file(s) in order to adopt API changes. cannot guarantee stability until version 1.0.
"retainOnDelete: true" is recommended with this resource until it is
stable. This enables future API changes to be adopted more easily by renaming
resources.
Only use this resource if you understand and accept the risks.
`)+ `)+
"\n\n"+_migration+ "\n\n"+_migration+
"\n\n"+_imageExamples, "\n\n"+_imageExamples,
@@ -105,7 +99,7 @@ type ImageArgs struct {
NoCache bool `pulumi:"noCache,optional"` NoCache bool `pulumi:"noCache,optional"`
Platforms []Platform `pulumi:"platforms,optional"` Platforms []Platform `pulumi:"platforms,optional"`
Pull bool `pulumi:"pull,optional"` Pull bool `pulumi:"pull,optional"`
Push bool `pulumi:"push,optional"` Push bool `pulumi:"push"`
Registries []Registry `pulumi:"registries,optional"` Registries []Registry `pulumi:"registries,optional"`
Secrets map[string]string `pulumi:"secrets,optional"` Secrets map[string]string `pulumi:"secrets,optional"`
SSH []SSH `pulumi:"ssh,optional"` SSH []SSH `pulumi:"ssh,optional"`
@@ -133,21 +127,19 @@ func (ia *ImageArgs) Annotate(a infer.Annotator) {
Equivalent to Docker's "--build-arg" flag. Equivalent to Docker's "--build-arg" flag.
`)) `))
a.Describe(&ia.BuildOnPreview, dedent(` a.Describe(&ia.BuildOnPreview, dedent(`
By default, preview behavior depends on the execution environment. If Setting this to "false" will always skip image builds during previews,
Pulumi detects the operation is running on a CI system (GitHub Actions, and setting it to "true" will always build images during previews.
Travis CI, Azure Pipelines, etc.) then it will build images during
previews as a safeguard. Otherwise, if not running on CI, previews will
not build images.
Setting this to "false" forces previews to never perform builds, and
setting it to "true" will always build the image during previews.
Images built during previews are never exported to registries, however Images built during previews are never exported to registries, however
cache manifests are still exported. cache manifests are still exported.
On-disk Dockerfiles are always validated for syntactic correctness On-disk Dockerfiles are always validated for syntactic correctness
regardless of this setting. regardless of this setting.
Defaults to "true" as a safeguard against broken images merging as part
of CI pipelines.
`)) `))
a.SetDefault(&ia.BuildOnPreview, pulumi.Bool(true))
a.Describe(&ia.Builder, dedent(` a.Describe(&ia.Builder, dedent(`
Builder configuration. Builder configuration.
`)) `))
@@ -463,13 +455,12 @@ func (ia *ImageArgs) isExported() bool {
} }
// shouldBuildOnPreview returns true if we should build this image during // shouldBuildOnPreview returns true if we should build this image during
// previews. In CI environments we default to building during previews, but we // previews.
// always respect buildOnPreview if it was specified.
func (ia *ImageArgs) shouldBuildOnPreview() bool { func (ia *ImageArgs) shouldBuildOnPreview() bool {
if ia.BuildOnPreview != nil { if ia.BuildOnPreview != nil {
return *ia.BuildOnPreview return *ia.BuildOnPreview
} }
return ciutil.IsCI() return true
} }
type build struct { type build struct {
@@ -898,7 +889,7 @@ func (*Image) Diff(
if !reflect.DeepEqual(olds.BuildArgs, news.BuildArgs) { if !reflect.DeepEqual(olds.BuildArgs, news.BuildArgs) {
diff["buildArgs"] = update diff["buildArgs"] = update
} }
if olds.BuildOnPreview != news.BuildOnPreview { if !reflect.DeepEqual(olds.BuildOnPreview, news.BuildOnPreview) {
diff["buildOnPreview"] = update diff["buildOnPreview"] = update
} }
if !reflect.DeepEqual(olds.Builder, news.Builder) { if !reflect.DeepEqual(olds.Builder, news.Builder) {
@@ -916,11 +907,9 @@ func (*Image) Diff(
if !reflect.DeepEqual(olds.Context.Named, news.Context.Named) { if !reflect.DeepEqual(olds.Context.Named, news.Context.Named) {
diff["context.named"] = update diff["context.named"] = update
} }
if olds.Dockerfile.Location != news.Dockerfile.Location { dockerfile, _, _ := news.Context.validate(true, news.Dockerfile)
diff["dockerfile.location"] = update if !reflect.DeepEqual(olds.Dockerfile, dockerfile) {
} diff["dockerfile"] = update
if olds.Dockerfile.Inline != news.Dockerfile.Inline {
diff["dockerfile.inline"] = update
} }
// Use string comparison to ignore any manifests attached to the export. // Use string comparison to ignore any manifests attached to the export.
if fmt.Sprint(olds.Exports) != fmt.Sprint(news.Exports) { if fmt.Sprint(olds.Exports) != fmt.Sprint(news.Exports) {
@@ -941,10 +930,10 @@ func (*Image) Diff(
if !reflect.DeepEqual(olds.Platforms, news.Platforms) { if !reflect.DeepEqual(olds.Platforms, news.Platforms) {
diff["platforms"] = update diff["platforms"] = update
} }
if olds.Pull != news.Pull { if !reflect.DeepEqual(olds.Pull, news.Pull) {
diff["pull"] = update diff["pull"] = update
} }
if olds.Push != news.Push { if !reflect.DeepEqual(olds.Push, news.Push) {
diff["push"] = update diff["push"] = update
} }
if !reflect.DeepEqual(olds.Secrets, news.Secrets) { if !reflect.DeepEqual(olds.Secrets, news.Secrets) {
@@ -969,7 +958,7 @@ func (*Image) Diff(
// Check if anything has changed in our build context. // Check if anything has changed in our build context.
hash, err := hashBuildContext( hash, err := hashBuildContext(
news.Context.Location, news.Context.Location,
news.Dockerfile.Location, dockerfile.Location,
news.Context.Named.Map(), news.Context.Named.Map(),
) )
if err != nil { if err != nil {

View File

@@ -82,6 +82,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty( "tags": resource.NewArrayProperty(
[]resource.PropertyValue{ []resource.PropertyValue{
resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e"), resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e"),
@@ -129,6 +130,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty([]resource.PropertyValue{}), "tags": resource.NewArrayProperty([]resource.PropertyValue{}),
"context": resource.NewObjectProperty(resource.PropertyMap{ "context": resource.NewObjectProperty(resource.PropertyMap{
"location": resource.NewStringProperty("testdata/noop"), "location": resource.NewStringProperty("testdata/noop"),
@@ -157,6 +159,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty( "tags": resource.NewArrayProperty(
[]resource.PropertyValue{resource.NewStringProperty("invalid-exports")}, []resource.PropertyValue{resource.NewStringProperty("invalid-exports")},
), ),
@@ -189,6 +192,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty( "tags": resource.NewArrayProperty(
[]resource.PropertyValue{resource.NewStringProperty("foo")}, []resource.PropertyValue{resource.NewStringProperty("foo")},
), ),
@@ -215,6 +219,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty( "tags": resource.NewArrayProperty(
[]resource.PropertyValue{resource.NewStringProperty("foo")}, []resource.PropertyValue{resource.NewStringProperty("foo")},
), ),
@@ -246,6 +251,7 @@ func TestImageLifecycle(t *testing.T) {
op: func(t *testing.T) integration.Operation { op: func(t *testing.T) integration.Operation {
return integration.Operation{ return integration.Operation{
Inputs: resource.PropertyMap{ Inputs: resource.PropertyMap{
"push": resource.NewBoolProperty(false),
"tags": resource.NewArrayProperty( "tags": resource.NewArrayProperty(
[]resource.PropertyValue{ []resource.PropertyValue{
resource.NewStringProperty("default-dockerfile"), resource.NewStringProperty("default-dockerfile"),
@@ -518,7 +524,7 @@ func TestImageDiff(t *testing.T) {
wantChanges: true, wantChanges: true,
}, },
{ {
name: "diff if buildOnPreview changes", name: "diff if buildOnPreview doesn't change",
olds: func(*testing.T, ImageState) ImageState { return baseState }, olds: func(*testing.T, ImageState) ImageState { return baseState },
news: func(t *testing.T, ia ImageArgs) ImageArgs { news: func(t *testing.T, ia ImageArgs) ImageArgs {
val := true val := true
@@ -527,6 +533,16 @@ func TestImageDiff(t *testing.T) {
}, },
wantChanges: true, wantChanges: true,
}, },
{
name: "diff if buildOnPreview changes",
olds: func(*testing.T, ImageState) ImageState { return baseState },
news: func(t *testing.T, ia ImageArgs) ImageArgs {
val := false
ia.BuildOnPreview = &val
return ia
},
wantChanges: true,
},
{ {
name: "diff if ssh changes", name: "diff if ssh changes",
olds: func(*testing.T, ImageState) ImageState { return baseState }, olds: func(*testing.T, ImageState) ImageState { return baseState },

View File

@@ -64,13 +64,25 @@ type IndexState struct {
// Annotate sets docstrings and defaults on Index. // Annotate sets docstrings and defaults on Index.
func (i *Index) Annotate(a infer.Annotator) { func (i *Index) Annotate(a infer.Annotator) {
a.Describe(&i, dedent(` a.Describe(&i, dedent(`
An index (or manifest list) referencing one or more existing images. A wrapper around "docker buildx imagetools create" to create an index
(or manifest list) referencing one or more existing images.
Useful for crafting a multi-platform image from several In most cases you do not need an "Index" to build a multi-platform
platform-specific images. image -- specifying multiple platforms on the "Image" will handle this
for you automatically.
This creates an OCI image index or a Docker manifest list depending on However, as of April 2024, building multi-platform images _with
the media types of the source images. 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.
`)+ `)+
"\n\n"+_indexExamples, "\n\n"+_indexExamples,
) )

View File

@@ -69,14 +69,13 @@ func NewBuildxProvider() provider.Provider {
return infer.Provider( return infer.Provider(
infer.Options{ infer.Options{
Metadata: pschema.Metadata{ Metadata: pschema.Metadata{
DisplayName: "docker-build", DisplayName: "docker-build",
Keywords: []string{"docker", "buildkit", "buildx"}, Keywords: []string{"docker", "buildkit", "buildx", "kind/native"},
Description: "A Pulumi provider for Docker buildx", Description: "A Pulumi provider for building modern Docker images with buildx and BuildKit.",
Homepage: "https://pulumi.io", Homepage: "https://pulumi.com",
Publisher: "pulumi", Publisher: "pulumi",
License: "Apache-2.0", License: "Apache-2.0",
Repository: "https://github.com/pulumi/pulumi-docker-build", Repository: "https://github.com/pulumi/pulumi-docker-build",
PluginDownloadURL: "github.com/pulumi/pulumi-docker-build",
LanguageMap: map[string]any{ LanguageMap: map[string]any{
"go": gogen.GoPackageInfo{ "go": gogen.GoPackageInfo{
// GenerateResourceContainerTypes: true, // GenerateResourceContainerTypes: true,

View File

@@ -27,7 +27,7 @@ import (
) )
// Version is initialized by the Go linker to contain the semver of this build. // Version is initialized by the Go linker to contain the semver of this build.
var Version string var Version = "0.0.1"
// Name needs to match $PACK in Makefile. // Name needs to match $PACK in Makefile.
const Name string = "docker-build" const Name string = "docker-build"
@@ -62,7 +62,7 @@ func (p configurableProvider) Configure(
ctx context.Context, ctx context.Context,
request *rpc.ConfigureRequest, request *rpc.ConfigureRequest,
) (*rpc.ConfigureResponse, error) { ) (*rpc.ConfigureResponse, error) {
schema := internal.Schema(ctx, "") schema := internal.Schema(ctx, Version)
ce := deprecated.New(schema.Config) ce := deprecated.New(schema.Config)
buildxReq := request buildxReq := request
if props, err := ce.UnmarshalProperties(request.Args); err == nil { if props, err := ce.UnmarshalProperties(request.Args); err == nil {

View File

@@ -18,8 +18,10 @@ import (
"context" "context"
"testing" "testing"
"github.com/blang/semver"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
emptypb "google.golang.org/protobuf/types/known/emptypb"
"google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/structpb"
pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go"
@@ -48,3 +50,19 @@ func TestConfigure(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
} }
func TestVersion(t *testing.T) {
t.Parallel()
_, err := semver.Parse(Version)
assert.NoError(t, err)
p, err := New(nil)
require.NoError(t, err)
info, err := p.GetPluginInfo(context.Background(), &emptypb.Empty{})
assert.NoError(t, err)
require.NotEqual(t, "", Version)
assert.Equal(t, Version, info.Version)
}

View File

@@ -1 +1 @@
A Pulumi provider for Docker buildx A Pulumi provider for building modern Docker images with buildx and BuildKit.

182
sdk/dotnet/Image.cs generated
View File

@@ -15,20 +15,14 @@ namespace Pulumi.DockerBuild
/// ///
/// ## Stability /// ## Stability
/// ///
/// **This resource is experimental and subject to change.** /// **This resource is pre-1.0 and in public preview.**
/// ///
/// API types are unstable. Subsequent releases _may_ require manual edits /// We will strive to keep APIs and behavior as stable as possible, but we
/// to your state file(s) in order to adopt API changes. /// cannot guarantee stability until version 1.0.
/// ///
/// `retainOnDelete: true` is recommended with this resource until it is /// ## Migrating Pulumi Docker v3 and v4 Image resources
/// stable. This enables future API changes to be adopted more easily by renaming
/// resources.
/// ///
/// Only use this resource if you understand and accept the risks. /// 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.
///
/// ## Migrating v3 and v4 Image resources
///
/// The `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. /// Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
/// ///
/// ### Behavioral differences /// ### Behavioral differences
@@ -42,19 +36,17 @@ namespace Pulumi.DockerBuild
/// ///
/// Version `4.x` changed build-on-preview behavior to be opt-in. /// 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. /// By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
/// Some users felt this made previews in CI less helpful because they no longer detected bad images by default. /// Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
/// ///
/// The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. /// The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
/// By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. /// This behavior can be changed by specifying `buildOnPreview`.
/// Previews run in non-CI environments will not build images.
/// This behavior is still configurable with `buildOnPreview`.
/// ///
/// #### Push behavior /// #### Push behavior
/// ///
/// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. /// 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. /// They expose a `skipPush: true` option to disable pushing.
/// ///
/// The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. /// 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`). /// 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. /// 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.
@@ -127,7 +119,7 @@ namespace Pulumi.DockerBuild
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Aws = Pulumi.Aws; /// using Aws = Pulumi.Aws;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
@@ -138,13 +130,13 @@ namespace Pulumi.DockerBuild
/// RegistryId = ecrRepository.RegistryId, /// RegistryId = ecrRepository.RegistryId,
/// }); /// });
/// ///
/// var myImage = new Dockerbuild.Image("my-image", new() /// var myImage = new DockerBuild.Image("my-image", new()
/// { /// {
/// CacheFrom = new[] /// CacheFrom = new[]
/// { /// {
/// new Dockerbuild.Inputs.CacheFromArgs /// new DockerBuild.Inputs.CacheFromArgs
/// { /// {
/// Registry = new Dockerbuild.Inputs.CacheFromRegistryArgs /// Registry = new DockerBuild.Inputs.CacheFromRegistryArgs
/// { /// {
/// Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl =&gt; $"{repositoryUrl}:cache"), /// Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl =&gt; $"{repositoryUrl}:cache"),
/// }, /// },
@@ -152,9 +144,9 @@ namespace Pulumi.DockerBuild
/// }, /// },
/// CacheTo = new[] /// CacheTo = new[]
/// { /// {
/// new Dockerbuild.Inputs.CacheToArgs /// new DockerBuild.Inputs.CacheToArgs
/// { /// {
/// Registry = new Dockerbuild.Inputs.CacheToRegistryArgs /// Registry = new DockerBuild.Inputs.CacheToRegistryArgs
/// { /// {
/// ImageManifest = true, /// ImageManifest = true,
/// OciMediaTypes = true, /// OciMediaTypes = true,
@@ -162,14 +154,14 @@ namespace Pulumi.DockerBuild
/// }, /// },
/// }, /// },
/// }, /// },
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "./app", /// Location = "./app",
/// }, /// },
/// Push = true, /// Push = true,
/// Registries = new[] /// Registries = new[]
/// { /// {
/// new Dockerbuild.Inputs.RegistryArgs /// new DockerBuild.Inputs.RegistryArgs
/// { /// {
/// Address = ecrRepository.RepositoryUrl, /// Address = ecrRepository.RepositoryUrl,
/// Password = authToken.Apply(getAuthorizationTokenResult =&gt; getAuthorizationTokenResult.Password), /// Password = authToken.Apply(getAuthorizationTokenResult =&gt; getAuthorizationTokenResult.Password),
@@ -194,21 +186,22 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Platforms = new[] /// Platforms = new[]
/// { /// {
/// Dockerbuild.Platform.Plan9_amd64, /// DockerBuild.Platform.Plan9_amd64,
/// Dockerbuild.Platform.Plan9_386, /// DockerBuild.Platform.Plan9_386,
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -219,20 +212,20 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Push = true, /// Push = true,
/// Registries = new[] /// Registries = new[]
/// { /// {
/// new Dockerbuild.Inputs.RegistryArgs /// new DockerBuild.Inputs.RegistryArgs
/// { /// {
/// Address = "docker.io", /// Address = "docker.io",
/// Password = dockerHubPassword, /// Password = dockerHubPassword,
@@ -257,17 +250,17 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// CacheFrom = new[] /// CacheFrom = new[]
/// { /// {
/// new Dockerbuild.Inputs.CacheFromArgs /// new DockerBuild.Inputs.CacheFromArgs
/// { /// {
/// Local = new Dockerbuild.Inputs.CacheFromLocalArgs /// Local = new DockerBuild.Inputs.CacheFromLocalArgs
/// { /// {
/// Src = "tmp/cache", /// Src = "tmp/cache",
/// }, /// },
@@ -275,19 +268,20 @@ namespace Pulumi.DockerBuild
/// }, /// },
/// CacheTo = new[] /// CacheTo = new[]
/// { /// {
/// new Dockerbuild.Inputs.CacheToArgs /// new DockerBuild.Inputs.CacheToArgs
/// { /// {
/// Local = new Dockerbuild.Inputs.CacheToLocalArgs /// Local = new DockerBuild.Inputs.CacheToLocalArgs
/// { /// {
/// Dest = "tmp/cache", /// Dest = "tmp/cache",
/// Mode = Dockerbuild.CacheMode.Max, /// Mode = DockerBuild.CacheMode.Max,
/// }, /// },
/// }, /// },
/// }, /// },
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -298,21 +292,22 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Builder = new Dockerbuild.Inputs.BuilderConfigArgs /// Builder = new DockerBuild.Inputs.BuilderConfigArgs
/// { /// {
/// Name = "cloud-builder-name", /// Name = "cloud-builder-name",
/// }, /// },
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Exec = true, /// Exec = true,
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -323,20 +318,21 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// BuildArgs = /// BuildArgs =
/// { /// {
/// { "SET_ME_TO_TRUE", "true" }, /// { "SET_ME_TO_TRUE", "true" },
/// }, /// },
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -347,16 +343,17 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Push = false,
/// Target = "build-me", /// Target = "build-me",
/// }); /// });
/// ///
@@ -368,23 +365,24 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// Named = /// Named =
/// { /// {
/// { "golang:latest", new Dockerbuild.Inputs.ContextArgs /// { "golang:latest", new DockerBuild.Inputs.ContextArgs
/// { /// {
/// Location = "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", /// Location = "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
/// } }, /// } },
/// }, /// },
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -395,16 +393,17 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", /// Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -415,22 +414,23 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Dockerfile = new Dockerbuild.Inputs.DockerfileArgs /// Dockerfile = new DockerBuild.Inputs.DockerfileArgs
/// { /// {
/// Inline = @"FROM busybox /// Inline = @"FROM busybox
/// COPY hello.c ./ /// COPY hello.c ./
/// ", /// ",
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -441,20 +441,21 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "https://github.com/docker-library/hello-world.git", /// Location = "https://github.com/docker-library/hello-world.git",
/// }, /// },
/// Dockerfile = new Dockerbuild.Inputs.DockerfileArgs /// Dockerfile = new DockerBuild.Inputs.DockerfileArgs
/// { /// {
/// Location = "app/Dockerfile", /// Location = "app/Dockerfile",
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -465,26 +466,27 @@ namespace Pulumi.DockerBuild
/// using System.Collections.Generic; /// using System.Collections.Generic;
/// using System.Linq; /// using System.Linq;
/// using Pulumi; /// using Pulumi;
/// using Dockerbuild = Pulumi.Dockerbuild; /// using DockerBuild = Pulumi.DockerBuild;
/// ///
/// return await Deployment.RunAsync(() =&gt; /// return await Deployment.RunAsync(() =&gt;
/// { /// {
/// var image = new Dockerbuild.Image("image", new() /// var image = new DockerBuild.Image("image", new()
/// { /// {
/// Context = new Dockerbuild.Inputs.BuildContextArgs /// Context = new DockerBuild.Inputs.BuildContextArgs
/// { /// {
/// Location = "app", /// Location = "app",
/// }, /// },
/// Exports = new[] /// Exports = new[]
/// { /// {
/// new Dockerbuild.Inputs.ExportArgs /// new DockerBuild.Inputs.ExportArgs
/// { /// {
/// Docker = new Dockerbuild.Inputs.ExportDockerArgs /// Docker = new DockerBuild.Inputs.ExportDockerArgs
/// { /// {
/// Tar = true, /// Tar = true,
/// }, /// },
/// }, /// },
/// }, /// },
/// Push = false,
/// }); /// });
/// ///
/// }); /// });
@@ -517,20 +519,17 @@ namespace Pulumi.DockerBuild
public Output<ImmutableDictionary<string, string>?> BuildArgs { get; private set; } = null!; public Output<ImmutableDictionary<string, string>?> BuildArgs { get; private set; } = null!;
/// <summary> /// <summary>
/// By default, preview behavior depends on the execution environment. If /// Setting this to `false` will always skip image builds during previews,
/// Pulumi detects the operation is running on a CI system (GitHub Actions, /// and setting it to `true` will always build images during previews.
/// Travis CI, Azure Pipelines, etc.) then it will build images during
/// previews as a safeguard. Otherwise, if not running on CI, previews will
/// not build images.
///
/// Setting this to `false` forces previews to never perform builds, and
/// setting it to `true` will always build the image during previews.
/// ///
/// Images built during previews are never exported to registries, however /// Images built during previews are never exported to registries, however
/// cache manifests are still exported. /// cache manifests are still exported.
/// ///
/// On-disk Dockerfiles are always validated for syntactic correctness /// On-disk Dockerfiles are always validated for syntactic correctness
/// regardless of this setting. /// regardless of this setting.
///
/// Defaults to `true` as a safeguard against broken images merging as part
/// of CI pipelines.
/// </summary> /// </summary>
[Output("buildOnPreview")] [Output("buildOnPreview")]
public Output<bool?> BuildOnPreview { get; private set; } = null!; public Output<bool?> BuildOnPreview { get; private set; } = null!;
@@ -692,7 +691,7 @@ namespace Pulumi.DockerBuild
/// Equivalent to Docker's `--push` flag. /// Equivalent to Docker's `--push` flag.
/// </summary> /// </summary>
[Output("push")] [Output("push")]
public Output<bool?> Push { get; private set; } = null!; public Output<bool> Push { get; private set; } = null!;
/// <summary> /// <summary>
/// If the image was pushed to any registries then this will contain a /// If the image was pushed to any registries then this will contain a
@@ -776,7 +775,7 @@ namespace Pulumi.DockerBuild
/// <param name="name">The unique name of the resource</param> /// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param> /// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param> /// <param name="options">A bag of options that control this resource's behavior</param>
public Image(string name, ImageArgs? args = null, CustomResourceOptions? options = null) public Image(string name, ImageArgs args, CustomResourceOptions? options = null)
: base("docker-build:index:Image", name, args ?? new ImageArgs(), MakeResourceOptions(options, "")) : base("docker-build:index:Image", name, args ?? new ImageArgs(), MakeResourceOptions(options, ""))
{ {
} }
@@ -791,7 +790,6 @@ namespace Pulumi.DockerBuild
var defaultOptions = new CustomResourceOptions var defaultOptions = new CustomResourceOptions
{ {
Version = Utilities.Version, Version = Utilities.Version,
PluginDownloadURL = "github.com/pulumi/pulumi-docker-build",
}; };
var merged = CustomResourceOptions.Merge(defaultOptions, options); var merged = CustomResourceOptions.Merge(defaultOptions, options);
// Override the ID if one was specified for consistency with other language SDKs. // Override the ID if one was specified for consistency with other language SDKs.
@@ -849,20 +847,17 @@ namespace Pulumi.DockerBuild
} }
/// <summary> /// <summary>
/// By default, preview behavior depends on the execution environment. If /// Setting this to `false` will always skip image builds during previews,
/// Pulumi detects the operation is running on a CI system (GitHub Actions, /// and setting it to `true` will always build images during previews.
/// Travis CI, Azure Pipelines, etc.) then it will build images during
/// previews as a safeguard. Otherwise, if not running on CI, previews will
/// not build images.
///
/// Setting this to `false` forces previews to never perform builds, and
/// setting it to `true` will always build the image during previews.
/// ///
/// Images built during previews are never exported to registries, however /// Images built during previews are never exported to registries, however
/// cache manifests are still exported. /// cache manifests are still exported.
/// ///
/// On-disk Dockerfiles are always validated for syntactic correctness /// On-disk Dockerfiles are always validated for syntactic correctness
/// regardless of this setting. /// regardless of this setting.
///
/// Defaults to `true` as a safeguard against broken images merging as part
/// of CI pipelines.
/// </summary> /// </summary>
[Input("buildOnPreview")] [Input("buildOnPreview")]
public Input<bool>? BuildOnPreview { get; set; } public Input<bool>? BuildOnPreview { get; set; }
@@ -1033,8 +1028,8 @@ namespace Pulumi.DockerBuild
/// ///
/// Equivalent to Docker's `--push` flag. /// Equivalent to Docker's `--push` flag.
/// </summary> /// </summary>
[Input("push")] [Input("push", required: true)]
public Input<bool>? Push { get; set; } public Input<bool> Push { get; set; } = null!;
[Input("registries")] [Input("registries")]
private InputList<Inputs.RegistryArgs>? _registries; private InputList<Inputs.RegistryArgs>? _registries;
@@ -1117,6 +1112,7 @@ namespace Pulumi.DockerBuild
public ImageArgs() public ImageArgs()
{ {
BuildOnPreview = true;
Network = Pulumi.DockerBuild.NetworkMode.@Default; Network = Pulumi.DockerBuild.NetworkMode.@Default;
} }
public static new ImageArgs Empty => new ImageArgs(); public static new ImageArgs Empty => new ImageArgs();

23
sdk/dotnet/Index.cs generated
View File

@@ -10,13 +10,25 @@ using Pulumi.Serialization;
namespace Pulumi.DockerBuild namespace Pulumi.DockerBuild
{ {
/// <summary> /// <summary>
/// An index (or manifest list) referencing one or more existing images. /// A wrapper around `docker buildx imagetools create` to create an index
/// (or manifest list) referencing one or more existing images.
/// ///
/// Useful for crafting a multi-platform image from several /// In most cases you do not need an `Index` to build a multi-platform
/// platform-specific images. /// image -- specifying multiple platforms on the `Image` will handle this
/// for you automatically.
/// ///
/// This creates an OCI image index or a Docker manifest list depending on /// However, as of April 2024, building multi-platform images _with
/// the media types of the source images. /// 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 /// ## Example Usage
/// ### Multi-platform registry caching /// ### Multi-platform registry caching
@@ -182,7 +194,6 @@ namespace Pulumi.DockerBuild
var defaultOptions = new CustomResourceOptions var defaultOptions = new CustomResourceOptions
{ {
Version = Utilities.Version, Version = Utilities.Version,
PluginDownloadURL = "github.com/pulumi/pulumi-docker-build",
}; };
var merged = CustomResourceOptions.Merge(defaultOptions, options); var merged = CustomResourceOptions.Merge(defaultOptions, options);
// Override the ID if one was specified for consistency with other language SDKs. // Override the ID if one was specified for consistency with other language SDKs.

View File

@@ -36,7 +36,6 @@ namespace Pulumi.DockerBuild
var defaultOptions = new CustomResourceOptions var defaultOptions = new CustomResourceOptions
{ {
Version = Utilities.Version, Version = Utilities.Version,
PluginDownloadURL = "github.com/pulumi/pulumi-docker-build",
}; };
var merged = CustomResourceOptions.Merge(defaultOptions, options); var merged = CustomResourceOptions.Merge(defaultOptions, options);
// Override the ID if one was specified for consistency with other language SDKs. // Override the ID if one was specified for consistency with other language SDKs.

View File

@@ -4,9 +4,9 @@
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>pulumi</Authors> <Authors>pulumi</Authors>
<Company>pulumi</Company> <Company>pulumi</Company>
<Description>A Pulumi provider for Docker buildx</Description> <Description>A Pulumi provider for building modern Docker images with buildx and BuildKit.</Description>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression> <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<PackageProjectUrl>https://pulumi.io</PackageProjectUrl> <PackageProjectUrl>https://pulumi.com</PackageProjectUrl>
<RepositoryUrl>https://github.com/pulumi/pulumi-docker-build</RepositoryUrl> <RepositoryUrl>https://github.com/pulumi/pulumi-docker-build</RepositoryUrl>
<PackageIcon>logo.png</PackageIcon> <PackageIcon>logo.png</PackageIcon>

2
sdk/dotnet/README.md generated
View File

@@ -1 +1 @@
A Pulumi provider for Docker buildx A Pulumi provider for building modern Docker images with buildx and BuildKit.

View File

@@ -53,7 +53,6 @@ namespace Pulumi.DockerBuild
{ {
var dst = src ?? new global::Pulumi.InvokeOptions{}; var dst = src ?? new global::Pulumi.InvokeOptions{};
dst.Version = src?.Version ?? Version; dst.Version = src?.Version ?? Version;
dst.PluginDownloadURL = src?.PluginDownloadURL ?? "github.com/pulumi/pulumi-docker-build";
return dst; return dst;
} }

View File

@@ -1,5 +1,4 @@
{ {
"resource": true, "resource": true,
"name": "docker-build", "name": "docker-build"
"server": "github.com/pulumi/pulumi-docker-build"
} }

View File

@@ -1,2 +1,2 @@
// A Pulumi provider for Docker buildx // A Pulumi provider for building modern Docker images with buildx and BuildKit.
package dockerbuild package dockerbuild

View File

@@ -7,6 +7,7 @@ import (
"context" "context"
"reflect" "reflect"
"errors"
"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal" "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumix" "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
@@ -17,20 +18,14 @@ import (
// //
// ## Stability // ## Stability
// //
// **This resource is experimental and subject to change.** // **This resource is pre-1.0 and in public preview.**
// //
// API types are unstable. Subsequent releases _may_ require manual edits // We will strive to keep APIs and behavior as stable as possible, but we
// to your state file(s) in order to adopt API changes. // cannot guarantee stability until version 1.0.
// //
// `retainOnDelete: true` is recommended with this resource until it is // ## Migrating Pulumi Docker v3 and v4 Image resources
// stable. This enables future API changes to be adopted more easily by renaming
// resources.
// //
// Only use this resource if you understand and accept the risks. // 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.
//
// ## Migrating v3 and v4 Image resources
//
// The `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. // Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
// //
// ### Behavioral differences // ### Behavioral differences
@@ -44,19 +39,17 @@ import (
// //
// Version `4.x` changed build-on-preview behavior to be opt-in. // 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. // By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
// Some users felt this made previews in CI less helpful because they no longer detected bad images by default. // Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
// //
// The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. // The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
// By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. // This behavior can be changed by specifying `buildOnPreview`.
// Previews run in non-CI environments will not build images.
// This behavior is still configurable with `buildOnPreview`.
// //
// #### Push behavior // #### Push behavior
// //
// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. // 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. // They expose a `skipPush: true` option to disable pushing.
// //
// The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. // 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`). // 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. // 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.
@@ -132,7 +125,7 @@ import (
// "fmt" // "fmt"
// //
// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr"
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -203,7 +196,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -214,10 +207,11 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Platforms: dockerbuild.PlatformArray{ // Platforms: docker - build.PlatformArray{
// dockerbuild.Platform_Plan9_amd64, // dockerbuild.Platform_Plan9_amd64,
// dockerbuild.Platform_Plan9_386, // dockerbuild.Platform_Plan9_386,
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -233,7 +227,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -271,7 +265,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -297,6 +291,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -312,7 +307,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -327,6 +322,7 @@ import (
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Exec: pulumi.Bool(true), // Exec: pulumi.Bool(true),
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -342,7 +338,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -356,6 +352,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -371,7 +368,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -382,6 +379,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// Target: pulumi.String("build-me"), // Target: pulumi.String("build-me"),
// }) // })
// if err != nil { // if err != nil {
@@ -398,7 +396,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -414,6 +412,7 @@ import (
// }, // },
// }, // },
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -429,7 +428,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -440,6 +439,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), // Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -455,7 +455,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -469,6 +469,7 @@ import (
// Dockerfile: &dockerbuild.DockerfileArgs{ // Dockerfile: &dockerbuild.DockerfileArgs{
// Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), // Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -484,7 +485,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -498,6 +499,7 @@ import (
// Dockerfile: &dockerbuild.DockerfileArgs{ // Dockerfile: &dockerbuild.DockerfileArgs{
// Location: pulumi.String("app/Dockerfile"), // Location: pulumi.String("app/Dockerfile"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -513,7 +515,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -531,6 +533,7 @@ import (
// }, // },
// }, // },
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -557,20 +560,17 @@ type Image struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs pulumi.StringMapOutput `pulumi:"buildArgs"` BuildArgs pulumi.StringMapOutput `pulumi:"buildArgs"`
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview pulumi.BoolPtrOutput `pulumi:"buildOnPreview"` BuildOnPreview pulumi.BoolPtrOutput `pulumi:"buildOnPreview"`
// Builder configuration. // Builder configuration.
Builder BuilderConfigPtrOutput `pulumi:"builder"` Builder BuilderConfigPtrOutput `pulumi:"builder"`
@@ -666,7 +666,7 @@ type Image struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push pulumi.BoolPtrOutput `pulumi:"push"` Push pulumi.BoolOutput `pulumi:"push"`
// If the image was pushed to any registries then this will contain a // If the image was pushed to any registries then this will contain a
// single fully-qualified tag including the build's digest. // single fully-qualified tag including the build's digest.
// //
@@ -723,9 +723,15 @@ type Image struct {
func NewImage(ctx *pulumi.Context, func NewImage(ctx *pulumi.Context,
name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) {
if args == nil { if args == nil {
args = &ImageArgs{} return nil, errors.New("missing one or more required arguments")
} }
if args.Push == nil {
return nil, errors.New("invalid value for required argument 'Push'")
}
if args.BuildOnPreview == nil {
args.BuildOnPreview = pulumi.BoolPtr(true)
}
if args.Network == nil { if args.Network == nil {
args.Network = NetworkMode("default") args.Network = NetworkMode("default")
} }
@@ -776,20 +782,17 @@ type imageArgs struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs map[string]string `pulumi:"buildArgs"` BuildArgs map[string]string `pulumi:"buildArgs"`
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview *bool `pulumi:"buildOnPreview"` BuildOnPreview *bool `pulumi:"buildOnPreview"`
// Builder configuration. // Builder configuration.
Builder *BuilderConfig `pulumi:"builder"` Builder *BuilderConfig `pulumi:"builder"`
@@ -873,7 +876,7 @@ type imageArgs struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push *bool `pulumi:"push"` Push bool `pulumi:"push"`
// Registry credentials. Required if reading or exporting to private // Registry credentials. Required if reading or exporting to private
// repositories. // repositories.
// //
@@ -927,20 +930,17 @@ type ImageArgs struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs pulumi.StringMapInput BuildArgs pulumi.StringMapInput
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview pulumi.BoolPtrInput BuildOnPreview pulumi.BoolPtrInput
// Builder configuration. // Builder configuration.
Builder BuilderConfigPtrInput Builder BuilderConfigPtrInput
@@ -1024,7 +1024,7 @@ type ImageArgs struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push pulumi.BoolPtrInput Push pulumi.BoolInput
// Registry credentials. Required if reading or exporting to private // Registry credentials. Required if reading or exporting to private
// repositories. // repositories.
// //
@@ -1131,20 +1131,17 @@ func (o ImageOutput) BuildArgs() pulumi.StringMapOutput {
return o.ApplyT(func(v *Image) pulumi.StringMapOutput { return v.BuildArgs }).(pulumi.StringMapOutput) return o.ApplyT(func(v *Image) pulumi.StringMapOutput { return v.BuildArgs }).(pulumi.StringMapOutput)
} }
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
func (o ImageOutput) BuildOnPreview() pulumi.BoolPtrOutput { func (o ImageOutput) BuildOnPreview() pulumi.BoolPtrOutput {
return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.BuildOnPreview }).(pulumi.BoolPtrOutput) return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.BuildOnPreview }).(pulumi.BoolPtrOutput)
} }
@@ -1288,8 +1285,8 @@ func (o ImageOutput) Pull() pulumi.BoolPtrOutput {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
func (o ImageOutput) Push() pulumi.BoolPtrOutput { func (o ImageOutput) Push() pulumi.BoolOutput {
return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.Push }).(pulumi.BoolPtrOutput) return o.ApplyT(func(v *Image) pulumi.BoolOutput { return v.Push }).(pulumi.BoolOutput)
} }
// If the image was pushed to any registries then this will contain a // If the image was pushed to any registries then this will contain a

View File

@@ -13,13 +13,25 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumix" "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
) )
// An index (or manifest list) referencing one or more existing images. // A wrapper around `docker buildx imagetools create` to create an index
// (or manifest list) referencing one or more existing images.
// //
// Useful for crafting a multi-platform image from several // In most cases you do not need an `Index` to build a multi-platform
// platform-specific images. // image -- specifying multiple platforms on the `Image` will handle this
// for you automatically.
// //
// This creates an OCI image index or a Docker manifest list depending on // However, as of April 2024, building multi-platform images _with
// the media types of the source images. // 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 // ## Example Usage
// ### Multi-platform registry caching // ### Multi-platform registry caching

View File

@@ -164,7 +164,7 @@ func callPlainInner(
// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. // PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource.
func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption {
defaults := []pulumi.ResourceOption{} defaults := []pulumi.ResourceOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("github.com/pulumi/pulumi-docker-build"))
version := SdkVersion version := SdkVersion
if !version.Equals(semver.Version{}) { if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String())) defaults = append(defaults, pulumi.Version(version.String()))
@@ -175,7 +175,7 @@ func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOptio
// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. // PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke.
func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption {
defaults := []pulumi.InvokeOption{} defaults := []pulumi.InvokeOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("github.com/pulumi/pulumi-docker-build"))
version := SdkVersion version := SdkVersion
if !version.Equals(semver.Version{}) { if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String())) defaults = append(defaults, pulumi.Version(version.String()))

View File

@@ -1,5 +1,4 @@
{ {
"resource": true, "resource": true,
"name": "docker-build", "name": "docker-build"
"server": "github.com/pulumi/pulumi-docker-build"
} }

View File

@@ -1,2 +1,2 @@
// A Pulumi provider for Docker buildx // A Pulumi provider for building modern Docker images with buildx and BuildKit.
package dockerbuild package dockerbuild

View File

@@ -7,6 +7,7 @@ import (
"context" "context"
"reflect" "reflect"
"errors"
"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal" "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumix" "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
@@ -17,20 +18,14 @@ import (
// //
// ## Stability // ## Stability
// //
// **This resource is experimental and subject to change.** // **This resource is pre-1.0 and in public preview.**
// //
// API types are unstable. Subsequent releases _may_ require manual edits // We will strive to keep APIs and behavior as stable as possible, but we
// to your state file(s) in order to adopt API changes. // cannot guarantee stability until version 1.0.
// //
// `retainOnDelete: true` is recommended with this resource until it is // ## Migrating Pulumi Docker v3 and v4 Image resources
// stable. This enables future API changes to be adopted more easily by renaming
// resources.
// //
// Only use this resource if you understand and accept the risks. // 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.
//
// ## Migrating v3 and v4 Image resources
//
// The `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. // Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
// //
// ### Behavioral differences // ### Behavioral differences
@@ -44,19 +39,17 @@ import (
// //
// Version `4.x` changed build-on-preview behavior to be opt-in. // 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. // By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
// Some users felt this made previews in CI less helpful because they no longer detected bad images by default. // Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
// //
// The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. // The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
// By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. // This behavior can be changed by specifying `buildOnPreview`.
// Previews run in non-CI environments will not build images.
// This behavior is still configurable with `buildOnPreview`.
// //
// #### Push behavior // #### Push behavior
// //
// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. // 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. // They expose a `skipPush: true` option to disable pushing.
// //
// The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. // 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`). // 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. // 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.
@@ -132,7 +125,7 @@ import (
// "fmt" // "fmt"
// //
// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr"
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -203,7 +196,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -214,10 +207,11 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Platforms: dockerbuild.PlatformArray{ // Platforms: docker - build.PlatformArray{
// dockerbuild.Platform_Plan9_amd64, // dockerbuild.Platform_Plan9_amd64,
// dockerbuild.Platform_Plan9_386, // dockerbuild.Platform_Plan9_386,
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -233,7 +227,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -271,7 +265,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -297,6 +291,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -312,7 +307,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -327,6 +322,7 @@ import (
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Exec: pulumi.Bool(true), // Exec: pulumi.Bool(true),
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -342,7 +338,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -356,6 +352,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -371,7 +368,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -382,6 +379,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("app"), // Location: pulumi.String("app"),
// }, // },
// Push: pulumi.Bool(false),
// Target: pulumi.String("build-me"), // Target: pulumi.String("build-me"),
// }) // })
// if err != nil { // if err != nil {
@@ -398,7 +396,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -414,6 +412,7 @@ import (
// }, // },
// }, // },
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -429,7 +428,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -440,6 +439,7 @@ import (
// Context: &dockerbuild.BuildContextArgs{ // Context: &dockerbuild.BuildContextArgs{
// Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), // Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -455,7 +455,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -469,6 +469,7 @@ import (
// Dockerfile: &dockerbuild.DockerfileArgs{ // Dockerfile: &dockerbuild.DockerfileArgs{
// Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), // Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -484,7 +485,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -498,6 +499,7 @@ import (
// Dockerfile: &dockerbuild.DockerfileArgs{ // Dockerfile: &dockerbuild.DockerfileArgs{
// Location: pulumi.String("app/Dockerfile"), // Location: pulumi.String("app/Dockerfile"),
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -513,7 +515,7 @@ import (
// //
// import ( // import (
// //
// "github.com/pulumi/pulumi-dockerbuild/sdk/go/dockerbuild" // "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
// //
// ) // )
@@ -531,6 +533,7 @@ import (
// }, // },
// }, // },
// }, // },
// Push: pulumi.Bool(false),
// }) // })
// if err != nil { // if err != nil {
// return err // return err
@@ -557,20 +560,17 @@ type Image struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs pulumix.MapOutput[string] `pulumi:"buildArgs"` BuildArgs pulumix.MapOutput[string] `pulumi:"buildArgs"`
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview pulumix.Output[*bool] `pulumi:"buildOnPreview"` BuildOnPreview pulumix.Output[*bool] `pulumi:"buildOnPreview"`
// Builder configuration. // Builder configuration.
Builder pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput] `pulumi:"builder"` Builder pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput] `pulumi:"builder"`
@@ -666,7 +666,7 @@ type Image struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push pulumix.Output[*bool] `pulumi:"push"` Push pulumix.Output[bool] `pulumi:"push"`
// If the image was pushed to any registries then this will contain a // If the image was pushed to any registries then this will contain a
// single fully-qualified tag including the build's digest. // single fully-qualified tag including the build's digest.
// //
@@ -723,9 +723,15 @@ type Image struct {
func NewImage(ctx *pulumi.Context, func NewImage(ctx *pulumi.Context,
name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) {
if args == nil { if args == nil {
args = &ImageArgs{} return nil, errors.New("missing one or more required arguments")
} }
if args.Push == nil {
return nil, errors.New("invalid value for required argument 'Push'")
}
if args.BuildOnPreview == nil {
args.BuildOnPreview = pulumix.Ptr(true)
}
if args.Network == nil { if args.Network == nil {
args.Network = pulumix.Ptr(NetworkMode("default")) args.Network = pulumix.Ptr(NetworkMode("default"))
} }
@@ -776,20 +782,17 @@ type imageArgs struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs map[string]string `pulumi:"buildArgs"` BuildArgs map[string]string `pulumi:"buildArgs"`
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview *bool `pulumi:"buildOnPreview"` BuildOnPreview *bool `pulumi:"buildOnPreview"`
// Builder configuration. // Builder configuration.
Builder *BuilderConfig `pulumi:"builder"` Builder *BuilderConfig `pulumi:"builder"`
@@ -873,7 +876,7 @@ type imageArgs struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push *bool `pulumi:"push"` Push bool `pulumi:"push"`
// Registry credentials. Required if reading or exporting to private // Registry credentials. Required if reading or exporting to private
// repositories. // repositories.
// //
@@ -927,20 +930,17 @@ type ImageArgs struct {
// //
// Equivalent to Docker's `--build-arg` flag. // Equivalent to Docker's `--build-arg` flag.
BuildArgs pulumix.Input[map[string]string] BuildArgs pulumix.Input[map[string]string]
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
BuildOnPreview pulumix.Input[*bool] BuildOnPreview pulumix.Input[*bool]
// Builder configuration. // Builder configuration.
Builder pulumix.Input[*BuilderConfigArgs] Builder pulumix.Input[*BuilderConfigArgs]
@@ -1024,7 +1024,7 @@ type ImageArgs struct {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
Push pulumix.Input[*bool] Push pulumix.Input[bool]
// Registry credentials. Required if reading or exporting to private // Registry credentials. Required if reading or exporting to private
// repositories. // repositories.
// //
@@ -1110,20 +1110,17 @@ func (o ImageOutput) BuildArgs() pulumix.MapOutput[string] {
return pulumix.MapOutput[string]{OutputState: unwrapped.OutputState} return pulumix.MapOutput[string]{OutputState: unwrapped.OutputState}
} }
// By default, preview behavior depends on the execution environment. If // Setting this to `false` will always skip image builds during previews,
// Pulumi detects the operation is running on a CI system (GitHub Actions, // and setting it to `true` will always build images during previews.
// Travis CI, Azure Pipelines, etc.) then it will build images during
// previews as a safeguard. Otherwise, if not running on CI, previews will
// not build images.
//
// Setting this to `false` forces previews to never perform builds, and
// setting it to `true` will always build the image during previews.
// //
// Images built during previews are never exported to registries, however // Images built during previews are never exported to registries, however
// cache manifests are still exported. // cache manifests are still exported.
// //
// On-disk Dockerfiles are always validated for syntactic correctness // On-disk Dockerfiles are always validated for syntactic correctness
// regardless of this setting. // regardless of this setting.
//
// Defaults to `true` as a safeguard against broken images merging as part
// of CI pipelines.
func (o ImageOutput) BuildOnPreview() pulumix.Output[*bool] { func (o ImageOutput) BuildOnPreview() pulumix.Output[*bool] {
value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.BuildOnPreview }) value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.BuildOnPreview })
return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) return pulumix.Flatten[*bool, pulumix.Output[*bool]](value)
@@ -1291,9 +1288,9 @@ func (o ImageOutput) Pull() pulumix.Output[*bool] {
// Defaults to `false`. // Defaults to `false`.
// //
// Equivalent to Docker's `--push` flag. // Equivalent to Docker's `--push` flag.
func (o ImageOutput) Push() pulumix.Output[*bool] { func (o ImageOutput) Push() pulumix.Output[bool] {
value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.Push }) value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[bool] { return v.Push })
return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) return pulumix.Flatten[bool, pulumix.Output[bool]](value)
} }
// If the image was pushed to any registries then this will contain a // If the image was pushed to any registries then this will contain a

View File

@@ -13,13 +13,25 @@ import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumix" "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
) )
// An index (or manifest list) referencing one or more existing images. // A wrapper around `docker buildx imagetools create` to create an index
// (or manifest list) referencing one or more existing images.
// //
// Useful for crafting a multi-platform image from several // In most cases you do not need an `Index` to build a multi-platform
// platform-specific images. // image -- specifying multiple platforms on the `Image` will handle this
// for you automatically.
// //
// This creates an OCI image index or a Docker manifest list depending on // However, as of April 2024, building multi-platform images _with
// the media types of the source images. // 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 // ## Example Usage
// ### Multi-platform registry caching // ### Multi-platform registry caching

2
sdk/java/README.md generated
View File

@@ -1 +1 @@
A Pulumi provider for Docker buildx A Pulumi provider for building modern Docker images with buildx and BuildKit.

View File

@@ -31,20 +31,14 @@ import javax.annotation.Nullable;
* *
* ## Stability * ## Stability
* *
* **This resource is experimental and subject to change.** * **This resource is pre-1.0 and in public preview.**
* *
* API types are unstable. Subsequent releases _may_ require manual edits * We will strive to keep APIs and behavior as stable as possible, but we
* to your state file(s) in order to adopt API changes. * cannot guarantee stability until version 1.0.
* *
* `retainOnDelete: true` is recommended with this resource until it is * ## Migrating Pulumi Docker v3 and v4 Image resources
* stable. This enables future API changes to be adopted more easily by renaming
* resources.
* *
* Only use this resource if you understand and accept the risks. * This provider&#39;s `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider.
*
* ## Migrating v3 and v4 Image resources
*
* The `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. * Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
* *
* ### Behavioral differences * ### Behavioral differences
@@ -58,19 +52,17 @@ import javax.annotation.Nullable;
* *
* Version `4.x` changed build-on-preview behavior to be opt-in. * 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. * By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
* Some users felt this made previews in CI less helpful because they no longer detected bad images by default. * Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
* *
* The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. * The default behavior of this provider&#39;s `Image` resource is similar to `3.x` and will build images during previews.
* By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. * This behavior can be changed by specifying `buildOnPreview`.
* Previews run in non-CI environments will not build images.
* This behavior is still configurable with `buildOnPreview`.
* *
* #### Push behavior * #### Push behavior
* *
* Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. * 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. * They expose a `skipPush: true` option to disable pushing.
* *
* The `Image` resource matches the Docker CLI&#39;s behavior and does not push images anywhere by default. * This provider&#39;s `Image` resource matches the Docker CLI&#39;s behavior and does not push images anywhere by default.
* *
* To push images to a registry you can include `push: true` (equivalent to Docker&#39;s `--push` flag) or configure an `export` of type `registry` (equivalent to Docker&#39;s `--output type=registry`). * To push images to a registry you can include `push: true` (equivalent to Docker&#39;s `--push` flag) or configure an `export` of type `registry` (equivalent to Docker&#39;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. * 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.
@@ -233,6 +225,7 @@ import javax.annotation.Nullable;
* .platforms( * .platforms(
* &#34;plan9/amd64&#34;, * &#34;plan9/amd64&#34;,
* &#34;plan9/386&#34;) * &#34;plan9/386&#34;)
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -321,6 +314,7 @@ import javax.annotation.Nullable;
* .context(BuildContextArgs.builder() * .context(BuildContextArgs.builder()
* .location(&#34;app&#34;) * .location(&#34;app&#34;)
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -358,6 +352,7 @@ import javax.annotation.Nullable;
* .location(&#34;app&#34;) * .location(&#34;app&#34;)
* .build()) * .build())
* .exec(true) * .exec(true)
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -391,6 +386,7 @@ import javax.annotation.Nullable;
* .context(BuildContextArgs.builder() * .context(BuildContextArgs.builder()
* .location(&#34;app&#34;) * .location(&#34;app&#34;)
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -423,6 +419,7 @@ import javax.annotation.Nullable;
* .context(BuildContextArgs.builder() * .context(BuildContextArgs.builder()
* .location(&#34;app&#34;) * .location(&#34;app&#34;)
* .build()) * .build())
* .push(false)
* .target(&#34;build-me&#34;) * .target(&#34;build-me&#34;)
* .build()); * .build());
* *
@@ -457,6 +454,7 @@ import javax.annotation.Nullable;
* .location(&#34;app&#34;) * .location(&#34;app&#34;)
* .named(Map.of(&#34;golang:latest&#34;, Map.of(&#34;location&#34;, &#34;docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984&#34;))) * .named(Map.of(&#34;golang:latest&#34;, Map.of(&#34;location&#34;, &#34;docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984&#34;)))
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -489,6 +487,7 @@ import javax.annotation.Nullable;
* .context(BuildContextArgs.builder() * .context(BuildContextArgs.builder()
* .location(&#34;https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile&#34;) * .location(&#34;https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile&#34;)
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -528,6 +527,7 @@ import javax.annotation.Nullable;
* COPY hello.c ./ * COPY hello.c ./
* &#34;&#34;&#34;) * &#34;&#34;&#34;)
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -564,6 +564,7 @@ import javax.annotation.Nullable;
* .dockerfile(DockerfileArgs.builder() * .dockerfile(DockerfileArgs.builder()
* .location(&#34;app/Dockerfile&#34;) * .location(&#34;app/Dockerfile&#34;)
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -603,6 +604,7 @@ import javax.annotation.Nullable;
* .tar(true) * .tar(true)
* .build()) * .build())
* .build()) * .build())
* .push(false)
* .build()); * .build());
* *
* } * }
@@ -661,14 +663,8 @@ public class Image extends com.pulumi.resources.CustomResource {
return Codegen.optional(this.buildArgs); return Codegen.optional(this.buildArgs);
} }
/** /**
* By default, preview behavior depends on the execution environment. If * Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -676,19 +672,16 @@ public class Image extends com.pulumi.resources.CustomResource {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * 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]") @Export(name="buildOnPreview", refs={Boolean.class}, tree="[0]")
private Output</* @Nullable */ Boolean> buildOnPreview; private Output</* @Nullable */ Boolean> buildOnPreview;
/** /**
* @return By default, preview behavior depends on the execution environment. If * @return Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -696,6 +689,9 @@ public class Image extends com.pulumi.resources.CustomResource {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
* *
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*
*/ */
public Output<Optional<Boolean>> buildOnPreview() { public Output<Optional<Boolean>> buildOnPreview() {
return Codegen.optional(this.buildOnPreview); return Codegen.optional(this.buildOnPreview);
@@ -1037,7 +1033,7 @@ public class Image extends com.pulumi.resources.CustomResource {
* *
*/ */
@Export(name="push", refs={Boolean.class}, tree="[0]") @Export(name="push", refs={Boolean.class}, tree="[0]")
private Output</* @Nullable */ Boolean> push; private Output<Boolean> push;
/** /**
* @return When `true` the build will automatically include a `registry` export. * @return When `true` the build will automatically include a `registry` export.
@@ -1047,8 +1043,8 @@ public class Image extends com.pulumi.resources.CustomResource {
* Equivalent to Docker&#39;s `--push` flag. * Equivalent to Docker&#39;s `--push` flag.
* *
*/ */
public Output<Optional<Boolean>> push() { public Output<Boolean> push() {
return Codegen.optional(this.push); return this.push;
} }
/** /**
* If the image was pushed to any registries then this will contain a * If the image was pushed to any registries then this will contain a
@@ -1223,7 +1219,7 @@ public class Image extends com.pulumi.resources.CustomResource {
* @param name The _unique_ name of the resulting resource. * @param name The _unique_ name of the resulting resource.
* @param args The arguments to use to populate this resource's properties. * @param args The arguments to use to populate this resource's properties.
*/ */
public Image(String name, @Nullable ImageArgs args) { public Image(String name, ImageArgs args) {
this(name, args, null); this(name, args, null);
} }
/** /**
@@ -1232,7 +1228,7 @@ public class Image extends com.pulumi.resources.CustomResource {
* @param args The arguments to use to populate this resource's properties. * @param args The arguments to use to populate this resource's properties.
* @param options A bag of options that control this resource's behavior. * @param options A bag of options that control this resource's behavior.
*/ */
public Image(String name, @Nullable ImageArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { 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())); super("docker-build:index:Image", name, args == null ? ImageArgs.Empty : args, makeResourceOptions(options, Codegen.empty()));
} }

View File

@@ -16,6 +16,7 @@ import com.pulumi.dockerbuild.inputs.DockerfileArgs;
import com.pulumi.dockerbuild.inputs.ExportArgs; import com.pulumi.dockerbuild.inputs.ExportArgs;
import com.pulumi.dockerbuild.inputs.RegistryArgs; import com.pulumi.dockerbuild.inputs.RegistryArgs;
import com.pulumi.dockerbuild.inputs.SSHArgs; import com.pulumi.dockerbuild.inputs.SSHArgs;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean; import java.lang.Boolean;
import java.lang.String; import java.lang.String;
import java.util.List; import java.util.List;
@@ -80,14 +81,8 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
} }
/** /**
* By default, preview behavior depends on the execution environment. If * Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -95,19 +90,16 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
* *
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*
*/ */
@Import(name="buildOnPreview") @Import(name="buildOnPreview")
private @Nullable Output<Boolean> buildOnPreview; private @Nullable Output<Boolean> buildOnPreview;
/** /**
* @return By default, preview behavior depends on the execution environment. If * @return Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -115,6 +107,9 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
* *
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*
*/ */
public Optional<Output<Boolean>> buildOnPreview() { public Optional<Output<Boolean>> buildOnPreview() {
return Optional.ofNullable(this.buildOnPreview); return Optional.ofNullable(this.buildOnPreview);
@@ -425,8 +420,8 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* Equivalent to Docker&#39;s `--push` flag. * Equivalent to Docker&#39;s `--push` flag.
* *
*/ */
@Import(name="push") @Import(name="push", required=true)
private @Nullable Output<Boolean> push; private Output<Boolean> push;
/** /**
* @return When `true` the build will automatically include a `registry` export. * @return When `true` the build will automatically include a `registry` export.
@@ -436,8 +431,8 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* Equivalent to Docker&#39;s `--push` flag. * Equivalent to Docker&#39;s `--push` flag.
* *
*/ */
public Optional<Output<Boolean>> push() { public Output<Boolean> push() {
return Optional.ofNullable(this.push); return this.push;
} }
/** /**
@@ -685,14 +680,8 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
} }
/** /**
* @param buildOnPreview By default, preview behavior depends on the execution environment. If * @param buildOnPreview Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -700,6 +689,9 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
* *
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*
* @return builder * @return builder
* *
*/ */
@@ -709,14 +701,8 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
} }
/** /**
* @param buildOnPreview By default, preview behavior depends on the execution environment. If * @param buildOnPreview Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
@@ -724,6 +710,9 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
* *
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*
* @return builder * @return builder
* *
*/ */
@@ -1170,7 +1159,7 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
* @return builder * @return builder
* *
*/ */
public Builder push(@Nullable Output<Boolean> push) { public Builder push(Output<Boolean> push) {
$.push = push; $.push = push;
return this; return this;
} }
@@ -1388,7 +1377,11 @@ public final class ImageArgs extends com.pulumi.resources.ResourceArgs {
} }
public ImageArgs build() { 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(); $.network = Codegen.objectProp("network", NetworkMode.class).output().arg($.network).def(NetworkMode.Default_).getNullable();
if ($.push == null) {
throw new MissingRequiredPropertyException("ImageArgs", "push");
}
return $; return $;
} }
} }

View File

@@ -17,13 +17,25 @@ import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
/** /**
* An index (or manifest list) referencing one or more existing images. * A wrapper around `docker buildx imagetools create` to create an index
* (or manifest list) referencing one or more existing images.
* *
* Useful for crafting a multi-platform image from several * In most cases you do not need an `Index` to build a multi-platform
* platform-specific images. * image -- specifying multiple platforms on the `Image` will handle this
* for you automatically.
* *
* This creates an OCI image index or a Docker manifest list depending on * However, as of April 2024, building multi-platform images _with
* the media types of the source images. * 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 * ## Example Usage
* ### Multi-platform registry caching * ### Multi-platform registry caching

117
sdk/nodejs/README.md generated
View File

@@ -1,106 +1,23 @@
# Pulumi Native Provider Boilerplate [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
[![NPM version](https://badge.fury.io/js/%40pulumi%2fdocker-build.svg)](https://www.npmjs.com/package/@pulumi/docker-build)
[![Python version](https://badge.fury.io/py/pulumi-docker-build.svg)](https://pypi.org/project/pulumi-docker-build)
[![NuGet version](https://badge.fury.io/nu/pulumi.dockerbuild.svg)](https://badge.fury.io/nu/pulumi.dockerbuild)
[![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-docker-build/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-docker-build/sdk/go)
[![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-docker-build/blob/main/LICENSE)
This repository is a boilerplate showing how to create and locally test a native Pulumi provider. # Docker-Build Resource Provider
## Authoring a Pulumi Native Provider A [Pulumi](http://pulumi.com) provider for building modern Docker images with [buildx](https://docs.docker.com/build/architecture/) and [BuildKit](https://docs.docker.com/build/buildkit/).
This boilerplate creates a working Pulumi-owned provider named `xyz`. Not to be confused with the earlier
It implements a random number generator that you can [build and test out for yourself](#test-against-the-example) and then replace the Random code with code specific to your provider. [Docker](http://github.com/pulumi/pulumi-docker) provider, which is still
appropriate for managing resources unrelated to building images.
| Provider | Use cases |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `@pulumi/docker-build` | Anything related to building images with `docker build`. |
| `@pulumi/docker` | Everything else -- including running containers and creating networks. |
### Prerequisites ## Reference
Prerequisites for this repository are already satisfied by the [Pulumi Devcontainer](https://github.com/pulumi/devcontainer) if you are using Github Codespaces, or VSCode. For more information, including examples and migration guidance, please see the Docker-Build provider's detailed [API documentation](https://www.pulumi.com/registry/packages/docker-build/).
If you are not using VSCode, you will need to ensure the following tools are installed and present in your `$PATH`:
* [`pulumictl`](https://github.com/pulumi/pulumictl#installation)
* [Go 1.21](https://golang.org/dl/) or 1.latest
* [NodeJS](https://nodejs.org/en/) 14.x. We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.
* [Yarn](https://yarnpkg.com/)
* [TypeScript](https://www.typescriptlang.org/)
* [Python](https://www.python.org/downloads/) (called as `python3`). For recent versions of MacOS, the system-installed version is fine.
* [.NET](https://dotnet.microsoft.com/download)
### Build & test the boilerplate XYZ provider
1. Create a new Github CodeSpaces environment using this repository.
1. Open a terminal in the CodeSpaces environment.
1. Run `make build install` to build and install the provider.
1. Run `make gen_examples` to generate the example programs in `examples/` off of the source `examples/yaml` example program.
1. Run `make up` to run the example program in `examples/yaml`.
1. Run `make down` to tear down the example program.
### Creating a new provider repository
Pulumi offers this repository as a [GitHub template repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template) for convenience. From this repository:
1. Click "Use this template".
1. Set the following options:
* Owner: pulumi
* Repository name: pulumi-xyz-native (replace "xyz" with the name of your provider)
* Description: Pulumi provider for xyz
* Repository type: Public
1. Clone the generated repository.
From the templated repository:
1. Search-replace `xyz` with the name of your desired provider.
#### Build the provider and install the plugin
```bash
$ make build install
```
This will:
1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored)
2. Create the provider binary and place it in the `./bin` folder (gitignored)
3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder
4. Install the provider on your machine.
#### Test against the example
```bash
$ cd examples/simple
$ yarn link @pulumi/xyz
$ yarn install
$ pulumi stack init test
$ pulumi up
```
Now that you have completed all of the above steps, you have a working provider that generates a random string for you.
#### A brief repository overview
You now have:
1. A `provider/` folder containing the building and implementation logic
1. `cmd/pulumi-resource-xyz/main.go` - holds the provider's sample implementation logic.
2. `deployment-templates` - a set of files to help you around deployment and publication
3. `sdk` - holds the generated code libraries created by `pulumi-gen-xyz/main.go`
4. `examples` a folder of Pulumi programs to try locally and/or use in CI.
5. A `Makefile` and this `README`.
#### Additional Details
This repository depends on the pulumi-go-provider library. For more details on building providers, please check
the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider).
### Build Examples
Create an example program using the resources defined in your provider, and place it in the `examples/` folder.
You can now repeat the steps for [build, install, and test](#test-against-the-example).
## Configuring CI and releases
1. Follow the instructions laid out in the [deployment templates](./deployment-templates/README-DEPLOYMENT.md).
## References
Other resources/examples for implementing providers:
* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go)
* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider)

149
sdk/nodejs/image.ts generated
View File

@@ -13,20 +13,14 @@ import * as utilities from "./utilities";
* *
* ## Stability * ## Stability
* *
* **This resource is experimental and subject to change.** * **This resource is pre-1.0 and in public preview.**
* *
* API types are unstable. Subsequent releases _may_ require manual edits * We will strive to keep APIs and behavior as stable as possible, but we
* to your state file(s) in order to adopt API changes. * cannot guarantee stability until version 1.0.
* *
* `retainOnDelete: true` is recommended with this resource until it is * ## Migrating Pulumi Docker v3 and v4 Image resources
* stable. This enables future API changes to be adopted more easily by renaming
* resources.
* *
* Only use this resource if you understand and accept the risks. * 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.
*
* ## Migrating v3 and v4 Image resources
*
* The `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. * Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
* *
* ### Behavioral differences * ### Behavioral differences
@@ -40,19 +34,17 @@ import * as utilities from "./utilities";
* *
* Version `4.x` changed build-on-preview behavior to be opt-in. * 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. * By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
* Some users felt this made previews in CI less helpful because they no longer detected bad images by default. * Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
* *
* The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. * The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
* By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. * This behavior can be changed by specifying `buildOnPreview`.
* Previews run in non-CI environments will not build images.
* This behavior is still configurable with `buildOnPreview`.
* *
* #### Push behavior * #### Push behavior
* *
* Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. * 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. * They expose a `skipPush: true` option to disable pushing.
* *
* The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. * 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`). * 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. * 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.
@@ -170,7 +162,7 @@ import * as utilities from "./utilities";
* context: { * context: {
* location: "../app", * location: "../app",
* }, * },
* targets: ["mytarget"], * target: "mytarget",
* buildArgs: { * buildArgs: {
* MY_BUILD_ARG: "foo", * MY_BUILD_ARG: "foo",
* }, * },
@@ -229,7 +221,7 @@ import * as utilities from "./utilities";
* context: { * context: {
* location: "../app", * location: "../app",
* }, * },
* targets: ["mytarget"], * target: "mytarget",
* buildArgs: { * buildArgs: {
* MY_BUILD_ARG: "foo", * MY_BUILD_ARG: "foo",
* }, * },
@@ -253,13 +245,13 @@ import * as utilities from "./utilities";
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws"; * import * as aws from "@pulumi/aws";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const ecrRepository = new aws.ecr.Repository("ecr-repository", {}); * const ecrRepository = new aws.ecr.Repository("ecr-repository", {});
* const authToken = aws.ecr.getAuthorizationTokenOutput({ * const authToken = aws.ecr.getAuthorizationTokenOutput({
* registryId: ecrRepository.registryId, * registryId: ecrRepository.registryId,
* }); * });
* const myImage = new dockerbuild.Image("my-image", { * const myImage = new docker_build.Image("my-image", {
* cacheFrom: [{ * cacheFrom: [{
* registry: { * registry: {
* ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`, * ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`,
@@ -289,25 +281,26 @@ import * as utilities from "./utilities";
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "app", * location: "app",
* }, * },
* platforms: [ * platforms: [
* dockerbuild.Platform.Plan9_amd64, * docker_build.Platform.Plan9_amd64,
* dockerbuild.Platform.Plan9_386, * docker_build.Platform.Plan9_386,
* ], * ],
* push: false,
* }); * });
* ``` * ```
* ### Registry export * ### Registry export
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "app", * location: "app",
* }, * },
@@ -325,9 +318,9 @@ import * as utilities from "./utilities";
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* cacheFrom: [{ * cacheFrom: [{
* local: { * local: {
* src: "tmp/cache", * src: "tmp/cache",
@@ -336,21 +329,22 @@ import * as utilities from "./utilities";
* cacheTo: [{ * cacheTo: [{
* local: { * local: {
* dest: "tmp/cache", * dest: "tmp/cache",
* mode: dockerbuild.CacheMode.Max, * mode: docker_build.CacheMode.Max,
* }, * },
* }], * }],
* context: { * context: {
* location: "app", * location: "app",
* }, * },
* push: false,
* }); * });
* ``` * ```
* ### Docker Build Cloud * ### Docker Build Cloud
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* builder: { * builder: {
* name: "cloud-builder-name", * name: "cloud-builder-name",
* }, * },
@@ -358,33 +352,36 @@ import * as utilities from "./utilities";
* location: "app", * location: "app",
* }, * },
* exec: true, * exec: true,
* push: false,
* }); * });
* ``` * ```
* ### Build arguments * ### Build arguments
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* buildArgs: { * buildArgs: {
* SET_ME_TO_TRUE: "true", * SET_ME_TO_TRUE: "true",
* }, * },
* context: { * context: {
* location: "app", * location: "app",
* }, * },
* push: false,
* }); * });
* ``` * ```
* ### Build target * ### Build target
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "app", * location: "app",
* }, * },
* push: false,
* target: "build-me", * target: "build-me",
* }); * });
* ``` * ```
@@ -392,34 +389,40 @@ import * as utilities from "./utilities";
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", {context: { * const image = new docker_build.Image("image", {
* location: "app", * context: {
* named: { * location: "app",
* "golang:latest": { * named: {
* location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", * "golang:latest": {
* location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
* },
* }, * },
* }, * },
* }}); * push: false,
* });
* ``` * ```
* ### Remote context * ### Remote context
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", {context: { * const image = new docker_build.Image("image", {
* location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", * context: {
* }}); * location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
* },
* push: false,
* });
* ``` * ```
* ### Inline Dockerfile * ### Inline Dockerfile
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "app", * location: "app",
* }, * },
@@ -428,30 +431,32 @@ import * as utilities from "./utilities";
* COPY hello.c ./ * COPY hello.c ./
* `, * `,
* }, * },
* push: false,
* }); * });
* ``` * ```
* ### Remote context * ### Remote context
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "https://github.com/docker-library/hello-world.git", * location: "https://github.com/docker-library/hello-world.git",
* }, * },
* dockerfile: { * dockerfile: {
* location: "app/Dockerfile", * location: "app/Dockerfile",
* }, * },
* push: false,
* }); * });
* ``` * ```
* ### Local export * ### Local export
* *
* ```typescript * ```typescript
* import * as pulumi from "@pulumi/pulumi"; * import * as pulumi from "@pulumi/pulumi";
* import * as dockerbuild from "@pulumi/dockerbuild"; * import * as docker_build from "@pulumi/docker-build";
* *
* const image = new dockerbuild.Image("image", { * const image = new docker_build.Image("image", {
* context: { * context: {
* location: "app", * location: "app",
* }, * },
@@ -460,6 +465,7 @@ import * as utilities from "./utilities";
* tar: true, * tar: true,
* }, * },
* }], * }],
* push: false,
* }); * });
* ``` * ```
*/ */
@@ -509,20 +515,17 @@ export class Image extends pulumi.CustomResource {
*/ */
public readonly buildArgs!: pulumi.Output<{[key: string]: string} | undefined>; public readonly buildArgs!: pulumi.Output<{[key: string]: string} | undefined>;
/** /**
* By default, preview behavior depends on the execution environment. If * Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
* *
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
*
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*/ */
public readonly buildOnPreview!: pulumi.Output<boolean | undefined>; public readonly buildOnPreview!: pulumi.Output<boolean | undefined>;
/** /**
@@ -651,7 +654,7 @@ export class Image extends pulumi.CustomResource {
* *
* Equivalent to Docker's `--push` flag. * Equivalent to Docker's `--push` flag.
*/ */
public readonly push!: pulumi.Output<boolean | undefined>; public readonly push!: pulumi.Output<boolean>;
/** /**
* If the image was pushed to any registries then this will contain a * If the image was pushed to any registries then this will contain a
* single fully-qualified tag including the build's digest. * single fully-qualified tag including the build's digest.
@@ -722,13 +725,16 @@ export class Image extends pulumi.CustomResource {
* @param args The arguments to use to populate this resource's properties. * @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior. * @param opts A bag of options that control this resource's behavior.
*/ */
constructor(name: string, args?: ImageArgs, opts?: pulumi.CustomResourceOptions) { constructor(name: string, args: ImageArgs, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {}; let resourceInputs: pulumi.Inputs = {};
opts = opts || {}; opts = opts || {};
if (!opts.id) { if (!opts.id) {
if ((!args || args.push === undefined) && !opts.urn) {
throw new Error("Missing required property 'push'");
}
resourceInputs["addHosts"] = args ? args.addHosts : undefined; resourceInputs["addHosts"] = args ? args.addHosts : undefined;
resourceInputs["buildArgs"] = args ? args.buildArgs : undefined; resourceInputs["buildArgs"] = args ? args.buildArgs : undefined;
resourceInputs["buildOnPreview"] = args ? args.buildOnPreview : undefined; resourceInputs["buildOnPreview"] = (args ? args.buildOnPreview : undefined) ?? true;
resourceInputs["builder"] = args ? args.builder : undefined; resourceInputs["builder"] = args ? args.builder : undefined;
resourceInputs["cacheFrom"] = args ? args.cacheFrom : undefined; resourceInputs["cacheFrom"] = args ? args.cacheFrom : undefined;
resourceInputs["cacheTo"] = args ? args.cacheTo : undefined; resourceInputs["cacheTo"] = args ? args.cacheTo : undefined;
@@ -806,20 +812,17 @@ export interface ImageArgs {
*/ */
buildArgs?: pulumi.Input<{[key: string]: pulumi.Input<string>}>; buildArgs?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
/** /**
* By default, preview behavior depends on the execution environment. If * Setting this to `false` will always skip image builds during previews,
* Pulumi detects the operation is running on a CI system (GitHub Actions, * and setting it to `true` will always build images during previews.
* Travis CI, Azure Pipelines, etc.) then it will build images during
* previews as a safeguard. Otherwise, if not running on CI, previews will
* not build images.
*
* Setting this to `false` forces previews to never perform builds, and
* setting it to `true` will always build the image during previews.
* *
* Images built during previews are never exported to registries, however * Images built during previews are never exported to registries, however
* cache manifests are still exported. * cache manifests are still exported.
* *
* On-disk Dockerfiles are always validated for syntactic correctness * On-disk Dockerfiles are always validated for syntactic correctness
* regardless of this setting. * regardless of this setting.
*
* Defaults to `true` as a safeguard against broken images merging as part
* of CI pipelines.
*/ */
buildOnPreview?: pulumi.Input<boolean>; buildOnPreview?: pulumi.Input<boolean>;
/** /**
@@ -932,7 +935,7 @@ export interface ImageArgs {
* *
* Equivalent to Docker's `--push` flag. * Equivalent to Docker's `--push` flag.
*/ */
push?: pulumi.Input<boolean>; push: pulumi.Input<boolean>;
/** /**
* Registry credentials. Required if reading or exporting to private * Registry credentials. Required if reading or exporting to private
* repositories. * repositories.

22
sdk/nodejs/index_.ts generated
View File

@@ -8,13 +8,25 @@ import * as enums from "./types/enums";
import * as utilities from "./utilities"; import * as utilities from "./utilities";
/** /**
* An index (or manifest list) referencing one or more existing images. * A wrapper around `docker buildx imagetools create` to create an index
* (or manifest list) referencing one or more existing images.
* *
* Useful for crafting a multi-platform image from several * In most cases you do not need an `Index` to build a multi-platform
* platform-specific images. * image -- specifying multiple platforms on the `Image` will handle this
* for you automatically.
* *
* This creates an OCI image index or a Docker manifest list depending on * However, as of April 2024, building multi-platform images _with
* the media types of the source images. * 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 * ## Example Usage
* ### Multi-platform registry caching * ### Multi-platform registry caching

View File

@@ -4,9 +4,10 @@
"keywords": [ "keywords": [
"docker", "docker",
"buildkit", "buildkit",
"buildx" "buildx",
"kind/native"
], ],
"homepage": "https://pulumi.io", "homepage": "https://pulumi.com",
"repository": "https://github.com/pulumi/pulumi-docker-build", "repository": "https://github.com/pulumi/pulumi-docker-build",
"license": "Apache-2.0", "license": "Apache-2.0",
"scripts": { "scripts": {
@@ -21,7 +22,6 @@
}, },
"pulumi": { "pulumi": {
"resource": true, "resource": true,
"name": "docker-build", "name": "docker-build"
"server": "github.com/pulumi/pulumi-docker-build"
} }
} }

View File

@@ -53,7 +53,7 @@ export function getVersion(): string {
/** @internal */ /** @internal */
export function resourceOptsDefaults(): any { export function resourceOptsDefaults(): any {
return { version: getVersion(), pluginDownloadURL: "github.com/pulumi/pulumi-docker-build" }; return { version: getVersion() };
} }
/** @internal */ /** @internal */

117
sdk/python/README.md generated
View File

@@ -1,106 +1,23 @@
# Pulumi Native Provider Boilerplate [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
[![NPM version](https://badge.fury.io/js/%40pulumi%2fdocker-build.svg)](https://www.npmjs.com/package/@pulumi/docker-build)
[![Python version](https://badge.fury.io/py/pulumi-docker-build.svg)](https://pypi.org/project/pulumi-docker-build)
[![NuGet version](https://badge.fury.io/nu/pulumi.dockerbuild.svg)](https://badge.fury.io/nu/pulumi.dockerbuild)
[![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-docker-build/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-docker-build/sdk/go)
[![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-docker-build/blob/main/LICENSE)
This repository is a boilerplate showing how to create and locally test a native Pulumi provider. # Docker-Build Resource Provider
## Authoring a Pulumi Native Provider A [Pulumi](http://pulumi.com) provider for building modern Docker images with [buildx](https://docs.docker.com/build/architecture/) and [BuildKit](https://docs.docker.com/build/buildkit/).
This boilerplate creates a working Pulumi-owned provider named `xyz`. Not to be confused with the earlier
It implements a random number generator that you can [build and test out for yourself](#test-against-the-example) and then replace the Random code with code specific to your provider. [Docker](http://github.com/pulumi/pulumi-docker) provider, which is still
appropriate for managing resources unrelated to building images.
| Provider | Use cases |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `@pulumi/docker-build` | Anything related to building images with `docker build`. |
| `@pulumi/docker` | Everything else -- including running containers and creating networks. |
### Prerequisites ## Reference
Prerequisites for this repository are already satisfied by the [Pulumi Devcontainer](https://github.com/pulumi/devcontainer) if you are using Github Codespaces, or VSCode. For more information, including examples and migration guidance, please see the Docker-Build provider's detailed [API documentation](https://www.pulumi.com/registry/packages/docker-build/).
If you are not using VSCode, you will need to ensure the following tools are installed and present in your `$PATH`:
* [`pulumictl`](https://github.com/pulumi/pulumictl#installation)
* [Go 1.21](https://golang.org/dl/) or 1.latest
* [NodeJS](https://nodejs.org/en/) 14.x. We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.
* [Yarn](https://yarnpkg.com/)
* [TypeScript](https://www.typescriptlang.org/)
* [Python](https://www.python.org/downloads/) (called as `python3`). For recent versions of MacOS, the system-installed version is fine.
* [.NET](https://dotnet.microsoft.com/download)
### Build & test the boilerplate XYZ provider
1. Create a new Github CodeSpaces environment using this repository.
1. Open a terminal in the CodeSpaces environment.
1. Run `make build install` to build and install the provider.
1. Run `make gen_examples` to generate the example programs in `examples/` off of the source `examples/yaml` example program.
1. Run `make up` to run the example program in `examples/yaml`.
1. Run `make down` to tear down the example program.
### Creating a new provider repository
Pulumi offers this repository as a [GitHub template repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template) for convenience. From this repository:
1. Click "Use this template".
1. Set the following options:
* Owner: pulumi
* Repository name: pulumi-xyz-native (replace "xyz" with the name of your provider)
* Description: Pulumi provider for xyz
* Repository type: Public
1. Clone the generated repository.
From the templated repository:
1. Search-replace `xyz` with the name of your desired provider.
#### Build the provider and install the plugin
```bash
$ make build install
```
This will:
1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored)
2. Create the provider binary and place it in the `./bin` folder (gitignored)
3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder
4. Install the provider on your machine.
#### Test against the example
```bash
$ cd examples/simple
$ yarn link @pulumi/xyz
$ yarn install
$ pulumi stack init test
$ pulumi up
```
Now that you have completed all of the above steps, you have a working provider that generates a random string for you.
#### A brief repository overview
You now have:
1. A `provider/` folder containing the building and implementation logic
1. `cmd/pulumi-resource-xyz/main.go` - holds the provider's sample implementation logic.
2. `deployment-templates` - a set of files to help you around deployment and publication
3. `sdk` - holds the generated code libraries created by `pulumi-gen-xyz/main.go`
4. `examples` a folder of Pulumi programs to try locally and/or use in CI.
5. A `Makefile` and this `README`.
#### Additional Details
This repository depends on the pulumi-go-provider library. For more details on building providers, please check
the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider).
### Build Examples
Create an example program using the resources defined in your provider, and place it in the `examples/` folder.
You can now repeat the steps for [build, install, and test](#test-against-the-example).
## Configuring CI and releases
1. Follow the instructions laid out in the [deployment templates](./deployment-templates/README-DEPLOYMENT.md).
## References
Other resources/examples for implementing providers:
* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go)
* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider)

View File

@@ -1 +1 @@
A Pulumi provider for Docker buildx A Pulumi provider for building modern Docker images with buildx and BuildKit.

View File

@@ -288,4 +288,4 @@ async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bo
) )
def get_plugin_download_url(): def get_plugin_download_url():
return "github.com/pulumi/pulumi-docker-build" return None

View File

@@ -17,6 +17,7 @@ __all__ = ['ImageArgs', 'Image']
@pulumi.input_type @pulumi.input_type
class ImageArgs: class ImageArgs:
def __init__(__self__, *, def __init__(__self__, *,
push: pulumi.Input[bool],
add_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, add_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
build_args: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, build_args: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
build_on_preview: Optional[pulumi.Input[bool]] = None, build_on_preview: Optional[pulumi.Input[bool]] = None,
@@ -33,7 +34,6 @@ class ImageArgs:
no_cache: Optional[pulumi.Input[bool]] = None, no_cache: Optional[pulumi.Input[bool]] = None,
platforms: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]] = None, platforms: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]] = None,
pull: Optional[pulumi.Input[bool]] = None, pull: Optional[pulumi.Input[bool]] = None,
push: Optional[pulumi.Input[bool]] = None,
registries: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]] = None, registries: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]] = None,
secrets: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, secrets: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
ssh: Optional[pulumi.Input[Sequence[pulumi.Input['SSHArgs']]]] = None, ssh: Optional[pulumi.Input[Sequence[pulumi.Input['SSHArgs']]]] = None,
@@ -41,6 +41,11 @@ class ImageArgs:
target: Optional[pulumi.Input[str]] = None): target: Optional[pulumi.Input[str]] = None):
""" """
The set of arguments for constructing a Image resource. The set of arguments for constructing a Image resource.
:param pulumi.Input[bool] push: When `true` the build will automatically include a `registry` export.
Defaults to `false`.
Equivalent to Docker's `--push` flag.
:param pulumi.Input[Sequence[pulumi.Input[str]]] add_hosts: Custom `host:ip` mappings to use during the build. :param pulumi.Input[Sequence[pulumi.Input[str]]] add_hosts: Custom `host:ip` mappings to use during the build.
Equivalent to Docker's `--add-host` flag. Equivalent to Docker's `--add-host` flag.
@@ -53,20 +58,17 @@ class ImageArgs:
if these arguments are sensitive. if these arguments are sensitive.
Equivalent to Docker's `--build-arg` flag. Equivalent to Docker's `--build-arg` flag.
:param pulumi.Input[bool] build_on_preview: By default, preview behavior depends on the execution environment. If :param pulumi.Input[bool] build_on_preview: Setting this to `false` will always skip image builds during previews,
Pulumi detects the operation is running on a CI system (GitHub Actions, and setting it to `true` will always build images during previews.
Travis CI, Azure Pipelines, etc.) then it will build images during
previews as a safeguard. Otherwise, if not running on CI, previews will
not build images.
Setting this to `false` forces previews to never perform builds, and
setting it to `true` will always build the image during previews.
Images built during previews are never exported to registries, however Images built during previews are never exported to registries, however
cache manifests are still exported. cache manifests are still exported.
On-disk Dockerfiles are always validated for syntactic correctness On-disk Dockerfiles are always validated for syntactic correctness
regardless of this setting. regardless of this setting.
Defaults to `true` as a safeguard against broken images merging as part
of CI pipelines.
:param pulumi.Input['BuilderConfigArgs'] builder: Builder configuration. :param pulumi.Input['BuilderConfigArgs'] builder: Builder configuration.
:param pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]] cache_from: Cache export configuration. :param pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]] cache_from: Cache export configuration.
@@ -131,11 +133,6 @@ class ImageArgs:
:param pulumi.Input[bool] pull: Always pull referenced images. :param pulumi.Input[bool] pull: Always pull referenced images.
Equivalent to Docker's `--pull` flag. Equivalent to Docker's `--pull` flag.
:param pulumi.Input[bool] push: When `true` the build will automatically include a `registry` export.
Defaults to `false`.
Equivalent to Docker's `--push` flag.
:param pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]] registries: Registry credentials. Required if reading or exporting to private :param pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]] registries: Registry credentials. Required if reading or exporting to private
repositories. repositories.
@@ -167,10 +164,13 @@ class ImageArgs:
Equivalent to Docker's `--target` flag. Equivalent to Docker's `--target` flag.
""" """
pulumi.set(__self__, "push", push)
if add_hosts is not None: if add_hosts is not None:
pulumi.set(__self__, "add_hosts", add_hosts) pulumi.set(__self__, "add_hosts", add_hosts)
if build_args is not None: if build_args is not None:
pulumi.set(__self__, "build_args", build_args) pulumi.set(__self__, "build_args", build_args)
if build_on_preview is None:
build_on_preview = True
if build_on_preview is not None: if build_on_preview is not None:
pulumi.set(__self__, "build_on_preview", build_on_preview) pulumi.set(__self__, "build_on_preview", build_on_preview)
if builder is not None: if builder is not None:
@@ -201,8 +201,6 @@ class ImageArgs:
pulumi.set(__self__, "platforms", platforms) pulumi.set(__self__, "platforms", platforms)
if pull is not None: if pull is not None:
pulumi.set(__self__, "pull", pull) pulumi.set(__self__, "pull", pull)
if push is not None:
pulumi.set(__self__, "push", push)
if registries is not None: if registries is not None:
pulumi.set(__self__, "registries", registries) pulumi.set(__self__, "registries", registries)
if secrets is not None: if secrets is not None:
@@ -214,6 +212,22 @@ class ImageArgs:
if target is not None: if target is not None:
pulumi.set(__self__, "target", target) pulumi.set(__self__, "target", target)
@property
@pulumi.getter
def push(self) -> pulumi.Input[bool]:
"""
When `true` the build will automatically include a `registry` export.
Defaults to `false`.
Equivalent to Docker's `--push` flag.
"""
return pulumi.get(self, "push")
@push.setter
def push(self, value: pulumi.Input[bool]):
pulumi.set(self, "push", value)
@property @property
@pulumi.getter(name="addHosts") @pulumi.getter(name="addHosts")
def add_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: def add_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
@@ -252,20 +266,17 @@ class ImageArgs:
@pulumi.getter(name="buildOnPreview") @pulumi.getter(name="buildOnPreview")
def build_on_preview(self) -> Optional[pulumi.Input[bool]]: def build_on_preview(self) -> Optional[pulumi.Input[bool]]:
""" """
By default, preview behavior depends on the execution environment. If Setting this to `false` will always skip image builds during previews,
Pulumi detects the operation is running on a CI system (GitHub Actions, and setting it to `true` will always build images during previews.
Travis CI, Azure Pipelines, etc.) then it will build images during
previews as a safeguard. Otherwise, if not running on CI, previews will
not build images.
Setting this to `false` forces previews to never perform builds, and
setting it to `true` will always build the image during previews.
Images built during previews are never exported to registries, however Images built during previews are never exported to registries, however
cache manifests are still exported. cache manifests are still exported.
On-disk Dockerfiles are always validated for syntactic correctness On-disk Dockerfiles are always validated for syntactic correctness
regardless of this setting. regardless of this setting.
Defaults to `true` as a safeguard against broken images merging as part
of CI pipelines.
""" """
return pulumi.get(self, "build_on_preview") return pulumi.get(self, "build_on_preview")
@@ -480,22 +491,6 @@ class ImageArgs:
def pull(self, value: Optional[pulumi.Input[bool]]): def pull(self, value: Optional[pulumi.Input[bool]]):
pulumi.set(self, "pull", value) pulumi.set(self, "pull", value)
@property
@pulumi.getter
def push(self) -> Optional[pulumi.Input[bool]]:
"""
When `true` the build will automatically include a `registry` export.
Defaults to `false`.
Equivalent to Docker's `--push` flag.
"""
return pulumi.get(self, "push")
@push.setter
def push(self, value: Optional[pulumi.Input[bool]]):
pulumi.set(self, "push", value)
@property @property
@pulumi.getter @pulumi.getter
def registries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]: def registries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]:
@@ -616,20 +611,14 @@ class Image(pulumi.CustomResource):
## Stability ## Stability
**This resource is experimental and subject to change.** **This resource is pre-1.0 and in public preview.**
API types are unstable. Subsequent releases _may_ require manual edits We will strive to keep APIs and behavior as stable as possible, but we
to your state file(s) in order to adopt API changes. cannot guarantee stability until version 1.0.
`retainOnDelete: true` is recommended with this resource until it is ## Migrating Pulumi Docker v3 and v4 Image resources
stable. This enables future API changes to be adopted more easily by renaming
resources.
Only use this resource if you understand and accept the risks. 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.
## Migrating v3 and v4 Image resources
The `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. Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
### Behavioral differences ### Behavioral differences
@@ -643,19 +632,17 @@ class Image(pulumi.CustomResource):
Version `4.x` changed build-on-preview behavior to be opt-in. 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. By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
Some users felt this made previews in CI less helpful because they no longer detected bad images by default. Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. This behavior can be changed by specifying `buildOnPreview`.
Previews run in non-CI environments will not build images.
This behavior is still configurable with `buildOnPreview`.
#### Push behavior #### Push behavior
Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. 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. They expose a `skipPush: true` option to disable pushing.
The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. 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`). 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. 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.
@@ -726,28 +713,28 @@ class Image(pulumi.CustomResource):
```python ```python
import pulumi import pulumi
import pulumi_aws as aws import pulumi_aws as aws
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
ecr_repository = aws.ecr.Repository("ecr-repository") ecr_repository = aws.ecr.Repository("ecr-repository")
auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id) auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id)
my_image = dockerbuild.Image("my-image", my_image = docker_build.Image("my-image",
cache_from=[dockerbuild.CacheFromArgs( cache_from=[docker_build.CacheFromArgs(
registry=dockerbuild.CacheFromRegistryArgs( registry=docker_build.CacheFromRegistryArgs(
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
), ),
)], )],
cache_to=[dockerbuild.CacheToArgs( cache_to=[docker_build.CacheToArgs(
registry=dockerbuild.CacheToRegistryArgs( registry=docker_build.CacheToRegistryArgs(
image_manifest=True, image_manifest=True,
oci_media_types=True, oci_media_types=True,
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
), ),
)], )],
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),
push=True, push=True,
registries=[dockerbuild.RegistryArgs( registries=[docker_build.RegistryArgs(
address=ecr_repository.repository_url, address=ecr_repository.repository_url,
password=auth_token.password, password=auth_token.password,
username=auth_token.user_name, username=auth_token.user_name,
@@ -758,28 +745,29 @@ class Image(pulumi.CustomResource):
### Multi-platform image ### Multi-platform image
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
platforms=[ platforms=[
dockerbuild.Platform.PLAN9_AMD64, docker_build.Platform.PLAN9_AMD64,
dockerbuild.Platform.PLAN9_386, docker_build.Platform.PLAN9_386,
]) ],
push=False)
``` ```
### Registry export ### Registry export
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
push=True, push=True,
registries=[dockerbuild.RegistryArgs( registries=[docker_build.RegistryArgs(
address="docker.io", address="docker.io",
password=docker_hub_password, password=docker_hub_password,
username="pulumibot", username="pulumibot",
@@ -790,127 +778,138 @@ class Image(pulumi.CustomResource):
### Caching ### Caching
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
cache_from=[dockerbuild.CacheFromArgs( cache_from=[docker_build.CacheFromArgs(
local=dockerbuild.CacheFromLocalArgs( local=docker_build.CacheFromLocalArgs(
src="tmp/cache", src="tmp/cache",
), ),
)], )],
cache_to=[dockerbuild.CacheToArgs( cache_to=[docker_build.CacheToArgs(
local=dockerbuild.CacheToLocalArgs( local=docker_build.CacheToLocalArgs(
dest="tmp/cache", dest="tmp/cache",
mode=dockerbuild.CacheMode.MAX, mode=docker_build.CacheMode.MAX,
), ),
)], )],
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
)) ),
push=False)
``` ```
### Docker Build Cloud ### Docker Build Cloud
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
builder=dockerbuild.BuilderConfigArgs( builder=docker_build.BuilderConfigArgs(
name="cloud-builder-name", name="cloud-builder-name",
), ),
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
exec_=True) exec_=True,
push=False)
``` ```
### Build arguments ### Build arguments
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
build_args={ build_args={
"SET_ME_TO_TRUE": "true", "SET_ME_TO_TRUE": "true",
}, },
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
)) ),
push=False)
``` ```
### Build target ### Build target
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
push=False,
target="build-me") target="build-me")
``` ```
### Named contexts ### Named contexts
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", context=dockerbuild.BuildContextArgs( image = docker_build.Image("image",
location="app", context=docker_build.BuildContextArgs(
named={ location="app",
"golang:latest": dockerbuild.ContextArgs( named={
location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", "golang:latest": docker_build.ContextArgs(
), location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
}, ),
)) },
),
push=False)
``` ```
### Remote context ### Remote context
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", context=dockerbuild.BuildContextArgs( image = docker_build.Image("image",
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", context=docker_build.BuildContextArgs(
)) location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
),
push=False)
``` ```
### Inline Dockerfile ### Inline Dockerfile
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
dockerfile=dockerbuild.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
inline=\"\"\"FROM busybox inline=\"\"\"FROM busybox
COPY hello.c ./ COPY hello.c ./
\"\"\", \"\"\",
)) ),
push=False)
``` ```
### Remote context ### Remote context
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="https://github.com/docker-library/hello-world.git", location="https://github.com/docker-library/hello-world.git",
), ),
dockerfile=dockerbuild.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="app/Dockerfile", location="app/Dockerfile",
)) ),
push=False)
``` ```
### Local export ### Local export
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
exports=[dockerbuild.ExportArgs( exports=[docker_build.ExportArgs(
docker=dockerbuild.ExportDockerArgs( docker=docker_build.ExportDockerArgs(
tar=True, tar=True,
), ),
)]) )],
push=False)
``` ```
:param str resource_name: The name of the resource. :param str resource_name: The name of the resource.
@@ -927,20 +926,17 @@ class Image(pulumi.CustomResource):
if these arguments are sensitive. if these arguments are sensitive.
Equivalent to Docker's `--build-arg` flag. Equivalent to Docker's `--build-arg` flag.
:param pulumi.Input[bool] build_on_preview: By default, preview behavior depends on the execution environment. If :param pulumi.Input[bool] build_on_preview: Setting this to `false` will always skip image builds during previews,
Pulumi detects the operation is running on a CI system (GitHub Actions, and setting it to `true` will always build images during previews.
Travis CI, Azure Pipelines, etc.) then it will build images during
previews as a safeguard. Otherwise, if not running on CI, previews will
not build images.
Setting this to `false` forces previews to never perform builds, and
setting it to `true` will always build the image during previews.
Images built during previews are never exported to registries, however Images built during previews are never exported to registries, however
cache manifests are still exported. cache manifests are still exported.
On-disk Dockerfiles are always validated for syntactic correctness On-disk Dockerfiles are always validated for syntactic correctness
regardless of this setting. regardless of this setting.
Defaults to `true` as a safeguard against broken images merging as part
of CI pipelines.
:param pulumi.Input[pulumi.InputType['BuilderConfigArgs']] builder: Builder configuration. :param pulumi.Input[pulumi.InputType['BuilderConfigArgs']] builder: Builder configuration.
:param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheFromArgs']]]] cache_from: Cache export configuration. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheFromArgs']]]] cache_from: Cache export configuration.
@@ -1045,7 +1041,7 @@ class Image(pulumi.CustomResource):
@overload @overload
def __init__(__self__, def __init__(__self__,
resource_name: str, resource_name: str,
args: Optional[ImageArgs] = None, args: ImageArgs,
opts: Optional[pulumi.ResourceOptions] = None): opts: Optional[pulumi.ResourceOptions] = None):
""" """
A Docker image built using buildx -- Docker's interface to the improved A Docker image built using buildx -- Docker's interface to the improved
@@ -1053,20 +1049,14 @@ class Image(pulumi.CustomResource):
## Stability ## Stability
**This resource is experimental and subject to change.** **This resource is pre-1.0 and in public preview.**
API types are unstable. Subsequent releases _may_ require manual edits We will strive to keep APIs and behavior as stable as possible, but we
to your state file(s) in order to adopt API changes. cannot guarantee stability until version 1.0.
`retainOnDelete: true` is recommended with this resource until it is ## Migrating Pulumi Docker v3 and v4 Image resources
stable. This enables future API changes to be adopted more easily by renaming
resources.
Only use this resource if you understand and accept the risks. 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.
## Migrating v3 and v4 Image resources
The `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. Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications.
### Behavioral differences ### Behavioral differences
@@ -1080,19 +1070,17 @@ class Image(pulumi.CustomResource):
Version `4.x` changed build-on-preview behavior to be opt-in. 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. By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.
Some users felt this made previews in CI less helpful because they no longer detected bad images by default. Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.
The default behavior of the `Image` resource has been changed to strike a better balance between CI use cases and manual updates. The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.
By default, Pulumi will now only build `Image` resources during previews when it detects a CI environment like GitHub Actions. This behavior can be changed by specifying `buildOnPreview`.
Previews run in non-CI environments will not build images.
This behavior is still configurable with `buildOnPreview`.
#### Push behavior #### Push behavior
Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. 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. They expose a `skipPush: true` option to disable pushing.
The `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. 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`). 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. 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.
@@ -1163,28 +1151,28 @@ class Image(pulumi.CustomResource):
```python ```python
import pulumi import pulumi
import pulumi_aws as aws import pulumi_aws as aws
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
ecr_repository = aws.ecr.Repository("ecr-repository") ecr_repository = aws.ecr.Repository("ecr-repository")
auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id) auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id)
my_image = dockerbuild.Image("my-image", my_image = docker_build.Image("my-image",
cache_from=[dockerbuild.CacheFromArgs( cache_from=[docker_build.CacheFromArgs(
registry=dockerbuild.CacheFromRegistryArgs( registry=docker_build.CacheFromRegistryArgs(
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
), ),
)], )],
cache_to=[dockerbuild.CacheToArgs( cache_to=[docker_build.CacheToArgs(
registry=dockerbuild.CacheToRegistryArgs( registry=docker_build.CacheToRegistryArgs(
image_manifest=True, image_manifest=True,
oci_media_types=True, oci_media_types=True,
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
), ),
)], )],
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="./app", location="./app",
), ),
push=True, push=True,
registries=[dockerbuild.RegistryArgs( registries=[docker_build.RegistryArgs(
address=ecr_repository.repository_url, address=ecr_repository.repository_url,
password=auth_token.password, password=auth_token.password,
username=auth_token.user_name, username=auth_token.user_name,
@@ -1195,28 +1183,29 @@ class Image(pulumi.CustomResource):
### Multi-platform image ### Multi-platform image
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
platforms=[ platforms=[
dockerbuild.Platform.PLAN9_AMD64, docker_build.Platform.PLAN9_AMD64,
dockerbuild.Platform.PLAN9_386, docker_build.Platform.PLAN9_386,
]) ],
push=False)
``` ```
### Registry export ### Registry export
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
push=True, push=True,
registries=[dockerbuild.RegistryArgs( registries=[docker_build.RegistryArgs(
address="docker.io", address="docker.io",
password=docker_hub_password, password=docker_hub_password,
username="pulumibot", username="pulumibot",
@@ -1227,127 +1216,138 @@ class Image(pulumi.CustomResource):
### Caching ### Caching
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
cache_from=[dockerbuild.CacheFromArgs( cache_from=[docker_build.CacheFromArgs(
local=dockerbuild.CacheFromLocalArgs( local=docker_build.CacheFromLocalArgs(
src="tmp/cache", src="tmp/cache",
), ),
)], )],
cache_to=[dockerbuild.CacheToArgs( cache_to=[docker_build.CacheToArgs(
local=dockerbuild.CacheToLocalArgs( local=docker_build.CacheToLocalArgs(
dest="tmp/cache", dest="tmp/cache",
mode=dockerbuild.CacheMode.MAX, mode=docker_build.CacheMode.MAX,
), ),
)], )],
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
)) ),
push=False)
``` ```
### Docker Build Cloud ### Docker Build Cloud
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
builder=dockerbuild.BuilderConfigArgs( builder=docker_build.BuilderConfigArgs(
name="cloud-builder-name", name="cloud-builder-name",
), ),
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
exec_=True) exec_=True,
push=False)
``` ```
### Build arguments ### Build arguments
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
build_args={ build_args={
"SET_ME_TO_TRUE": "true", "SET_ME_TO_TRUE": "true",
}, },
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
)) ),
push=False)
``` ```
### Build target ### Build target
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
push=False,
target="build-me") target="build-me")
``` ```
### Named contexts ### Named contexts
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", context=dockerbuild.BuildContextArgs( image = docker_build.Image("image",
location="app", context=docker_build.BuildContextArgs(
named={ location="app",
"golang:latest": dockerbuild.ContextArgs( named={
location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", "golang:latest": docker_build.ContextArgs(
), location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
}, ),
)) },
),
push=False)
``` ```
### Remote context ### Remote context
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", context=dockerbuild.BuildContextArgs( image = docker_build.Image("image",
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", context=docker_build.BuildContextArgs(
)) location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
),
push=False)
``` ```
### Inline Dockerfile ### Inline Dockerfile
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
dockerfile=dockerbuild.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
inline=\"\"\"FROM busybox inline=\"\"\"FROM busybox
COPY hello.c ./ COPY hello.c ./
\"\"\", \"\"\",
)) ),
push=False)
``` ```
### Remote context ### Remote context
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="https://github.com/docker-library/hello-world.git", location="https://github.com/docker-library/hello-world.git",
), ),
dockerfile=dockerbuild.DockerfileArgs( dockerfile=docker_build.DockerfileArgs(
location="app/Dockerfile", location="app/Dockerfile",
)) ),
push=False)
``` ```
### Local export ### Local export
```python ```python
import pulumi import pulumi
import pulumi_dockerbuild as dockerbuild import pulumi_docker_build as docker_build
image = dockerbuild.Image("image", image = docker_build.Image("image",
context=dockerbuild.BuildContextArgs( context=docker_build.BuildContextArgs(
location="app", location="app",
), ),
exports=[dockerbuild.ExportArgs( exports=[docker_build.ExportArgs(
docker=dockerbuild.ExportDockerArgs( docker=docker_build.ExportDockerArgs(
tar=True, tar=True,
), ),
)]) )],
push=False)
``` ```
:param str resource_name: The name of the resource. :param str resource_name: The name of the resource.
@@ -1398,6 +1398,8 @@ class Image(pulumi.CustomResource):
__props__.__dict__["add_hosts"] = add_hosts __props__.__dict__["add_hosts"] = add_hosts
__props__.__dict__["build_args"] = build_args __props__.__dict__["build_args"] = build_args
if build_on_preview is None:
build_on_preview = True
__props__.__dict__["build_on_preview"] = build_on_preview __props__.__dict__["build_on_preview"] = build_on_preview
__props__.__dict__["builder"] = builder __props__.__dict__["builder"] = builder
__props__.__dict__["cache_from"] = cache_from __props__.__dict__["cache_from"] = cache_from
@@ -1414,6 +1416,8 @@ class Image(pulumi.CustomResource):
__props__.__dict__["no_cache"] = no_cache __props__.__dict__["no_cache"] = no_cache
__props__.__dict__["platforms"] = platforms __props__.__dict__["platforms"] = platforms
__props__.__dict__["pull"] = pull __props__.__dict__["pull"] = pull
if push is None and not opts.urn:
raise TypeError("Missing required property 'push'")
__props__.__dict__["push"] = push __props__.__dict__["push"] = push
__props__.__dict__["registries"] = registries __props__.__dict__["registries"] = registries
__props__.__dict__["secrets"] = secrets __props__.__dict__["secrets"] = secrets
@@ -1502,20 +1506,17 @@ class Image(pulumi.CustomResource):
@pulumi.getter(name="buildOnPreview") @pulumi.getter(name="buildOnPreview")
def build_on_preview(self) -> pulumi.Output[Optional[bool]]: def build_on_preview(self) -> pulumi.Output[Optional[bool]]:
""" """
By default, preview behavior depends on the execution environment. If Setting this to `false` will always skip image builds during previews,
Pulumi detects the operation is running on a CI system (GitHub Actions, and setting it to `true` will always build images during previews.
Travis CI, Azure Pipelines, etc.) then it will build images during
previews as a safeguard. Otherwise, if not running on CI, previews will
not build images.
Setting this to `false` forces previews to never perform builds, and
setting it to `true` will always build the image during previews.
Images built during previews are never exported to registries, however Images built during previews are never exported to registries, however
cache manifests are still exported. cache manifests are still exported.
On-disk Dockerfiles are always validated for syntactic correctness On-disk Dockerfiles are always validated for syntactic correctness
regardless of this setting. regardless of this setting.
Defaults to `true` as a safeguard against broken images merging as part
of CI pipelines.
""" """
return pulumi.get(self, "build_on_preview") return pulumi.get(self, "build_on_preview")
@@ -1700,7 +1701,7 @@ class Image(pulumi.CustomResource):
@property @property
@pulumi.getter @pulumi.getter
def push(self) -> pulumi.Output[Optional[bool]]: def push(self) -> pulumi.Output[bool]:
""" """
When `true` the build will automatically include a `registry` export. When `true` the build will automatically include a `registry` export.

View File

@@ -104,13 +104,25 @@ class Index(pulumi.CustomResource):
tag: Optional[pulumi.Input[str]] = None, tag: Optional[pulumi.Input[str]] = None,
__props__=None): __props__=None):
""" """
An index (or manifest list) referencing one or more existing images. A wrapper around `docker buildx imagetools create` to create an index
(or manifest list) referencing one or more existing images.
Useful for crafting a multi-platform image from several In most cases you do not need an `Index` to build a multi-platform
platform-specific images. image -- specifying multiple platforms on the `Image` will handle this
for you automatically.
This creates an OCI image index or a Docker manifest list depending on However, as of April 2024, building multi-platform images _with
the media types of the source images. 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 ## Example Usage
### Multi-platform registry caching ### Multi-platform registry caching
@@ -179,13 +191,25 @@ class Index(pulumi.CustomResource):
args: IndexArgs, args: IndexArgs,
opts: Optional[pulumi.ResourceOptions] = None): opts: Optional[pulumi.ResourceOptions] = None):
""" """
An index (or manifest list) referencing one or more existing images. A wrapper around `docker buildx imagetools create` to create an index
(or manifest list) referencing one or more existing images.
Useful for crafting a multi-platform image from several In most cases you do not need an `Index` to build a multi-platform
platform-specific images. image -- specifying multiple platforms on the `Image` will handle this
for you automatically.
This creates an OCI image index or a Docker manifest list depending on However, as of April 2024, building multi-platform images _with
the media types of the source images. 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 ## Example Usage
### Multi-platform registry caching ### Multi-platform registry caching

View File

@@ -1,5 +1,4 @@
{ {
"resource": true, "resource": true,
"name": "docker-build", "name": "docker-build"
"server": "github.com/pulumi/pulumi-docker-build"
} }

View File

@@ -1,15 +1,15 @@
[project] [project]
name = "pulumi_docker_build" name = "pulumi_docker_build"
description = "A Pulumi provider for Docker buildx" description = "A Pulumi provider for building modern Docker images with buildx and BuildKit."
dependencies = ["parver>=0.2.1", "pulumi>=3.0.0,<4.0.0", "semver>=2.8.1"] dependencies = ["parver>=0.2.1", "pulumi>=3.0.0,<4.0.0", "semver>=2.8.1"]
keywords = ["docker", "buildkit", "buildx"] keywords = ["docker", "buildkit", "buildx", "kind/native"]
readme = "README.md" readme = "README.md"
requires-python = ">=3.8" requires-python = ">=3.8"
version = "0.0.0" version = "0.0.0"
[project.license] [project.license]
text = "Apache-2.0" text = "Apache-2.0"
[project.urls] [project.urls]
Homepage = "https://pulumi.io" Homepage = "https://pulumi.com"
Repository = "https://github.com/pulumi/pulumi-docker-build" Repository = "https://github.com/pulumi/pulumi-docker-build"
[build-system] [build-system]