diff --git a/.devcontainer b/.devcontainer deleted file mode 160000 index dce1e31..0000000 --- a/.devcontainer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dce1e316309882a657bcc1e32e562706db56a15d diff --git a/.devcontainer.json b/.devcontainer.json deleted file mode 100644 index 6a46e60..0000000 --- a/.devcontainer.json +++ /dev/null @@ -1,68 +0,0 @@ -// Reference: -// - https://containers.dev/features -// - https://containers.dev/implementors/features -// - https://code.visualstudio.com/docs/getstarted/settings -{ - "name": "pulumi", - "image": "ghcr.io/pulumi/devcontainer", - "customizations": { - "vscode": { - "settings": [ - "go.testTags", "all", - "go.buildTags", "all", - "editor.minimap.enabled", false, - "explorer.openEditors.visible", 1, - "editor.quickSuggestionsDelay", 0, - "editor.suggestSelection", "first", - "editor.snippetSuggestions", "top", - "editor.gotoLocation.multipleReferences", "goto", - "editor.gotoLocation.multipleDefinitions", "goto", - "editor.gotoLocation.multipleDeclarations", "goto", - "editor.gotoLocation.multipleImplementations", "goto", - "editor.gotoLocation.multipleTypeDefinitions", "goto", - "editor.terminal.integrated.shell.linux", "/usr/bin/zsh", - "files.trimTrailingWhitespace", true, - "files.trimFinalNewlines", true - ], - "extensions": [ - "golang.go", - "vscodevim.vim", - "github.copilot", - "ms-python.python", - "jetpack-io.devbox", - "redhat.vscode-yaml", - "esbenp.prettier-vscode", - "ms-vscode.makefile-tools", - "ms-azuretools.vscode-docker", - "github.vscode-pull-request-github", - "ms-vscode-remote.remote-containers", - "visualstudioexptteam.vscodeintellicode", - "bierner.markdown-preview-github-styles" - ] - } - }, - "features": { - "ghcr.io/devcontainers/features/common-utils:2": { - "installZsh": true, - "configureZshAsDefaultShell": true, - "installOhMyZsh": true, - "installOhMyZshConfig": true, - "upgradePackages": true, - "nonFreePackages": true, - "username": "vscode", - "userUid": "automatic", - "userGid": "automatic" - }, - "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { - "moby": false, - "installDockerBuildx": true, - "version": "latest", - "dockerDashComposeVersion": "v2" - } - }, - "postCreateCommand": "git submodule update --init --recursive", - "remoteUser": "vscode", - "forwardPorts": [1313], - "runArgs": ["--network=host"] -} - diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index e01d77b..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -sdk/**/* linguist-generated=true -provider/internal/mock*.go linguist-generated=true diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c3a0a14..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: 2 -updates: - - package-ecosystem: gomod - directory: / - schedule: - interval: daily - groups: - pulumi: - patterns: - - "github.com/pulumi/*" - docker: - patterns: - - "github.com/distribution/*" - - "github.com/docker/*" - - "github.com/moby/*" - security: - applies-to: security-updates - patterns: - - "*" - other: - patterns: - - "*" - labels: - - dependencies - - impact/no-changelog-required diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 07b1169..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,591 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: build -on: - push: - branches: - - master - - main - - feature-** - paths-ignore: - - CHANGELOG.md - tags-ignore: - - v* - - sdk/* - - "**" - workflow_dispatch: {} -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} -jobs: - prerequisites: - runs-on: ubuntu-latest - name: prerequisites - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - if: github.event_name == 'pull_request' - name: Install Schema Tools - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/schema-tools - - name: Build codegen binaries - run: make codegen - - name: Build Schema - run: make generate_schema - - if: github.event_name == 'pull_request' - name: Check Schema is Valid - run: >- - echo 'SCHEMA_CHANGES<> $GITHUB_ENV - - schema-tools compare -p ${{ env.PROVIDER }} -o ${{ github.event.repository.default_branch }} -n --local-path=provider/cmd/pulumi-resource-${{ env.PROVIDER }}/schema.json >> $GITHUB_ENV - - echo 'EOF' >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - - if: github.event_name == 'pull_request' - name: Comment on PR with Details of Schema Check - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - ${{ env.SCHEMA_CHANGES }} - comment_tag: schemaCheck - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: contains(env.SCHEMA_CHANGES, 'Looking good! No breaking changes found.') && - github.actor == 'pulumi-bot' - name: Add label if no breaking changes - uses: actions-ecosystem/action-add-labels@v1.1.0 - with: - labels: impact/no-changelog-required - number: ${{ github.event.issue.number }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: Build Provider - run: make provider - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar provider binaries - run: tar -zcf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin/ pulumi-resource-${{ env.PROVIDER }} - pulumi-gen-${{ env.PROVIDER}} - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin/provider.tar.gz - - name: Test Provider Library - run: make test_provider - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in building provider prerequisites - fields: repo,commit,author,action - status: ${{ job.status }} - build_sdks: - needs: prerequisites - runs-on: pulumi-ubuntu-8core - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: build_sdks - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Generate SDK - run: make generate_${{ matrix.language }} - - name: Build SDK - run: make build_${{ matrix.language }} - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar SDK folder - run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz - retention-days: 30 - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure while building SDKs - fields: repo,commit,author,action - status: ${{ job.status }} - test: - runs-on: pulumi-ubuntu-8core - needs: - - build_sdks - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: test - permissions: - contents: read - id-token: write - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Download SDK - uses: actions/download-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: UnTar SDK folder - run: tar -zxf ${{ github.workspace}}/sdk/${{ matrix.language}}.tar.gz -C ${{ - github.workspace}}/sdk/${{ matrix.language}} - - name: Update path - run: echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - - name: Install Node dependencies - run: yarn global add typescript - - run: dotnet nuget add source ${{ github.workspace }}/nuget - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install dependencies - run: make install_${{ matrix.language}}_sdk - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: ${{ env.AWS_REGION }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 3600 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run tests - run: >- - set -euo pipefail - - cd examples && go test -v -json -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -parallel 4 . 2>&1 | tee /tmp/gotest.log | gotestfmt - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in SDK tests - fields: repo,commit,author,action - status: ${{ job.status }} - publish: - runs-on: ubuntu-latest - needs: test - name: publish - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Clear GitHub Actions Ubuntu runner disk space - uses: jlumbroso/free-disk-space@v1.3.1 - with: - tool-cache: false - dotnet: false - android: true - haskell: true - swap-storage: true - large-packages: false - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: us-east-2 - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 7200 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-external-id: upload-pulumi-release - role-to-assume: ${{ secrets.AWS_UPLOAD_ROLE_ARN }} - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 - env: - GORELEASER_CURRENT_TAG: v${{ steps.version.outputs.version }} - with: - args: -p 3 -f .goreleaser.prerelease.yml --clean --skip=validate --timeout 60m0s - version: latest - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing binaries - fields: repo,commit,author,action - status: ${{ job.status }} - publish_sdk: - runs-on: ubuntu-latest - needs: publish - name: publish_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Checkout Scripts Repo - uses: actions/checkout@v4 - with: - path: ci-scripts - repository: pulumi/scripts - - run: echo "ci-scripts" >> .git/info/exclude - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Download python SDK - uses: actions/download-artifact@v4 - with: - name: python-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress python SDK - run: tar -zxf ${{github.workspace}}/sdk/python.tar.gz -C - ${{github.workspace}}/sdk/python - - name: Download dotnet SDK - uses: actions/download-artifact@v4 - with: - name: dotnet-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress dotnet SDK - run: tar -zxf ${{github.workspace}}/sdk/dotnet.tar.gz -C - ${{github.workspace}}/sdk/dotnet - - name: Download nodejs SDK - uses: actions/download-artifact@v4 - with: - name: nodejs-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress nodejs SDK - run: tar -zxf ${{github.workspace}}/sdk/nodejs.tar.gz -C - ${{github.workspace}}/sdk/nodejs - - name: Install Twine - run: python -m pip install twine==5.0.0 - - name: Publish SDKs - run: ./ci-scripts/ci/publish-tfgen-package ${{ github.workspace }} - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - PYPI_PUBLISH_ARTIFACTS: all - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing SDK - fields: repo,commit,author,action - status: ${{ job.status }} - publish_java_sdk: - runs-on: ubuntu-latest - continue-on-error: true - needs: publish - name: publish_java_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download java SDK - uses: actions/download-artifact@v4 - with: - name: java-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress java SDK - run: tar -zxf ${{github.workspace}}/sdk/java.tar.gz -C - ${{github.workspace}}/sdk/java - - name: Publish Java SDK - uses: gradle/gradle-build-action@v3 - env: - PACKAGE_VERSION: ${{ env.PROVIDER_VERSION }} - with: - arguments: publishToSonatype closeAndReleaseSonatypeStagingRepository - build-root-directory: ./sdk/java - gradle-version: 7.4.1 - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ env.PR_COMMIT_SHA }} - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: golangci-lint provider pkg - uses: golangci/golangci-lint-action@v4 - with: - version: ${{ env.GOLANGCI_LINT_VERSION }} - args: -c ../.golangci.yml - working-directory: provider - name: lint - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository diff --git a/.github/workflows/command-dispatch.yml b/.github/workflows/command-dispatch.yml deleted file mode 100644 index 03037c7..0000000 --- a/.github/workflows/command-dispatch.yml +++ /dev/null @@ -1,67 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: command-dispatch -on: - issue_comment: - types: - - created - - edited -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} -jobs: - command-dispatch-for-testing: - runs-on: ubuntu-latest - name: command-dispatch-for-testing - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - uses: peter-evans/slash-command-dispatch@v2 - with: - token: ${{ secrets.PULUMI_BOT_TOKEN }} - reaction-token: ${{ secrets.GITHUB_TOKEN }} - commands: run-acceptance-tests - permission: write - issue-type: pull-request - repository: pulumi/pulumi-docker-build - if: ${{ github.event.issue.pull_request }} diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml deleted file mode 100644 index dcb0654..0000000 --- a/.github/workflows/prerelease.yml +++ /dev/null @@ -1,595 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: prerelease -on: - push: - tags: - - v*.*.*-** -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} - IS_PRERELEASE: true -jobs: - prerequisites: - runs-on: ubuntu-latest - name: prerequisites - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - if: github.event_name == 'pull_request' - name: Install Schema Tools - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/schema-tools - - name: Build codegen binaries - run: make codegen - - name: Build Schema - run: make generate_schema - - if: github.event_name == 'pull_request' - name: Check Schema is Valid - run: >- - echo 'SCHEMA_CHANGES<> $GITHUB_ENV - - schema-tools compare -p ${{ env.PROVIDER }} -o ${{ github.event.repository.default_branch }} -n --local-path=provider/cmd/pulumi-resource-${{ env.PROVIDER }}/schema.json >> $GITHUB_ENV - - echo 'EOF' >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - - if: github.event_name == 'pull_request' - name: Comment on PR with Details of Schema Check - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - ${{ env.SCHEMA_CHANGES }} - comment_tag: schemaCheck - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: contains(env.SCHEMA_CHANGES, 'Looking good! No breaking changes found.') && - github.actor == 'pulumi-bot' - name: Add label if no breaking changes - uses: actions-ecosystem/action-add-labels@v1.1.0 - with: - labels: impact/no-changelog-required - number: ${{ github.event.issue.number }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: Build Provider - run: make provider - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar provider binaries - run: tar -zcf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin/ pulumi-resource-${{ env.PROVIDER }} - pulumi-gen-${{ env.PROVIDER}} - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin/provider.tar.gz - - name: Test Provider Library - run: make test_provider - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in building provider prerequisites - fields: repo,commit,author,action - status: ${{ job.status }} - build_sdks: - needs: prerequisites - runs-on: pulumi-ubuntu-8core - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: build_sdks - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Generate SDK - run: make generate_${{ matrix.language }} - - name: Build SDK - run: make build_${{ matrix.language }} - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar SDK folder - run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure while building SDKs - fields: repo,commit,author,action - status: ${{ job.status }} - test: - runs-on: pulumi-ubuntu-8core - needs: - - build_sdks - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: test - permissions: - contents: read - id-token: write - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Download SDK - uses: actions/download-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: UnTar SDK folder - run: tar -zxf ${{ github.workspace}}/sdk/${{ matrix.language}}.tar.gz -C ${{ - github.workspace}}/sdk/${{ matrix.language}} - - name: Update path - run: echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - - name: Install Node dependencies - run: yarn global add typescript - - run: dotnet nuget add source ${{ github.workspace }}/nuget - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install dependencies - run: make install_${{ matrix.language}}_sdk - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: ${{ env.AWS_REGION }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 3600 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run tests - run: >- - set -euo pipefail - - cd examples && go test -v -json -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -parallel 4 . 2>&1 | tee /tmp/gotest.log | gotestfmt - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in SDK tests - fields: repo,commit,author,action - status: ${{ job.status }} - publish: - runs-on: ubuntu-latest - needs: test - name: publish - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Clear GitHub Actions Ubuntu runner disk space - uses: jlumbroso/free-disk-space@v1.3.1 - with: - tool-cache: false - dotnet: false - android: true - haskell: true - swap-storage: true - large-packages: false - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: us-east-2 - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 7200 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-external-id: upload-pulumi-release - role-to-assume: ${{ secrets.AWS_UPLOAD_ROLE_ARN }} - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 - env: - GORELEASER_CURRENT_TAG: v${{ steps.version.outputs.version }} - with: - args: -p 3 -f .goreleaser.prerelease.yml --clean --skip=validate --timeout 60m0s - version: latest - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing binaries - fields: repo,commit,author,action - status: ${{ job.status }} - publish_sdk: - runs-on: ubuntu-latest - needs: publish - name: publish_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Checkout Scripts Repo - uses: actions/checkout@v4 - with: - path: ci-scripts - repository: pulumi/scripts - - run: echo "ci-scripts" >> .git/info/exclude - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Download python SDK - uses: actions/download-artifact@v4 - with: - name: python-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress python SDK - run: tar -zxf ${{github.workspace}}/sdk/python.tar.gz -C - ${{github.workspace}}/sdk/python - - name: Download dotnet SDK - uses: actions/download-artifact@v4 - with: - name: dotnet-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress dotnet SDK - run: tar -zxf ${{github.workspace}}/sdk/dotnet.tar.gz -C - ${{github.workspace}}/sdk/dotnet - - name: Download nodejs SDK - uses: actions/download-artifact@v4 - with: - name: nodejs-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress nodejs SDK - run: tar -zxf ${{github.workspace}}/sdk/nodejs.tar.gz -C - ${{github.workspace}}/sdk/nodejs - - name: Install Twine - run: python -m pip install twine==5.0.0 - - name: Publish SDKs - run: ./ci-scripts/ci/publish-tfgen-package ${{ github.workspace }} - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - PYPI_PUBLISH_ARTIFACTS: all - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing SDK - fields: repo,commit,author,action - status: ${{ job.status }} - publish_java_sdk: - runs-on: ubuntu-latest - continue-on-error: true - needs: publish - name: publish_java_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download java SDK - uses: actions/download-artifact@v4 - with: - name: java-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress java SDK - run: tar -zxf ${{github.workspace}}/sdk/java.tar.gz -C - ${{github.workspace}}/sdk/java - - name: Publish Java SDK - uses: gradle/gradle-build-action@v3 - env: - PACKAGE_VERSION: ${{ env.PROVIDER_VERSION }} - with: - arguments: publishToSonatype closeAndReleaseSonatypeStagingRepository - build-root-directory: ./sdk/java - gradle-version: 7.4.1 - publish_go_sdk: - runs-on: ubuntu-latest - name: publish-go-sdk - needs: publish_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Download go SDK - uses: actions/download-artifact@v4 - with: - name: go-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress go SDK - run: tar -zxf ${{github.workspace}}/sdk/go.tar.gz -C - ${{github.workspace}}/sdk/go - - name: Publish Go SDK - uses: pulumi/publish-go-sdk-action@v1 - with: - repository: ${{ github.repository }} - base-ref: ${{ github.sha }} - source: sdk/go/dockerbuild - path: sdk/go/dockerbuild - version: ${{ steps.version.outputs.version }} - additive: false - files: |- - go.* - go/** - !*.tar.gz diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml deleted file mode 100644 index 5595834..0000000 --- a/.github/workflows/pull-request.yml +++ /dev/null @@ -1,64 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: pull-request -on: - pull_request_target: {} -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} -jobs: - comment-on-pr: - runs-on: ubuntu-latest - name: comment-on-pr - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - name: Comment PR - uses: thollander/actions-comment-pull-request@v2 - with: - message: > - PR is now waiting for a maintainer to run the acceptance tests. - - **Note for the maintainer:** To run the acceptance tests, please comment */run-acceptance-tests* on the PR - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: github.event.pull_request.head.repo.full_name != github.repository diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 36df016..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,609 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: release -on: - push: - tags: - - v*.*.* - - "!v*.*.*-**" -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} -jobs: - prerequisites: - runs-on: ubuntu-latest - name: prerequisites - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - if: github.event_name == 'pull_request' - name: Install Schema Tools - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/schema-tools - - name: Build codegen binaries - run: make codegen - - name: Build Schema - run: make generate_schema - - if: github.event_name == 'pull_request' - name: Check Schema is Valid - run: >- - echo 'SCHEMA_CHANGES<> $GITHUB_ENV - - schema-tools compare -p ${{ env.PROVIDER }} -o ${{ github.event.repository.default_branch }} -n --local-path=provider/cmd/pulumi-resource-${{ env.PROVIDER }}/schema.json >> $GITHUB_ENV - - echo 'EOF' >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - - if: github.event_name == 'pull_request' - name: Comment on PR with Details of Schema Check - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - ${{ env.SCHEMA_CHANGES }} - comment_tag: schemaCheck - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: contains(env.SCHEMA_CHANGES, 'Looking good! No breaking changes found.') && - github.actor == 'pulumi-bot' - name: Add label if no breaking changes - uses: actions-ecosystem/action-add-labels@v1.1.0 - with: - labels: impact/no-changelog-required - number: ${{ github.event.issue.number }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: Build Provider - run: make provider - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar provider binaries - run: tar -zcf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin/ pulumi-resource-${{ env.PROVIDER }} - pulumi-gen-${{ env.PROVIDER}} - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin/provider.tar.gz - - name: Test Provider Library - run: make test_provider - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in building provider prerequisites - fields: repo,commit,author,action - status: ${{ job.status }} - build_sdks: - needs: prerequisites - runs-on: pulumi-ubuntu-8core - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: build_sdks - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Generate SDK - run: make generate_${{ matrix.language }} - - name: Build SDK - run: make build_${{ matrix.language }} - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar SDK folder - run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure while building SDKs - fields: repo,commit,author,action - status: ${{ job.status }} - test: - runs-on: pulumi-ubuntu-8core - needs: - - build_sdks - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: test - permissions: - contents: read - id-token: write - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Download SDK - uses: actions/download-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: UnTar SDK folder - run: tar -zxf ${{ github.workspace}}/sdk/${{ matrix.language}}.tar.gz -C ${{ - github.workspace}}/sdk/${{ matrix.language}} - - name: Update path - run: echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - - name: Install Node dependencies - run: yarn global add typescript - - run: dotnet nuget add source ${{ github.workspace }}/nuget - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install dependencies - run: make install_${{ matrix.language}}_sdk - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: ${{ env.AWS_REGION }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 3600 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run tests - run: >- - set -euo pipefail - - cd examples && go test -v -json -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -parallel 4 . 2>&1 | tee /tmp/gotest.log | gotestfmt - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in SDK tests - fields: repo,commit,author,action - status: ${{ job.status }} - publish: - runs-on: ubuntu-latest - needs: test - name: publish - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Clear GitHub Actions Ubuntu runner disk space - uses: jlumbroso/free-disk-space@v1.3.1 - with: - tool-cache: false - dotnet: false - android: true - haskell: true - swap-storage: true - large-packages: false - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: us-east-2 - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 7200 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-external-id: upload-pulumi-release - role-to-assume: ${{ secrets.AWS_UPLOAD_ROLE_ARN }} - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 - env: - GORELEASER_CURRENT_TAG: v${{ steps.version.outputs.version }} - with: - args: -p 3 release --clean --timeout 60m0s - version: latest - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing binaries - fields: repo,commit,author,action - status: ${{ job.status }} - publish_sdk: - runs-on: ubuntu-latest - needs: publish - name: publish_sdks - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Checkout Scripts Repo - uses: actions/checkout@v4 - with: - path: ci-scripts - repository: pulumi/scripts - - run: echo "ci-scripts" >> .git/info/exclude - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Download python SDK - uses: actions/download-artifact@v4 - with: - name: python-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress python SDK - run: tar -zxf ${{github.workspace}}/sdk/python.tar.gz -C - ${{github.workspace}}/sdk/python - - name: Download dotnet SDK - uses: actions/download-artifact@v4 - with: - name: dotnet-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress dotnet SDK - run: tar -zxf ${{github.workspace}}/sdk/dotnet.tar.gz -C - ${{github.workspace}}/sdk/dotnet - - name: Download nodejs SDK - uses: actions/download-artifact@v4 - with: - name: nodejs-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress nodejs SDK - run: tar -zxf ${{github.workspace}}/sdk/nodejs.tar.gz -C - ${{github.workspace}}/sdk/nodejs - - name: Install Twine - run: python -m pip install twine==5.0.0 - - name: Publish SDKs - run: ./ci-scripts/ci/publish-tfgen-package ${{ github.workspace }} - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - PYPI_PUBLISH_ARTIFACTS: all - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in publishing SDK - fields: repo,commit,author,action - status: ${{ job.status }} - publish_java_sdk: - runs-on: ubuntu-latest - continue-on-error: true - needs: publish - name: publish_java_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download java SDK - uses: actions/download-artifact@v4 - with: - name: java-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress java SDK - run: tar -zxf ${{github.workspace}}/sdk/java.tar.gz -C - ${{github.workspace}}/sdk/java - - name: Publish Java SDK - uses: gradle/gradle-build-action@v3 - env: - PACKAGE_VERSION: ${{ env.PROVIDER_VERSION }} - with: - arguments: publishToSonatype closeAndReleaseSonatypeStagingRepository - build-root-directory: ./sdk/java - gradle-version: 7.4.1 - publish_go_sdk: - runs-on: ubuntu-latest - name: publish-go-sdk - needs: publish_sdk - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Download go SDK - uses: actions/download-artifact@v4 - with: - name: go-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: Uncompress go SDK - run: tar -zxf ${{github.workspace}}/sdk/go.tar.gz -C - ${{github.workspace}}/sdk/go - - name: Publish Go SDK - uses: pulumi/publish-go-sdk-action@v1 - with: - repository: ${{ github.repository }} - base-ref: ${{ github.sha }} - source: sdk/go/dockerbuild - path: sdk/go/dockerbuild - version: ${{ steps.version.outputs.version }} - additive: false - files: |- - go.* - go/** - !*.tar.gz - dispatch_docs_build: - runs-on: ubuntu-latest - needs: publish_go_sdk - steps: - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Dispatch Event - run: pulumictl create docs-build pulumi-${{ env.PROVIDER }} - ${GITHUB_REF#refs/tags/} - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - name: dispatch_docs_build diff --git a/.github/workflows/run-acceptance-tests.yml b/.github/workflows/run-acceptance-tests.yml deleted file mode 100644 index cce18a8..0000000 --- a/.github/workflows/run-acceptance-tests.yml +++ /dev/null @@ -1,441 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: run-acceptance-tests -on: - repository_dispatch: - types: - - run-acceptance-tests-command - pull_request: - branches: - - master - - main - paths-ignore: - - CHANGELOG.md - workflow_dispatch: {} -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} - PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }} -jobs: - comment-notification: - runs-on: ubuntu-latest - name: comment-notification - steps: - - name: Create URL to the run output - id: vars - run: echo - run-url=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID - >> "$GITHUB_OUTPUT" - - name: Update with Result - uses: peter-evans/create-or-update-comment@v1 - with: - token: ${{ secrets.PULUMI_BOT_TOKEN }} - repository: ${{ github.event.client_payload.github.payload.repository.full_name }} - issue-number: ${{ github.event.client_payload.github.payload.issue.number }} - body: "Please view the PR build: ${{ steps.vars.outputs.run-url }}" - if: github.event_name == 'repository_dispatch' - prerequisites: - runs-on: ubuntu-latest - name: prerequisites - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ env.PR_COMMIT_SHA }} - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - if: github.event_name == 'pull_request' - name: Install Schema Tools - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/schema-tools - - name: Build codegen binaries - run: make codegen - - name: Build Schema - run: make generate_schema - - if: github.event_name == 'pull_request' - name: Check Schema is Valid - run: >- - echo 'SCHEMA_CHANGES<> $GITHUB_ENV - - schema-tools compare -p ${{ env.PROVIDER }} -o ${{ github.event.repository.default_branch }} -n --local-path=provider/cmd/pulumi-resource-${{ env.PROVIDER }}/schema.json >> $GITHUB_ENV - - echo 'EOF' >> $GITHUB_ENV - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - - if: github.event_name == 'pull_request' - name: Comment on PR with Details of Schema Check - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - ${{ env.SCHEMA_CHANGES }} - comment_tag: schemaCheck - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: contains(env.SCHEMA_CHANGES, 'Looking good! No breaking changes found.') && - github.actor == 'pulumi-bot' - name: Add label if no breaking changes - uses: actions-ecosystem/action-add-labels@v1.1.0 - with: - labels: impact/no-changelog-required - number: ${{ github.event.issue.number }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: Build Provider - run: make provider - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar provider binaries - run: tar -zcf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin/ pulumi-resource-${{ env.PROVIDER }} - pulumi-gen-${{ env.PROVIDER}} - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin/provider.tar.gz - - name: Test Provider Library - run: make test_provider - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in building provider prerequisites - fields: repo,commit,author,action - status: ${{ job.status }} - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - build_sdks: - needs: prerequisites - runs-on: pulumi-ubuntu-8core - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: build_sdks - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ env.PR_COMMIT_SHA }} - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Generate SDK - run: make generate_${{ matrix.language }} - - name: Build SDK - run: make build_${{ matrix.language }} - - name: Check worktree clean - uses: pulumi/git-status-check-action@v1 - with: - allowed-changes: |- - sdk/**/pulumi-plugin.json - sdk/dotnet/Pulumi.*.csproj - sdk/go/**/pulumiUtilities.go - sdk/nodejs/package.json - sdk/python/pyproject.toml - - run: git status --porcelain - - name: Tar SDK folder - run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz - retention-days: 30 - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure while building SDKs - fields: repo,commit,author,action - status: ${{ job.status }} - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - test: - runs-on: pulumi-ubuntu-8core - needs: - - build_sdks - strategy: - fail-fast: true - matrix: - language: - - nodejs - - python - - dotnet - - go - - java - name: test - permissions: - contents: read - id-token: write - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ env.PR_COMMIT_SHA }} - - id: version - name: Set Provider Version - uses: pulumi/provider-version-action@v1 - with: - set-env: PROVIDER_VERSION - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVAVERSION }} - distribution: temurin - cache: gradle - - name: Setup Gradle - uses: gradle/gradle-build-action@v3 - with: - gradle-version: "7.6" - - name: Download provider + tfgen binaries - uses: actions/download-artifact@v4 - with: - name: pulumi-${{ env.PROVIDER }}-provider.tar.gz - path: ${{ github.workspace }}/bin - - name: UnTar provider binaries - run: tar -zxf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ - github.workspace}}/bin - - name: Restore Binary Permissions - run: find ${{ github.workspace }} -name "pulumi-*-${{ env.PROVIDER }}" -print - -exec chmod +x {} \; - - name: Download SDK - uses: actions/download-artifact@v4 - with: - name: ${{ matrix.language }}-sdk.tar.gz - path: ${{ github.workspace}}/sdk/ - - name: UnTar SDK folder - run: tar -zxf ${{ github.workspace}}/sdk/${{ matrix.language}}.tar.gz -C ${{ - github.workspace}}/sdk/${{ matrix.language}} - - name: Update path - run: echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - - name: Install Node dependencies - run: yarn global add typescript - - run: dotnet nuget add source ${{ github.workspace }}/nuget - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install dependencies - run: make install_${{ matrix.language}}_sdk - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-region: ${{ env.AWS_REGION }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - role-duration-seconds: 3600 - role-session-name: ${{ env.PROVIDER }}@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run tests - run: >- - set -euo pipefail - - cd examples && go test -v -json -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -parallel 4 . 2>&1 | tee /tmp/gotest.log | gotestfmt - - if: failure() && github.event_name == 'push' - name: Notify Slack - uses: 8398a7/action-slack@v3 - with: - author_name: Failure in SDK tests - fields: repo,commit,author,action - status: ${{ job.status }} - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - sentinel: - runs-on: ubuntu-latest - name: sentinel - steps: - - name: Mark workflow as successful - uses: guibranco/github-status-action-v2@0849440ec82c5fa69b2377725b9b7852a3977e76 - with: - authToken: ${{ secrets.GITHUB_TOKEN }} - context: Sentinel - state: success - description: Sentinel checks passed - sha: ${{ github.event.pull_request.head.sha || github.sha }} - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - needs: - - test - - lint - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ env.PR_COMMIT_SHA }} - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: golangci-lint provider pkg - uses: golangci/golangci-lint-action@v4 - with: - version: ${{ env.GOLANGCI_LINT_VERSION }} - args: -c ../.golangci.yml - working-directory: provider - name: lint - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository diff --git a/.github/workflows/weekly-pulumi-update.yml b/.github/workflows/weekly-pulumi-update.yml deleted file mode 100644 index 9582f03..0000000 --- a/.github/workflows/weekly-pulumi-update.yml +++ /dev/null @@ -1,138 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -name: weekly-pulumi-update -on: - schedule: - - cron: 35 12 * * 4 - workflow_dispatch: {} -env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - PROVIDER: docker-build - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }} - PYPI_USERNAME: __token__ - PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - TRAVIS_OS_NAME: linux - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/.. - PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }} - PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }} - SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }} - SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }} - GOVERSION: 1.21.x - NODEVERSION: 20.x - PYTHONVERSION: "3.11" - DOTNETVERSION: | - 6.0.x - 3.1.301 - JAVAVERSION: "11" - AWS_REGION: us-west-2 - PULUMI_API: https://api.pulumi-staging.io - ARM_CLIENT_ID: 30e520fa-12b4-4e21-b473-9426c5ac2e1e - ARM_SUBSCRIPTION_ID: 0282681f-7a9e-424b-80b2-96babd57a8a1 - ARM_TENANT_ID: 706143bc-e1d4-4593-aee2-c9dc60ab9be7 - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - AZURE_LOCATION: westus - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: 895284651812 - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} -jobs: - weekly-pulumi-update: - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - with: - lfs: true - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GOVERSION }} - cache-dependency-path: "**/*.sum" - - name: Install pulumictl - uses: jaxxstorm/action-install-gh-release@v1.11.0 - with: - repo: pulumi/pulumictl - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{ env.DOTNETVERSION }} - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODEVERSION }} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHONVERSION }} - - name: Update Pulumi/Pulumi - id: gomod - run: >- - git config --local user.email 'bot@pulumi.com' - - git config --local user.name 'pulumi-bot' - - git checkout -b update-pulumi/${{ github.run_id }}-${{ github.run_number }} - - for MODFILE in $(find . -name go.mod); do pushd $(dirname $MODFILE); go get github.com/pulumi/pulumi/pkg/v3 github.com/pulumi/pulumi/sdk/v3; go mod tidy; popd; done - - gh repo view pulumi/pulumi --json latestRelease --jq .latestRelease.tagName | sed 's/^v//' > .pulumi.version - - git update-index -q --refresh - - if ! git diff-files --quiet; then echo changes=1 >> "$GITHUB_OUTPUT"; fi - - name: Provider with Pulumi Upgrade - if: steps.gomod.outputs.changes != 0 - run: >- - make codegen && make local_generate - - git add sdk/nodejs - - git commit -m "Regenerating Node.js SDK based on updated modules" || echo "ignore commit failure, may be empty" - - git add sdk/python - - git commit -m "Regenerating Python SDK based on updated modules" || echo "ignore commit failure, may be empty" - - git add sdk/dotnet - - git commit -m "Regenerating .NET SDK based on updated modules" || echo "ignore commit failure, may be empty" - - git add sdk/go* - - git commit -m "Regenerating Go SDK based on updated modules" || echo "ignore commit failure, may be empty" - - git add sdk/java* - - git commit -m "Regenerating Java SDK based on updated modules" || echo "ignore commit failure, may be empty" - - git add . - - git commit -m "Updated modules" || echo "ignore commit failure, may be empty" - - git push origin update-pulumi/${{ github.run_id }}-${{ github.run_number }} - - name: Create PR - id: create-pr - if: steps.gomod.outputs.changes != 0 - uses: repo-sync/pull-request@v2.6.2 - with: - source_branch: update-pulumi/${{ github.run_id }}-${{ github.run_number }} - destination_branch: main - pr_title: Automated Pulumi/Pulumi upgrade - github_token: ${{ secrets.PULUMI_BOT_TOKEN }} - env: - GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} - name: weekly-pulumi-update diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a4cd8b9..0000000 --- a/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -/vendor/ -**/bin/ -**/obj/ -**/node_modules/ -**/.vs -**/.idea -**/.ionide -**/.vscode -*.swp -Pulumi.*.yaml -yarn.lock -ci-scripts -nuget/ -coverage.txt - - -sdk/dotnet/version.txt -sdk/java/.gradle -sdk/java/build/ -sdk/java/build.gradle -sdk/python/venv diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index caa22b6..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule ".devcontainer"] - path = .devcontainer - url = https://github.com/pulumi/devcontainer diff --git a/.golangci.yml b/.golangci.yml deleted file mode 100644 index 5b65c9b..0000000 --- a/.golangci.yml +++ /dev/null @@ -1,104 +0,0 @@ -run: - timeout: 10m - -linters: - enable-all: false - enable: - - depguard - - errcheck - - exhaustive - - exportloopref - - gci - - gocritic - - gofumpt - - goheader - - gosec - - govet - - importas - - ineffassign - - lll - - misspell - - nakedret - - nolintlint - - paralleltest - - perfsprint - - prealloc - - revive - - unconvert - - unused - -linters-settings: - depguard: - rules: - protobuf: - deny: - - pkg: "github.com/golang/protobuf" - desc: Use google.golang.org/protobuf instead - gci: - sections: - - standard # Standard section: captures all standard library packages. - - blank # Blank section: contains all blank imports. - - default # Default section: contains all imports that could not be matched to another section type. - - prefix(github.com/pulumi/) # Custom section: groups all imports with the github.com/pulumi/ prefix. - - prefix(github.com/pulumi/pulumi-dockerbuild/) # Custom section: local imports - custom-order: true - gocritic: - enable-all: true - disabled-checks: - - hugeParam - - importShadow - goheader: - template: |- - Copyright 2024, Pulumi Corporation. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - govet: - enable: - - nilness - # Reject comparisons of reflect.Value with DeepEqual or '=='. - - reflectvaluecompare - # Reject sort.Slice calls with a non-slice argument. - - sortslice - # Detect write to struct/arrays by-value that aren't read again. - - unusedwrite - nakedret: - # Make an issue if func has more lines of code than this setting, and it has naked returns. - # Default: 30 - max-func-lines: 60 - nolintlint: - # Some linter exclusions are added to generated or templated files - # pre-emptively. - # Don't complain about these. - allow-unused: true - -issues: - exclude-use-default: false - exclude-rules: - # Don't warn on unused parameters. - # Parameter names are useful; replacing them with '_' is undesirable. - - linters: [revive] - text: 'unused-parameter: parameter \S+ seems to be unused, consider removing or renaming it as _' - - # staticcheck already has smarter checks for empty blocks. - # revive's empty-block linter has false positives. - # For example, as of writing this, the following is not allowed. - # for foo() { } - - linters: [revive] - text: "empty-block: this block is empty, you can remove it" - - # We *frequently* use the term 'new' in the context of properties - # (new and old properties), - # and we rarely use the 'new' built-in function. - # It's fine to ignore these cases. - - linters: [revive] - text: "redefines-builtin-id: redefinition of the built-in function new" diff --git a/.goreleaser.prerelease.yml b/.goreleaser.prerelease.yml deleted file mode 100644 index ac201ac..0000000 --- a/.goreleaser.prerelease.yml +++ /dev/null @@ -1,38 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -project_name: pulumi-docker-build -builds: -- dir: provider - env: - - CGO_ENABLED=0 - - GO111MODULE=on - goos: - - darwin - - windows - - linux - goarch: - - amd64 - - arm64 - ignore: [] - main: ./cmd/pulumi-resource-docker-build/ - ldflags: - - -X - 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 -archives: -- name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}" - id: archive -snapshot: - name_template: "{{ .Tag }}-SNAPSHOT" -changelog: - skip: true -release: - disable: true -blobs: -- provider: s3 - region: us-west-2 - bucket: get.pulumi.com - folder: releases/plugins/ - ids: - - archive diff --git a/.goreleaser.yml b/.goreleaser.yml deleted file mode 100644 index f7e9d64..0000000 --- a/.goreleaser.yml +++ /dev/null @@ -1,38 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt - -project_name: pulumi-docker-build -builds: -- dir: provider - env: - - CGO_ENABLED=0 - - GO111MODULE=on - goos: - - darwin - - windows - - linux - goarch: - - amd64 - - arm64 - ignore: [] - main: ./cmd/pulumi-resource-docker-build/ - ldflags: - - -X - 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 -archives: -- name_template: "{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}" - id: archive -snapshot: - name_template: "{{ .Tag }}-SNAPSHOT" -changelog: - skip: true -release: - disable: false -blobs: -- provider: s3 - region: us-west-2 - bucket: get.pulumi.com - folder: releases/plugins/ - ids: - - archive diff --git a/.pulumi.version b/.pulumi.version deleted file mode 100644 index 93213a2..0000000 --- a/.pulumi.version +++ /dev/null @@ -1 +0,0 @@ -3.121.0 diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index e8e7420..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -## Unreleased - -### Changed - -- Upgraded buildkit from 0.13.0 to 0.15.0. -- Upgraded buildx from 0.13.1. to 0.16.0. -- Upgraded docker from 26.0.0-rc1 to 27.0.3. -- Fixed an issue where warnings were not displayed correctly. - -## 0.0.3 (2024-05-31) - -### Fixed - -- Fixed the default value for `ACTIONS_CACHE_URL` when using GitHub action caching. (https://github.com/pulumi/pulumi-docker-build/pull/80) -- Fixed Java SDK publishing. (https://github.com/pulumi/pulumi-docker-build/pull/89) -- Fixed a panic that could occur when `context` was omitted. (https://github.com/pulumi/pulumi-docker-build/pull/83) - -### Changed - -- The provider will now wait for new builders to fully boot. - -## 0.0.2 (2024-04-25) - -### Fixed - -- Upgraded pulumi-go-provider to fix a panic during cancellation. - -## 0.0.1 (2024-04-23) - -Initial release. diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md deleted file mode 100644 index 995e13c..0000000 --- a/CODE-OF-CONDUCT.md +++ /dev/null @@ -1,80 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members -* Contribute in a positive and constructive way - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Community Guidelines -* Be clear and stay on topic. Communicating with strangers on the Internet can make it hard to convey or read tone, and sarcasm is frequently misunderstood. Try to use clear language, and think about how the other person will receive it. -* Don’t cross-post the same thing in multiple GitHub Discussion topics or multiple Slack channels. This can make it difficult for people answering your questions and creates "scrollback spam". -* Public discussion is preferred to private. Avoid using Slack DMs for questions, and instead share them in public Slack channels or GitHub Discussion threads. This allows a larger audience to both share their knowledge as well as learn from your question or issue. If you're having a problem, chances are someone else is having a similar problem. Learning in public is a community contribution. -* Minimize notifications to other community members. Avoid tagging other community members in Slack messages or Discussion threads, unless you are replying to something specific. Community members are here to help each other, but are not "on call" for support, and we expect everyone to try to minimize "notification fatigue". If your issue is time-sensitive or critical, use methods like support@pulumi.com instead. - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, GitHub Discussions posts, -and other contributions that are not aligned to this Code of Conduct, or to ban -temporarily or permanently any contributor for other behaviors that they deem -inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces (including the Community Slack -and GitHub Discussions forums) and in public spaces when an individual is representing the -project or its community. Examples of representing a project or community include -using an official project e-mail address, posting via an official social media account, -or acting as an appointed representative at an online or offline event. Representation -of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at code-of-conduct@pulumi.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/Makefile b/Makefile deleted file mode 100644 index e771cf2..0000000 --- a/Makefile +++ /dev/null @@ -1,261 +0,0 @@ -PROJECT_NAME := Pulumi Docker Build Resource Provider - -PACK := docker-build -PACKDIR := sdk -PROJECT := github.com/pulumi/pulumi-docker-build -NODE_MODULE_NAME := @pulumi/docker-build -NUGET_PKG_NAME := Pulumi.DockerBuild - -PROVIDER := pulumi-resource-${PACK} -PROVIDER_PATH := provider -VERSION_PATH := ${PROVIDER_PATH}.Version -SCHEMA_PATH := ${PROVIDER_PATH}/cmd/pulumi-resource-${PACK}/schema.json - -GOPATH := $(shell go env GOPATH) - -WORKING_DIR := $(shell pwd) -EXAMPLES_DIR := ${WORKING_DIR}/examples/yaml -TESTPARALLELISM := 4 - -PULUMI := bin/pulumi -GOGLANGCILINT := bin/golangci-lint - -# Override during CI using `make [TARGET] PROVIDER_VERSION=""` or by setting a PROVIDER_VERSION environment variable -# Local & branch builds will just used this fixed default version unless specified -PROVIDER_VERSION ?= 0.1.0-alpha.0+dev -# Use this normalised version everywhere rather than the raw input to ensure consistency. -VERSION_GENERIC = $(shell pulumictl convert-version --language generic --version "$(PROVIDER_VERSION)") - -export PULUMI_IGNORE_AMBIENT_PLUGINS = true -export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = true - -.PHONY: ensure -ensure:: tidy lint test_provider examples - -.PHONY: tidy -tidy: - go mod tidy - -.PHONY: provider -provider: bin/${PROVIDER} bin/pulumi-gen-${PACK} # Required by CI - -.PHONY: local_generate -local_generate: sdk # Required by CI - -provider_debug:: - (cd provider && go build -o $(WORKING_DIR)/bin/${PROVIDER} -gcflags="all=-N -l" -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION_GENERIC}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER)) - -test_provider:: # Required by CI - go test -short -v -coverprofile="coverage.txt" -coverpkg=./provider/... -timeout 2h -parallel ${TESTPARALLELISM} ./provider/... - -test_examples: install_nodejs_sdk install_dotnet_sdk - go test -short -v -cover -tags=all -timeout 2h -parallel ${TESTPARALLELISM} ./examples/... - -test_all:: test_provider test_examples - -.PHONY: -gen_examples: - -examples: $(shell mkdir -p examples) -examples: sdk examples/yaml examples/go examples/nodejs examples/python examples/dotnet examples/java - -examples/yaml: - rm -rf ${WORKING_DIR}/examples/yaml/app - cp -r ${WORKING_DIR}/examples/app ${WORKING_DIR}/examples/yaml/app - -examples/go: ${PULUMI} bin/${PROVIDER} ${WORKING_DIR}/examples/yaml/Pulumi.yaml - $(call example,go) - @git checkout examples/go/go.mod - -examples/nodejs: ${PULUMI} bin/${PROVIDER} ${WORKING_DIR}/examples/yaml/Pulumi.yaml - $(call example,nodejs) - @git checkout examples/nodejs/package.json - -examples/python: ${PULUMI} bin/${PROVIDER} ${WORKING_DIR}/examples/yaml/Pulumi.yaml - $(call example,python) - @git checkout examples/python/requirements.txt - -examples/dotnet: ${PULUMI} bin/${PROVIDER} ${WORKING_DIR}/examples/yaml/Pulumi.yaml - $(call example,dotnet) - @git checkout examples/dotnet/provider-docker-build.csproj - -examples/java: ${PULUMI} bin/${PROVIDER} ${WORKING_DIR}/examples/yaml/Pulumi.yaml - $(call example,java) - @git checkout examples/java/pom.xml - -${PULUMI}: go.sum - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi/pkg/v3/cmd/pulumi - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi-java/pkg/cmd/pulumi-language-java - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet - GOBIN=${WORKING_DIR}/bin go install github.com/pulumi/pulumi-yaml/cmd/pulumi-converter-yaml - -${GOGLANGCILINT}: go.sum - GOBIN=${WORKING_DIR}/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint - -define pulumi_login - export PULUMI_CONFIG_PASSPHRASE=asdfqwerty1234; \ - pulumi login --local; -endef - -define example - rm -rf ${WORKING_DIR}/examples/$(1) - $(PULUMI) convert \ - --cwd ${WORKING_DIR}/examples/yaml \ - --logtostderr \ - --generate-only \ - --non-interactive \ - --language $(1) \ - --out ${WORKING_DIR}/examples/$(1) - cp -r ${WORKING_DIR}/examples/app ${WORKING_DIR}/examples/$(1)/app - cp ${WORKING_DIR}/examples/yaml/.dockerignore ${WORKING_DIR}/examples/$(1)/.dockerignore -endef - -up:: - $(call pulumi_login) \ - cd ${EXAMPLES_DIR} && \ - pulumi stack init dev && \ - pulumi stack select dev && \ - pulumi config set name dev && \ - pulumi up -y - -down:: - $(call pulumi_login) \ - cd ${EXAMPLES_DIR} && \ - pulumi stack select dev && \ - pulumi destroy -y && \ - pulumi stack rm dev -y - -devcontainer:: - git submodule update --init --recursive .devcontainer - git submodule update --remote --merge .devcontainer - cp -f .devcontainer/devcontainer.json .devcontainer.json - -.PHONY: build -build:: provider sdk/dotnet sdk/go sdk/nodejs sdk/python sdk/java ${SCHEMA_PATH} - -# Required for the codegen action that runs in pulumi/pulumi -only_build:: build - -.PHONY: lint -lint: ${GOGLANGCILINT} - ${GOGLANGCILINT} run --fix -c .golangci.yml - -install:: install_nodejs_sdk install_dotnet_sdk - cp $(WORKING_DIR)/bin/${PROVIDER} ${GOPATH}/bin - - -install_dotnet_sdk:: # Required by CI - rm -rf $(WORKING_DIR)/nuget/$(NUGET_PKG_NAME).*.nupkg - mkdir -p $(WORKING_DIR)/nuget - find . -name '*.nupkg' -print -exec cp -p {} ${WORKING_DIR}/nuget \; - -install_python_sdk:: # Required by CI - -install_go_sdk:: # Required by CI - -install_nodejs_sdk:: # Required by CI - -yarn unlink --cwd $(WORKING_DIR)/sdk/nodejs/bin - yarn link --cwd $(WORKING_DIR)/sdk/nodejs/bin - -.PHONY: codegen -codegen: # Required by CI - -.PHONY: generate_schema -generate_schema: ${SCHEMA_PATH} # Required by CI - -.PHONY: build_go install_go_sdk -generate_go: sdk/go # Required by CI -build_go: # Required by CI - -.PHONY: build_java install_java_sdk -generate_java: sdk/java # Required by CI -build_java: # Required by CI - -.PHONY: build_python install_python_sdk -generate_python: sdk/python # Required by CI -build_python: # Required by CI - -.PHONY: build_nodejs install_nodejs_sdk -generate_nodejs: sdk/nodejs # Required by CI -build_nodejs: # Required by CI - -.PHONY: build_dotnet install_dotnet_sdk -generate_dotnet: sdk/dotnet # Required by CI -build_dotnet: # Required by CI - -${SCHEMA_PATH}: bin/${PROVIDER} - pulumi package get-schema bin/${PROVIDER} | jq 'del(.version)' > $(SCHEMA_PATH) - -bin/${PROVIDER}: $(shell find ./provider -name '*.go') go.mod - (cd provider && go build -o ../bin/${PROVIDER} -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION_GENERIC}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER)) - -bin/pulumi-gen-${PACK}: # Required by CI - touch bin/pulumi-gen-${PACK} - -go.mod: $(shell find . -name '*.go') -go.sum: go.mod - -sdk: $(shell mkdir -p sdk) -sdk: sdk/python sdk/nodejs sdk/java sdk/python sdk/go sdk/dotnet - -# Folders can't be used for up-to-date checks as they will be marked as up-to-date even if the step fails - leading to a broken state. -.PHONY: sdk/* - -sdk/python: TMPDIR := $(shell mktemp -d) -sdk/python: $(PULUMI) bin/${PROVIDER} - rm -rf sdk/python - $(PULUMI) package gen-sdk bin/$(PROVIDER) --language python -o ${TMPDIR} - cp README.md ${TMPDIR}/python/ - cd ${TMPDIR}/python/ && \ - rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \ - python3 -m venv venv && \ - ./venv/bin/python -m pip install build && \ - cd ./bin && \ - ../venv/bin/python -m build . - mv -f ${TMPDIR}/python ${WORKING_DIR}/sdk/. - -sdk/nodejs: TMPDIR := $(shell mktemp -d) -sdk/nodejs: $(PULUMI) bin/${PROVIDER} - rm -rf sdk/nodejs - $(PULUMI) package gen-sdk bin/$(PROVIDER) --language nodejs -o ${TMPDIR} - cp README.md LICENSE ${TMPDIR}/nodejs - cd ${TMPDIR}/nodejs/ && \ - yarn install && \ - yarn run tsc && \ - cp README.md LICENSE package.json yarn.lock bin/ - mv -f ${TMPDIR}/nodejs ${WORKING_DIR}/sdk/. - -sdk/go: TMPDIR := $(shell mktemp -d) -sdk/go: PATH := "$(WORKING_DIR)/bin:$(PATH)" -sdk/go: $(PULUMI) bin/${PROVIDER} - rm -rf sdk/go - PATH=$(PATH) $(PULUMI) package gen-sdk bin/$(PROVIDER) --language go -o ${TMPDIR} - cp go.mod ${TMPDIR}/go/dockerbuild/go.mod - cd ${TMPDIR}/go/dockerbuild && \ - go mod edit -module=github.com/pulumi/pulumi-${PACK}/${PACKDIR}/go/dockerbuild && \ - go mod tidy - mv -f ${TMPDIR}/go ${WORKING_DIR}/sdk/go - -sdk/dotnet: TMPDIR := $(shell mktemp -d) -sdk/dotnet: $(PULUMI) bin/${PROVIDER} - rm -rf sdk/dotnet - $(PULUMI) package gen-sdk bin/${PROVIDER} --language dotnet -o ${TMPDIR} - cd ${TMPDIR}/dotnet/ && \ - echo "$(VERSION_GENERIC)" > version.txt && \ - dotnet build - mv -f ${TMPDIR}/dotnet ${WORKING_DIR}/sdk/. - -sdk/java: PACKAGE_VERSION := $(shell pulumictl convert-version --language generic -v "$(VERSION_GENERIC)") -sdk/java: TMPDIR := $(shell mktemp -d) -sdk/java: $(PULUMI) bin/${PROVIDER} - rm -rf sdk/java - $(PULUMI) package gen-sdk --language java bin/${PROVIDER} -o ${TMPDIR} - cd ${TMPDIR}/java/ && gradle --console=plain build - mv -f ${TMPDIR}/java ${WORKING_DIR}/sdk/. - -docs: $(shell find docs/yaml -type f) $(shell find ./provider/internal/embed -name '*.md') ${SCHEMA_PATH} - go generate docs/generate.go - @touch docs diff --git a/bin/pulumi-language-python-exec b/bin/pulumi-language-python-exec deleted file mode 100755 index 639a536..0000000 --- a/bin/pulumi-language-python-exec +++ /dev/null @@ -1,204 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016-2018, Pulumi Corporation. All rights reserved. - -import argparse -import asyncio -from typing import Optional -import logging -import os -import sys -import traceback -import runpy -from concurrent.futures import ThreadPoolExecutor - -# The user might not have installed Pulumi yet in their environment - provide a high-quality error message in that case. -try: - import pulumi - import pulumi.runtime -except ImportError: - # For whatever reason, sys.stderr.write is not picked up by the engine as a message, but 'print' is. The Python - # langhost automatically flushes stdout and stderr on shutdown, so we don't need to do it here - just trust that - # Python does the sane thing when printing to stderr. - print(traceback.format_exc(), file=sys.stderr) - print(""" -It looks like the Pulumi SDK has not been installed. Have you run pip install? -If you are running in a virtualenv, you must run pip install -r requirements.txt from inside the virtualenv.""", file=sys.stderr) - sys.exit(1) - -# use exit code 32 to signal to the language host that an error message was displayed to the user -PYTHON_PROCESS_EXITED_AFTER_SHOWING_USER_ACTIONABLE_MESSAGE_CODE = 32 - -def get_abs_module_path(mod_path): - path, ext = os.path.splitext(mod_path) - if not ext: - path = os.path.join(path, '__main__') - return os.path.abspath(path) - - -def _get_user_stacktrace(user_program_abspath: str) -> str: - '''grabs the current stacktrace and truncates it to show the only stacks pertaining to a user's program''' - tb = traceback.extract_tb(sys.exc_info()[2]) - - for frame_index, frame in enumerate(tb): - # loop over stack frames until we reach the main program - # then return the traceback truncated to the user's code - cur_module = frame[0] - if get_abs_module_path(user_program_abspath) == get_abs_module_path(cur_module): - # we have detected the start of a user's stack trace - remaining_frames = len(tb)-frame_index - - # include remaining frames from the bottom by negating - return traceback.format_exc(limit=-remaining_frames) - - # we did not detect a __main__ program, return normal traceback - return traceback.format_exc() - -def _set_default_executor(loop, parallelism: Optional[int]): - '''configure this event loop to respect the settings provided.''' - if parallelism is None: - return - parallelism = max(parallelism, 1) - exec = ThreadPoolExecutor(max_workers=parallelism) - loop.set_default_executor(exec) - -if __name__ == "__main__": - # Parse the arguments, program name, and optional arguments. - ap = argparse.ArgumentParser(description='Execute a Pulumi Python program') - ap.add_argument('--project', help='Set the project name') - ap.add_argument('--stack', help='Set the stack name') - ap.add_argument('--parallel', help='Run P resource operations in parallel (default=none)') - ap.add_argument('--dry_run', help='Simulate resource changes, but without making them') - ap.add_argument('--pwd', help='Change the working directory before running the program') - ap.add_argument('--monitor', help='An RPC address for the resource monitor to connect to') - ap.add_argument('--engine', help='An RPC address for the engine to connect to') - ap.add_argument('--tracing', help='A Zipkin-compatible endpoint to send tracing data to') - ap.add_argument('--organization', help='Set the organization name') - ap.add_argument('PROGRAM', help='The Python program to run') - ap.add_argument('ARGS', help='Arguments to pass to the program', nargs='*') - args = ap.parse_args() - - # If any config variables are present, parse and set them, so subsequent accesses are fast. - config_env = pulumi.runtime.get_config_env() - if hasattr(pulumi.runtime, "get_config_secret_keys_env") and hasattr(pulumi.runtime, "set_all_config"): - # If the pulumi SDK has `get_config_secret_keys_env` and `set_all_config`, use them - # to set the config and secret keys. - config_secret_keys_env = pulumi.runtime.get_config_secret_keys_env() - pulumi.runtime.set_all_config(config_env, config_secret_keys_env) - else: - # Otherwise, fallback to setting individual config values. - for k, v in config_env.items(): - pulumi.runtime.set_config(k, v) - - # Configure the runtime so that the user program hooks up to Pulumi as appropriate. - # New versions of pulumi python support setting organization, old versions do not - try: - settings = pulumi.runtime.Settings( - monitor=args.monitor, - engine=args.engine, - project=args.project, - stack=args.stack, - parallel=int(args.parallel), - dry_run=args.dry_run == "true", - organization=args.organization, - ) - except TypeError: - settings = pulumi.runtime.Settings( - monitor=args.monitor, - engine=args.engine, - project=args.project, - stack=args.stack, - parallel=int(args.parallel), - dry_run=args.dry_run == "true" - ) - - pulumi.runtime.configure(settings) - - # Finally, swap in the args, chdir if needed, and run the program as if it had been executed directly. - sys.argv = [args.PROGRAM] + args.ARGS - if args.pwd is not None: - os.chdir(args.pwd) - - successful = False - - try: - # The docs for get_running_loop are somewhat misleading because they state: - # This function can only be called from a coroutine or a callback. However, if the function is - # called from outside a coroutine or callback (the standard case when running `pulumi up`), the function - # raises a RuntimeError as expected and falls through to the exception clause below. - loop = asyncio.get_running_loop() - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - - # Configure the event loop to respect the parallelism value provided as input. - _set_default_executor(loop, settings.parallel) - - # We are (unfortunately) suppressing the log output of asyncio to avoid showing to users some of the bad things we - # do in our programming model. - # - # Fundamentally, Pulumi is a way for users to build asynchronous dataflow graphs that, as their deployments - # progress, resolve naturally and eventually result in the complete resolution of the graph. If one node in the - # graph fails (i.e. a resource fails to create, there's an exception in an apply, etc.), part of the graph remains - # unevaluated at the time that we exit. - # - # asyncio abhors this. It gets very upset if the process terminates without having observed every future that we - # have resolved. If we are terminating abnormally, it is highly likely that we are not going to observe every single - # future that we have created. Furthermore, it's *harmless* to do this - asyncio logs errors because it thinks it - # needs to tell users that they're doing bad things (which, to their credit, they are), but we are doing this - # deliberately. - # - # In order to paper over this for our users, we simply turn off the logger for asyncio. Users won't see any asyncio - # error messages, but if they stick to the Pulumi programming model, they wouldn't be seeing any anyway. - logging.getLogger("asyncio").setLevel(logging.CRITICAL) - exit_code = 1 - try: - # record the location of the user's program to return user tracebacks - user_program_abspath = os.path.abspath(args.PROGRAM) - def run(): - try: - runpy.run_path(args.PROGRAM, run_name='__main__') - except ImportError as e: - def fix_module_file(m: str) -> str: - # Work around python 11 reporting "" rather - # than runpy.__file__ in the traceback. - return runpy.__file__ if m == "" else m - - # detect if the main pulumi python program does not exist - stack_modules = [fix_module_file(f.filename) for f in traceback.extract_tb(e.__traceback__)] - unique_modules = set(module for module in stack_modules) - last_module_name = stack_modules[-1] - - # we identify a missing program error if - # 1. the only modules in the stack trace are - # - `pulumi-language-python-exec` - # - `runpy` - # 2. the last function in the stack trace is in the `runpy` module - if unique_modules == { - __file__, # the language runtime itself - runpy.__file__, - } and last_module_name == runpy.__file__ : - # this error will only be hit when the user provides a directory - # the engine has a check to determine if the `main` file exists and will fail early - - # if a language runtime receives a directory, it's the language's responsibility to determine - # whether the provided directory has a pulumi program - pulumi.log.error(f"unable to find main python program `__main__.py` in `{user_program_abspath}`") - sys.exit(PYTHON_PROCESS_EXITED_AFTER_SHOWING_USER_ACTIONABLE_MESSAGE_CODE) - else: - raise e - - coro = pulumi.runtime.run_in_stack(run) - loop.run_until_complete(coro) - exit_code = 0 - except pulumi.RunError as e: - pulumi.log.error(str(e)) - except Exception: - error_msg = "Program failed with an unhandled exception:\n" + _get_user_stacktrace(user_program_abspath) - pulumi.log.error(error_msg) - exit_code = PYTHON_PROCESS_EXITED_AFTER_SHOWING_USER_ACTIONABLE_MESSAGE_CODE - finally: - loop.close() - sys.stdout.flush() - sys.stderr.flush() - - sys.exit(exit_code) diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 2802c29..0000000 --- a/codecov.yml +++ /dev/null @@ -1,12 +0,0 @@ -comment: - layout: "header, files, footer" - hide_project_coverage: false - -coverage: - status: - project: - default: - informational: true - patch: - default: - informational: true diff --git a/docs/generate.go b/docs/generate.go deleted file mode 100644 index 5901446..0000000 --- a/docs/generate.go +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:generate go run generate.go yaml ../provider/internal/embed - -// Package main ingests a multi-document YAML file and converts it into -// Markdown examples. -package main - -import ( - "fmt" - "io" - "log" - "os" - "os/exec" - "path/filepath" - "strings" - - "gopkg.in/yaml.v3" - - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -func main() { - if len(os.Args) < 3 { - _, _ = fmt.Fprintf(os.Stdout, "Usage: %s \n", os.Args[0]) - os.Exit(1) - } - yamlPath := os.Args[1] - mdPath := os.Args[2] - - if !filepath.IsAbs(yamlPath) { - cwd, err := os.Getwd() - contract.AssertNoErrorf(err, "getting working directory") - yamlPath = filepath.Join(cwd, yamlPath) - } - - if err := os.MkdirAll(mdPath, 0o750); err != nil { - panic(err) - } - fileInfo, err := os.Lstat(mdPath) - if err != nil || !fileInfo.IsDir() { - fmt.Fprintf(os.Stderr, "Expect markdown destination %q to be a directory\n", mdPath) - os.Exit(1) - } - - yamlFiles, err := os.ReadDir(yamlPath) - if err != nil { - panic(err) - } - for _, yamlFile := range yamlFiles { - if err := processYaml(filepath.Join(yamlPath, yamlFile.Name()), mdPath); err != nil { - log.Fatal(fmt.Errorf("processing %q: %w", yamlFile.Name(), err)) - } - } -} - -func markdownExamples(examples []string) string { - s := "{{% examples %}}\n## Example Usage\n" - for _, example := range examples { - s += example - } - s += "{{% /examples %}}" - return s -} - -func markdownExample(description string, - typescript string, - python string, - csharp string, - golang string, - yaml string, - java string, -) string { - return fmt.Sprintf("{{%% example %%}}\n### %s\n\n"+ - "```typescript\n%s```\n"+ - "```python\n%s```\n"+ - "```csharp\n%s```\n"+ - "```go\n%s```\n"+ - "```yaml\n%s```\n"+ - "```java\n%s```\n"+ - "{{%% /example %%}}\n", - description, typescript, python, csharp, golang, yaml, java) -} - -func convert(language, tempDir, programFile string) (string, error) { - exampleDir := filepath.Join(tempDir, "example"+language) - //nolint:gosec // No user-provided input. - cmd := exec.Command( - "pulumi", - "convert", - "--language", - language, - "--out", - filepath.Clean(filepath.Join(tempDir, exampleDir)), - "--generate-only", - ) - - cmd.Stderr = os.Stderr - cmd.Stdout = os.Stdout - cmd.Dir = tempDir - if err := cmd.Run(); err != nil { - return "", fmt.Errorf("converting: %w", err) - } - content, err := os.ReadFile(filepath.Clean(filepath.Join(tempDir, exampleDir, programFile))) - if err != nil { - return "", fmt.Errorf("reading: %w", err) - } - - return string(content), nil -} - -func processYaml(path, mdDir string) error { - yamlFile, err := os.Open(filepath.Clean(path)) - if err != nil { - return err - } - - base := filepath.Base(path) - md := strings.NewReplacer(".yaml", ".md", ".yml", ".md").Replace(base) - - defer contract.IgnoreClose(yamlFile) - decoder := yaml.NewDecoder(yamlFile) - exampleStrings := []string{} - for { - keepGoing, err := func() (bool, error) { - example := map[string]interface{}{} - err := decoder.Decode(&example) - if err == io.EOF { - return false, nil - } - - description, ok := example["description"].(string) - if !ok { - description = "" - } - dir, err := os.MkdirTemp("", "") - if err != nil { - return false, err - } - - defer func() { - contract.IgnoreError(os.RemoveAll(dir)) - }() - - src, err := os.OpenFile(filepath.Clean(filepath.Join(dir, "Pulumi.yaml")), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600) - if err != nil { - return false, err - } - - fmt.Println("Converting:", example) - - if err := yaml.NewEncoder(src).Encode(example); err != nil { - return false, err - } - contract.AssertNoErrorf(src.Close(), "closing") - - typescript, err := convert("typescript", dir, "index.ts") - if err != nil { - return false, err - } - python, err := convert("python", dir, "__main__.py") - if err != nil { - return false, err - } - csharp, err := convert("csharp", dir, "Program.cs") - if err != nil { - return false, err - } - golang, err := convert("go", dir, "main.go") - if err != nil { - return false, err - } - java, err := convert("java", dir, "src/main/java/generated_program/App.java") - if err != nil { - return false, err - } - - yamlContent, err := os.ReadFile(filepath.Clean(filepath.Join(dir, "Pulumi.yaml"))) - if err != nil { - return false, err - } - yaml := string(yamlContent) - - exampleStrings = append(exampleStrings, markdownExample(description, typescript, python, csharp, golang, yaml, java)) - - return true, nil - }() - if err != nil { - return err - } - if !keepGoing { - break - } - } - _, _ = fmt.Fprintf(os.Stdout, "Writing %s\n", filepath.Join(mdDir, md)) - f, err := os.OpenFile(filepath.Clean(filepath.Join(mdDir, md)), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600) - if err != nil { - return err - } - defer contract.IgnoreClose(f) - _, err = f.WriteString(markdownExamples(exampleStrings)) - contract.AssertNoErrorf(err, "writing examples") - return nil -} diff --git a/docs/yaml/image-examples.yaml b/docs/yaml/image-examples.yaml deleted file mode 100644 index bed715e..0000000 --- a/docs/yaml/image-examples.yaml +++ /dev/null @@ -1,190 +0,0 @@ -name: ecr -description: Push to AWS ECR with caching -outputs: - ref: ${my-image.ref} -resources: - ecr-repository: - type: aws:ecr:Repository - my-image: - type: docker-build:Image - properties: - tags: - - ${ecr-repository.repositoryUrl}:latest - push: true - context: - location: ./app - cacheFrom: - - registry: - ref: ${ecr-repository.repositoryUrl}:cache - cacheTo: - - registry: - ref: ${ecr-repository.repositoryUrl}:cache - imageManifest: true - ociMediaTypes: true - registries: - - username: ${auth-token.userName} - password: ${auth-token.password} - address: ${ecr-repository.repositoryUrl} -runtime: yaml -variables: - auth-token: - fn::aws:ecr:getAuthorizationToken: - registryId: ${ecr-repository.registryId} ---- -name: multi-platform -runtime: yaml -description: Multi-platform image -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - platforms: - - plan9/amd64 - - plan9/386 - push: false ---- -name: registry -runtime: yaml -description: Registry export -resources: - image: - type: docker-build:Image - properties: - tags: - - "docker.io/pulumi/pulumi:3.107.0" - context: - location: "app" - push: true - registries: - - address: docker.io - username: pulumibot - password: ${dockerHubPassword} -outputs: - ref: ${my-image.ref} ---- -name: caching -runtime: yaml -description: Caching -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - cacheTo: - - local: - dest: tmp/cache - mode: max - cacheFrom: - - local: - src: tmp/cache - push: false ---- -name: dbc -runtime: yaml -description: Docker Build Cloud -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - exec: true - builder: - name: cloud-builder-name - push: false ---- -name: build-args -runtime: yaml -description: Build arguments -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - buildArgs: - SET_ME_TO_TRUE: "true" - push: false ---- -name: build-target -runtime: yaml -description: Build target -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - target: "build-me" - push: false ---- -name: named-contexts -runtime: yaml -description: Named contexts -resources: - image: - type: docker-build:Image - properties: - context: - location: app - named: - "golang:latest": - location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984" - push: false ---- -name: remote-context -runtime: yaml -description: Remote context -resources: - image: - type: docker-build:Image - properties: - context: - location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile" - push: false - ---- -name: inline -runtime: yaml -description: Inline Dockerfile -resources: - image: - type: docker-build:Image - properties: - dockerfile: - inline: | - FROM busybox - COPY hello.c ./ - context: - location: "app" - push: false ---- -name: remote-context -runtime: yaml -description: Remote context -resources: - image: - type: docker-build:Image - properties: - dockerfile: - location: app/Dockerfile - context: - location: "https://github.com/docker-library/hello-world.git" - push: false ---- -name: docker-load -runtime: yaml -description: Local export -resources: - image: - type: docker-build:Image - properties: - context: - location: "app" - exports: - - docker: - tar: true - push: false diff --git a/docs/yaml/index-examples.yaml b/docs/yaml/index-examples.yaml deleted file mode 100644 index 079ea91..0000000 --- a/docs/yaml/index-examples.yaml +++ /dev/null @@ -1,48 +0,0 @@ -name: registry-caching -description: Multi-platform registry caching -runtime: yaml -resources: - arm64: - type: docker-build:Image - properties: - context: - location: "app" - platforms: - - linux/arm64 - tags: - - "docker.io/pulumi/pulumi:3.107.0-arm64" - cacheTo: - - registry: - ref: "docker.io/pulumi/pulumi:cache-arm64" - mode: max - cacheFrom: - - registry: - ref: "docker.io/pulumi/pulumi:cache-arm64" - - amd64: - type: docker-build:Image - properties: - context: - location: "app" - platforms: - - linux/amd64 - tags: - - "docker.io/pulumi/pulumi:3.107.0-amd64" - cacheTo: - - registry: - ref: "docker.io/pulumi/pulumi:cache-amd64" - mode: max - cacheFrom: - - registry: - ref: "docker.io/pulumi/pulumi:cache-amd64" - - index: - type: docker-build:Index - properties: - tag: "docker.io/pulumi/pulumi:3.107.0" - sources: - - ${amd64.ref} - - ${arm64.ref} - -outputs: - ref: ${index.ref} diff --git a/examples/app/Dockerfile b/examples/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/app/Dockerfile.buildArgs b/examples/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/app/Dockerfile.emptyContext b/examples/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/app/Dockerfile.extraHosts b/examples/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/app/Dockerfile.multiPlatform b/examples/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/app/Dockerfile.namedContexts b/examples/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/app/Dockerfile.secrets b/examples/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/app/Dockerfile.sshMount b/examples/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/app/Dockerfile.target b/examples/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/dotnet/.dockerignore b/examples/dotnet/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/dotnet/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/dotnet/.gitignore b/examples/dotnet/.gitignore deleted file mode 100644 index e645270..0000000 --- a/examples/dotnet/.gitignore +++ /dev/null @@ -1,353 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ diff --git a/examples/dotnet/Program.cs b/examples/dotnet/Program.cs deleted file mode 100644 index 7c2c74d..0000000 --- a/examples/dotnet/Program.cs +++ /dev/null @@ -1,268 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var config = new Config(); - var dockerHubPassword = config.Require("dockerHubPassword"); - var multiPlatform = new DockerBuild.Image("multiPlatform", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.multiPlatform", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Platforms = new[] - { - DockerBuild.Platform.Plan9_amd64, - DockerBuild.Platform.Plan9_386, - }, - }); - - var registryPush = new DockerBuild.Image("registryPush", new() - { - Push = false, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Tags = new[] - { - "docker.io/pulumibot/buildkit-e2e:example", - }, - Exports = new[] - { - new DockerBuild.Inputs.ExportArgs - { - Registry = new DockerBuild.Inputs.ExportRegistryArgs - { - OciMediaTypes = true, - Push = false, - }, - }, - }, - Registries = new[] - { - new DockerBuild.Inputs.RegistryArgs - { - Address = "docker.io", - Username = "pulumibot", - Password = dockerHubPassword, - }, - }, - }); - - var cached = new DockerBuild.Image("cached", new() - { - Push = false, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - CacheTo = new[] - { - new DockerBuild.Inputs.CacheToArgs - { - Local = new DockerBuild.Inputs.CacheToLocalArgs - { - Dest = "tmp/cache", - Mode = DockerBuild.CacheMode.Max, - }, - }, - }, - CacheFrom = new[] - { - new DockerBuild.Inputs.CacheFromArgs - { - Local = new DockerBuild.Inputs.CacheFromLocalArgs - { - Src = "tmp/cache", - }, - }, - }, - }); - - var buildArgs = new DockerBuild.Image("buildArgs", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.buildArgs", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - BuildArgs = - { - { "SET_ME_TO_TRUE", "true" }, - }, - }); - - var extraHosts = new DockerBuild.Image("extraHosts", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.extraHosts", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - AddHosts = new[] - { - "metadata.google.internal:169.254.169.254", - }, - }); - - var sshMount = new DockerBuild.Image("sshMount", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.sshMount", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Ssh = new[] - { - new DockerBuild.Inputs.SSHArgs - { - Id = "default", - }, - }, - }); - - var secrets = new DockerBuild.Image("secrets", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.secrets", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Secrets = - { - { "password", "hunter2" }, - }, - }); - - var labels = new DockerBuild.Image("labels", new() - { - Push = false, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Labels = - { - { "description", "This image will get a descriptive label 👍" }, - }, - }); - - var target = new DockerBuild.Image("target", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.target", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Target = "build-me", - }); - - var namedContexts = new DockerBuild.Image("namedContexts", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "./app/Dockerfile.namedContexts", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - Named = - { - { "golang:latest", new DockerBuild.Inputs.ContextArgs - { - Location = "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - } }, - }, - }, - }); - - var remoteContext = new DockerBuild.Image("remoteContext", new() - { - Push = false, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }, - }); - - var remoteContextWithInline = new DockerBuild.Image("remoteContextWithInline", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Inline = @"FROM busybox -COPY hello.c ./ -", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "https://github.com/docker-library/hello-world.git", - }, - }); - - var inline = new DockerBuild.Image("inline", new() - { - Push = false, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Inline = @"FROM alpine -RUN echo ""This uses an inline Dockerfile! 👍"" -", - }, - }); - - var dockerLoad = new DockerBuild.Image("dockerLoad", new() - { - Push = false, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Exports = new[] - { - new DockerBuild.Inputs.ExportArgs - { - Docker = new DockerBuild.Inputs.ExportDockerArgs - { - Tar = true, - }, - }, - }, - }); - - return new Dictionary - { - ["platforms"] = multiPlatform.Platforms, - }; -}); - diff --git a/examples/dotnet/Pulumi.yaml b/examples/dotnet/Pulumi.yaml deleted file mode 100644 index 96724a2..0000000 --- a/examples/dotnet/Pulumi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: provider-docker-build -runtime: dotnet -config: - dockerHubPassword: - type: string - secret: true -plugins: - providers: - - name: docker-build - path: ../../bin diff --git a/examples/dotnet/app/Dockerfile b/examples/dotnet/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/dotnet/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/dotnet/app/Dockerfile.buildArgs b/examples/dotnet/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/dotnet/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/dotnet/app/Dockerfile.emptyContext b/examples/dotnet/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/dotnet/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/dotnet/app/Dockerfile.extraHosts b/examples/dotnet/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/dotnet/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/dotnet/app/Dockerfile.multiPlatform b/examples/dotnet/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/dotnet/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/dotnet/app/Dockerfile.namedContexts b/examples/dotnet/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/dotnet/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/dotnet/app/Dockerfile.secrets b/examples/dotnet/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/dotnet/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/dotnet/app/Dockerfile.sshMount b/examples/dotnet/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/dotnet/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/dotnet/app/Dockerfile.target b/examples/dotnet/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/dotnet/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/dotnet/provider-docker-build.csproj b/examples/dotnet/provider-docker-build.csproj deleted file mode 100644 index 3bf11fd..0000000 --- a/examples/dotnet/provider-docker-build.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - net6.0 - enable - - - - - - - - \ No newline at end of file diff --git a/examples/dotnet_test.go b/examples/dotnet_test.go deleted file mode 100644 index 130ba24..0000000 --- a/examples/dotnet_test.go +++ /dev/null @@ -1,39 +0,0 @@ -//go:build dotnet || all -// +build dotnet all - -package examples - -import ( - "os" - "os/exec" - "path" - "path/filepath" - "testing" - - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/require" -) - -func TestDotNetExample(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - nuget := filepath.Join(cwd, "../nuget") - t.Setenv("PULUMI_LOCAL_NUGET", nuget) - - cmd := exec.Command("dotnet", "nuget", "add", "source", nuget) - _ = cmd.Run() - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "dotnet"), - Dependencies: []string{ - "Pulumi.DockerBuild", - }, - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - NoParallel: true, - } - - integration.ProgramTest(t, &test) -} diff --git a/examples/go/.dockerignore b/examples/go/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/go/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/go/Pulumi.yaml b/examples/go/Pulumi.yaml deleted file mode 100644 index cdca90a..0000000 --- a/examples/go/Pulumi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: provider-docker-build -runtime: go -config: - dockerHubPassword: - type: string - secret: true -plugins: - providers: - - name: docker-build - path: ../../bin diff --git a/examples/go/app/Dockerfile b/examples/go/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/go/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/go/app/Dockerfile.buildArgs b/examples/go/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/go/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/go/app/Dockerfile.emptyContext b/examples/go/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/go/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/go/app/Dockerfile.extraHosts b/examples/go/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/go/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/go/app/Dockerfile.multiPlatform b/examples/go/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/go/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/go/app/Dockerfile.namedContexts b/examples/go/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/go/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/go/app/Dockerfile.secrets b/examples/go/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/go/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/go/app/Dockerfile.sshMount b/examples/go/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/go/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/go/app/Dockerfile.target b/examples/go/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/go/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/go/go.mod b/examples/go/go.mod deleted file mode 100644 index 1249628..0000000 --- a/examples/go/go.mod +++ /dev/null @@ -1,95 +0,0 @@ -module provider-docker-build - -go 1.21.7 - -toolchain go1.21.9 - -require ( - github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild v0.0.0-20240425180359-26c144c916b7 - github.com/pulumi/pulumi/sdk/v3 v3.122.0 -) - -require ( - dario.cat/mergo v1.0.0 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect - github.com/agext/levenshtein v1.2.3 // indirect - github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/atotto/clipboard v0.1.4 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/blang/semver v3.5.1+incompatible // indirect - github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.25.0 // indirect - github.com/charmbracelet/lipgloss v0.7.1 // indirect - github.com/cheggaaa/pb v1.0.29 // indirect - github.com/cloudflare/circl v1.3.7 // indirect - github.com/containerd/console v1.0.4 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/djherbis/times v1.5.0 // indirect - github.com/emirpasic/gods v1.18.1 // indirect - github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-git/go-git/v5 v5.12.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/hcl/v2 v2.19.1 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mitchellh/go-ps v1.0.0 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect - github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.2 // indirect - github.com/opentracing/basictracer-go v1.1.0 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pgavlin/fx v0.1.6 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pkg/term v1.1.0 // indirect - github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.9.1 // indirect - github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect - github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/texttheater/golang-levenshtein v1.0.1 // indirect - github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect - github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect - github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/zclconf/go-cty v1.14.1 // indirect - go.uber.org/atomic v1.10.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/tools v0.22.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240311173647-c811ad7063a7 // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - lukechampine.com/frand v1.4.2 // indirect -) diff --git a/examples/go/go.sum b/examples/go/go.sum deleted file mode 100644 index 2af0b23..0000000 --- a/examples/go/go.sum +++ /dev/null @@ -1,319 +0,0 @@ -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= -github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= -github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= -github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= -github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= -github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= -github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= -github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= -github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= -github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= -github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= -github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= -github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= -github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= -github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= -github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= -github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= -github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= -github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= -github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= -github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= -github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= -github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= -github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= -github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= -github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= -github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= -github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= -github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild v0.0.0-20240425180359-26c144c916b7 h1:elp7Ar01zvIJtRQv+megjeGSfpxxzPYyKBGfDDtWFBA= -github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild v0.0.0-20240425180359-26c144c916b7/go.mod h1:48lEA1mq2tRC4SfASAJmLYG1hRWM5sP5VPFeoZEM54U= -github.com/pulumi/pulumi/sdk/v3 v3.122.0 h1:rW/RJ1GRelCi/5VY1+7ppqeF0AblWyjyjgNffqw4dc4= -github.com/pulumi/pulumi/sdk/v3 v3.122.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= -github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= -github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= -github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= -github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= -github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= -github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= -github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= -github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311173647-c811ad7063a7 h1:8EeVk1VKMD+GD/neyEHGmz7pFblqPjHoi+PGQIlLx2s= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311173647-c811ad7063a7/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= -lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/examples/go/main.go b/examples/go/main.go deleted file mode 100644 index 54e4979..0000000 --- a/examples/go/main.go +++ /dev/null @@ -1,233 +0,0 @@ -package main - -import ( - "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/config" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - cfg := config.New(ctx, "") - dockerHubPassword := cfg.Require("dockerHubPassword") - multiPlatform, err := dockerbuild.NewImage(ctx, "multiPlatform", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.multiPlatform"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Platforms: dockerbuild.PlatformArray{ - dockerbuild.Platform_Plan9_amd64, - dockerbuild.Platform_Plan9_386, - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "registryPush", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Tags: pulumi.StringArray{ - pulumi.String("docker.io/pulumibot/buildkit-e2e:example"), - }, - Exports: dockerbuild.ExportArray{ - &dockerbuild.ExportArgs{ - Registry: &dockerbuild.ExportRegistryArgs{ - OciMediaTypes: pulumi.Bool(true), - Push: pulumi.Bool(false), - }, - }, - }, - Registries: dockerbuild.RegistryArray{ - &dockerbuild.RegistryArgs{ - Address: pulumi.String("docker.io"), - Username: pulumi.String("pulumibot"), - Password: pulumi.String(dockerHubPassword), - }, - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "cached", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - CacheTo: dockerbuild.CacheToArray{ - &dockerbuild.CacheToArgs{ - Local: &dockerbuild.CacheToLocalArgs{ - Dest: pulumi.String("tmp/cache"), - Mode: dockerbuild.CacheModeMax, - }, - }, - }, - CacheFrom: dockerbuild.CacheFromArray{ - &dockerbuild.CacheFromArgs{ - Local: &dockerbuild.CacheFromLocalArgs{ - Src: pulumi.String("tmp/cache"), - }, - }, - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "buildArgs", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.buildArgs"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - BuildArgs: pulumi.StringMap{ - "SET_ME_TO_TRUE": pulumi.String("true"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "extraHosts", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.extraHosts"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - AddHosts: pulumi.StringArray{ - pulumi.String("metadata.google.internal:169.254.169.254"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "sshMount", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.sshMount"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Ssh: dockerbuild.SSHArray{ - &dockerbuild.SSHArgs{ - Id: pulumi.String("default"), - }, - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "secrets", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.secrets"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Secrets: pulumi.StringMap{ - "password": pulumi.String("hunter2"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "labels", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Labels: pulumi.StringMap{ - "description": pulumi.String("This image will get a descriptive label 👍"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "target", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.target"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Target: pulumi.String("build-me"), - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "namedContexts", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("./app/Dockerfile.namedContexts"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - Named: dockerbuild.ContextMap{ - "golang:latest": &dockerbuild.ContextArgs{ - Location: pulumi.String("docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"), - }, - }, - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "remoteContext", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "remoteContextWithInline", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("https://github.com/docker-library/hello-world.git"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "inline", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Dockerfile: &dockerbuild.DockerfileArgs{ - Inline: pulumi.String("FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"), - }, - }) - if err != nil { - return err - } - _, err = dockerbuild.NewImage(ctx, "dockerLoad", &dockerbuild.ImageArgs{ - Push: pulumi.Bool(false), - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Exports: dockerbuild.ExportArray{ - &dockerbuild.ExportArgs{ - Docker: &dockerbuild.ExportDockerArgs{ - Tar: pulumi.Bool(true), - }, - }, - }, - }) - if err != nil { - return err - } - ctx.Export("platforms", multiPlatform.Platforms) - return nil - }) -} diff --git a/examples/go_test.go b/examples/go_test.go deleted file mode 100644 index 95588b5..0000000 --- a/examples/go_test.go +++ /dev/null @@ -1,30 +0,0 @@ -//go:build go || all -// +build go all - -package examples - -import ( - "os" - "path" - "testing" - - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/require" -) - -func TestGoExample(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "go"), - Dependencies: []string{ - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild=../sdk/go/dockerbuild", - }, - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - integration.ProgramTest(t, &test) -} diff --git a/examples/java/.dockerignore b/examples/java/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/java/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/java/Pulumi.yaml b/examples/java/Pulumi.yaml deleted file mode 100644 index 50cac76..0000000 --- a/examples/java/Pulumi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: provider-docker-build -runtime: java -config: - dockerHubPassword: - type: string - secret: true -plugins: - providers: - - name: docker-build - path: ../../bin diff --git a/examples/java/app/Dockerfile b/examples/java/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/java/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/java/app/Dockerfile.buildArgs b/examples/java/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/java/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/java/app/Dockerfile.emptyContext b/examples/java/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/java/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/java/app/Dockerfile.extraHosts b/examples/java/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/java/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/java/app/Dockerfile.multiPlatform b/examples/java/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/java/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/java/app/Dockerfile.namedContexts b/examples/java/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/java/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/java/app/Dockerfile.secrets b/examples/java/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/java/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/java/app/Dockerfile.sshMount b/examples/java/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/java/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/java/app/Dockerfile.target b/examples/java/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/java/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/java/pom.xml b/examples/java/pom.xml deleted file mode 100644 index b32d9ca..0000000 --- a/examples/java/pom.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 4.0.0 - - com.pulumi - provider-docker-build - 1.0-SNAPSHOT - - - UTF-8 - 11 - 11 - 11 - generated_program.App - - - - - - com.pulumi - pulumi - (,1.0] - - - com.pulumi - docker-build - [0.0.0,) - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.2 - - - - true - ${mainClass} - - - - - - org.apache.maven.plugins - maven-assembly-plugin - 3.4.2 - - - - true - ${mainClass} - - - - jar-with-dependencies - - - - - make-my-jar-with-dependencies - package - - single - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - ${mainClass} - ${mainArgs} - - - - org.apache.maven.plugins - maven-wrapper-plugin - 3.1.1 - - 3.8.5 - - - - - diff --git a/examples/java/src/main/java/generated_program/App.java b/examples/java/src/main/java/generated_program/App.java deleted file mode 100644 index 709cfaf..0000000 --- a/examples/java/src/main/java/generated_program/App.java +++ /dev/null @@ -1,204 +0,0 @@ -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.DockerfileArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.ExportArgs; -import com.pulumi.dockerbuild.inputs.ExportRegistryArgs; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import com.pulumi.dockerbuild.inputs.CacheToArgs; -import com.pulumi.dockerbuild.inputs.CacheToLocalArgs; -import com.pulumi.dockerbuild.inputs.CacheFromArgs; -import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs; -import com.pulumi.dockerbuild.inputs.SSHArgs; -import com.pulumi.dockerbuild.inputs.ExportDockerArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - final var config = ctx.config(); - final var dockerHubPassword = config.get("dockerHubPassword"); - var multiPlatform = new Image("multiPlatform", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.multiPlatform") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .platforms( - "plan9/amd64", - "plan9/386") - .build()); - - var registryPush = new Image("registryPush", ImageArgs.builder() - .push(false) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .tags("docker.io/pulumibot/buildkit-e2e:example") - .exports(ExportArgs.builder() - .registry(ExportRegistryArgs.builder() - .ociMediaTypes(true) - .push(false) - .build()) - .build()) - .registries(RegistryArgs.builder() - .address("docker.io") - .username("pulumibot") - .password(dockerHubPassword) - .build()) - .build()); - - var cached = new Image("cached", ImageArgs.builder() - .push(false) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .cacheTo(CacheToArgs.builder() - .local(CacheToLocalArgs.builder() - .dest("tmp/cache") - .mode("max") - .build()) - .build()) - .cacheFrom(CacheFromArgs.builder() - .local(CacheFromLocalArgs.builder() - .src("tmp/cache") - .build()) - .build()) - .build()); - - var buildArgs = new Image("buildArgs", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.buildArgs") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .buildArgs(Map.of("SET_ME_TO_TRUE", "true")) - .build()); - - var extraHosts = new Image("extraHosts", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.extraHosts") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .addHosts("metadata.google.internal:169.254.169.254") - .build()); - - var sshMount = new Image("sshMount", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.sshMount") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .ssh(SSHArgs.builder() - .id("default") - .build()) - .build()); - - var secrets = new Image("secrets", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.secrets") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .secrets(Map.of("password", "hunter2")) - .build()); - - var labels = new Image("labels", ImageArgs.builder() - .push(false) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .labels(Map.of("description", "This image will get a descriptive label 👍")) - .build()); - - var target = new Image("target", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.target") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .target("build-me") - .build()); - - var namedContexts = new Image("namedContexts", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .location("./app/Dockerfile.namedContexts") - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .named(Map.of("golang:latest", Map.of("location", "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"))) - .build()) - .build()); - - var remoteContext = new Image("remoteContext", ImageArgs.builder() - .push(false) - .context(BuildContextArgs.builder() - .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile") - .build()) - .build()); - - var remoteContextWithInline = new Image("remoteContextWithInline", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .inline(""" -FROM busybox -COPY hello.c ./ - """) - .build()) - .context(BuildContextArgs.builder() - .location("https://github.com/docker-library/hello-world.git") - .build()) - .build()); - - var inline = new Image("inline", ImageArgs.builder() - .push(false) - .dockerfile(DockerfileArgs.builder() - .inline(""" -FROM alpine -RUN echo "This uses an inline Dockerfile! 👍" - """) - .build()) - .build()); - - var dockerLoad = new Image("dockerLoad", ImageArgs.builder() - .push(false) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .exports(ExportArgs.builder() - .docker(ExportDockerArgs.builder() - .tar(true) - .build()) - .build()) - .build()); - - ctx.export("platforms", multiPlatform.platforms()); - } -} diff --git a/examples/java_test.go b/examples/java_test.go deleted file mode 100644 index 70ff785..0000000 --- a/examples/java_test.go +++ /dev/null @@ -1,29 +0,0 @@ -//go:build java || all -// +build java all - -package examples - -import ( - "os" - "path" - "testing" - - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/require" -) - -func TestJavaExample(t *testing.T) { - t.Skip("not working yet") - - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "java"), - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - integration.ProgramTest(t, &test) -} diff --git a/examples/main_test.go b/examples/main_test.go deleted file mode 100644 index 9d2cec4..0000000 --- a/examples/main_test.go +++ /dev/null @@ -1,61 +0,0 @@ -package examples - -import ( - "crypto/rsa" - "errors" - "io" - "math/rand" - "net" - "os" - "path/filepath" - "testing" - - "golang.org/x/crypto/ssh/agent" -) - -func TestMain(m *testing.M) { - sock := sshagent() - os.Setenv("SSH_AUTH_SOCK", sock) - - os.Exit(m.Run()) -} - -// sshagent crates an in-memory SSH agent with one identity. -func sshagent() string { - dir, err := os.MkdirTemp(os.TempDir(), "docker-test-*") - if err != nil { - panic(err) - } - - sock := filepath.Join(dir, "test.sock") - - l, err := net.Listen("unix", sock) - if err != nil { - panic(err) - } - - a := agent.NewKeyring() - //nolint:gosec - key, err := rsa.GenerateKey(rand.New(rand.NewSource(42)), 2048) - if err != nil { - panic(err) - } - err = a.Add(agent.AddedKey{PrivateKey: key}) - if err != nil { - panic(err) - } - - go func() { - for { - conn, err := l.Accept() - if err != nil { - panic(err) - } - if err := agent.ServeAgent(a, conn); err != nil && !errors.Is(err, io.EOF) { - panic(err) - } - } - }() - - return sock -} diff --git a/examples/nodejs/.dockerignore b/examples/nodejs/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/nodejs/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/nodejs/.gitignore b/examples/nodejs/.gitignore deleted file mode 100644 index dc902b5..0000000 --- a/examples/nodejs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/bin/ -/node_modules/ \ No newline at end of file diff --git a/examples/nodejs/Pulumi.yaml b/examples/nodejs/Pulumi.yaml deleted file mode 100644 index 8317291..0000000 --- a/examples/nodejs/Pulumi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: provider-docker-build -runtime: nodejs -config: - dockerHubPassword: - type: string - secret: true -plugins: - providers: - - name: docker-build - path: ../../bin diff --git a/examples/nodejs/app/Dockerfile b/examples/nodejs/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/nodejs/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/nodejs/app/Dockerfile.buildArgs b/examples/nodejs/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/nodejs/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/nodejs/app/Dockerfile.emptyContext b/examples/nodejs/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/nodejs/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/nodejs/app/Dockerfile.extraHosts b/examples/nodejs/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/nodejs/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/nodejs/app/Dockerfile.multiPlatform b/examples/nodejs/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/nodejs/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/nodejs/app/Dockerfile.namedContexts b/examples/nodejs/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/nodejs/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/nodejs/app/Dockerfile.secrets b/examples/nodejs/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/nodejs/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/nodejs/app/Dockerfile.sshMount b/examples/nodejs/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/nodejs/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/nodejs/app/Dockerfile.target b/examples/nodejs/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/nodejs/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/nodejs/index.ts b/examples/nodejs/index.ts deleted file mode 100644 index c5cdfbe..0000000 --- a/examples/nodejs/index.ts +++ /dev/null @@ -1,169 +0,0 @@ -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const config = new pulumi.Config(); -const dockerHubPassword = config.require("dockerHubPassword"); -const multiPlatform = new docker_build.Image("multiPlatform", { - push: false, - dockerfile: { - location: "./app/Dockerfile.multiPlatform", - }, - context: { - location: "./app", - }, - platforms: [ - docker_build.Platform.Plan9_amd64, - docker_build.Platform.Plan9_386, - ], -}); -const registryPush = new docker_build.Image("registryPush", { - push: false, - context: { - location: "./app", - }, - tags: ["docker.io/pulumibot/buildkit-e2e:example"], - exports: [{ - registry: { - ociMediaTypes: true, - push: false, - }, - }], - registries: [{ - address: "docker.io", - username: "pulumibot", - password: dockerHubPassword, - }], -}); -const cached = new docker_build.Image("cached", { - push: false, - context: { - location: "./app", - }, - cacheTo: [{ - local: { - dest: "tmp/cache", - mode: docker_build.CacheMode.Max, - }, - }], - cacheFrom: [{ - local: { - src: "tmp/cache", - }, - }], -}); -const buildArgs = new docker_build.Image("buildArgs", { - push: false, - dockerfile: { - location: "./app/Dockerfile.buildArgs", - }, - context: { - location: "./app", - }, - buildArgs: { - SET_ME_TO_TRUE: "true", - }, -}); -const extraHosts = new docker_build.Image("extraHosts", { - push: false, - dockerfile: { - location: "./app/Dockerfile.extraHosts", - }, - context: { - location: "./app", - }, - addHosts: ["metadata.google.internal:169.254.169.254"], -}); -const sshMount = new docker_build.Image("sshMount", { - push: false, - dockerfile: { - location: "./app/Dockerfile.sshMount", - }, - context: { - location: "./app", - }, - ssh: [{ - id: "default", - }], -}); -const secrets = new docker_build.Image("secrets", { - push: false, - dockerfile: { - location: "./app/Dockerfile.secrets", - }, - context: { - location: "./app", - }, - secrets: { - password: "hunter2", - }, -}); -const labels = new docker_build.Image("labels", { - push: false, - context: { - location: "./app", - }, - labels: { - description: "This image will get a descriptive label 👍", - }, -}); -const target = new docker_build.Image("target", { - push: false, - dockerfile: { - location: "./app/Dockerfile.target", - }, - context: { - location: "./app", - }, - target: "build-me", -}); -const namedContexts = new docker_build.Image("namedContexts", { - push: false, - dockerfile: { - location: "./app/Dockerfile.namedContexts", - }, - context: { - location: "./app", - named: { - "golang:latest": { - location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - }, - }, - }, -}); -const remoteContext = new docker_build.Image("remoteContext", { - push: false, - context: { - location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }, -}); -const remoteContextWithInline = new docker_build.Image("remoteContextWithInline", { - push: false, - dockerfile: { - inline: `FROM busybox -COPY hello.c ./ -`, - }, - context: { - location: "https://github.com/docker-library/hello-world.git", - }, -}); -const inline = new docker_build.Image("inline", { - push: false, - dockerfile: { - inline: `FROM alpine -RUN echo "This uses an inline Dockerfile! 👍" -`, - }, -}); -const dockerLoad = new docker_build.Image("dockerLoad", { - push: false, - context: { - location: "./app", - }, - exports: [{ - docker: { - tar: true, - }, - }], -}); -export const platforms = multiPlatform.platforms; diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json deleted file mode 100644 index 32f47f1..0000000 --- a/examples/nodejs/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "provider-docker-build", - "devDependencies": { - "@types/node": "^18" - }, - "dependencies": { - "typescript": "^4.0.0", - "@pulumi/pulumi": "^3.0.0" - } -} diff --git a/examples/nodejs/tsconfig.json b/examples/nodejs/tsconfig.json deleted file mode 100644 index 11fc69a..0000000 --- a/examples/nodejs/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "outDir": "bin", - "target": "es2016", - "module": "commonjs", - "moduleResolution": "node", - "sourceMap": true, - "experimentalDecorators": true, - "pretty": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "forceConsistentCasingInFileNames": true - }, - "files": [ - "index.ts", - ] -} \ No newline at end of file diff --git a/examples/nodejs_test.go b/examples/nodejs_test.go deleted file mode 100644 index 85be4f9..0000000 --- a/examples/nodejs_test.go +++ /dev/null @@ -1,213 +0,0 @@ -//go:build nodejs || all -// +build nodejs all - -package examples - -import ( - "encoding/base64" - "fmt" - "math/rand" - "os" - "path" - "strings" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/ecr" - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestNodeExample(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "nodejs"), - Dependencies: []string{"@pulumi/docker-build"}, - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - integration.ProgramTest(t, &test) -} - -// TestCaching simulates a slow build with --cache-to enabled. We aren't able -// to directly detect cache hits, so we re-run the update and confirm it took -// less time than the image originally took to build. -// -// This is a moderately slow test because we need to "build" (i.e., sleep) -// longer than it would take for cache layer uploads under slow network -// conditions. -func TestCaching(t *testing.T) { - t.Parallel() - - sleep := 20.0 // seconds - - // Provision ECR outside of our stack, because the cache needs to be shared - // across updates. - ecr, ecrOK := tmpEcr(t) - - cwd, err := os.Getwd() - require.NoError(t, err) - - localCache := t.TempDir() - - tests := []struct { - name string - skip bool - - cacheTo string - cacheFrom string - address string - username string - password string - }{ - { - name: "local", - cacheTo: fmt.Sprintf("type=local,mode=max,oci-mediatypes=true,dest=%s", localCache), - cacheFrom: fmt.Sprintf("type=local,src=%s", localCache), - }, - { - name: "gha", - skip: os.Getenv("ACTIONS_CACHE_URL") == "", - cacheTo: "type=gha,mode=max,scope=cache-test", - cacheFrom: "type=gha,scope=cache-test", - }, - { - name: "dockerhub", - skip: os.Getenv("DOCKER_HUB_PASSWORD") == "", - cacheTo: "type=registry,mode=max,ref=docker.io/pulumibot/myapp:cache", - cacheFrom: "type=registry,ref=docker.io/pulumibot/myapp:cache", - address: "docker.io", - username: "pulumibot", - password: os.Getenv("DOCKER_HUB_PASSWORD"), - }, - { - name: "ecr", - skip: !ecrOK, - cacheTo: fmt.Sprintf("type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=%s:cache", ecr.address), - cacheFrom: fmt.Sprintf("type=registry,ref=%s:cache", ecr.address), - address: ecr.address, - username: ecr.username, - password: ecr.password, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - if tt.skip { - t.Skip("Missing environment variables") - } - - sleepFuzzed := sleep + rand.Float64() // Add some fuzz to bust any prior build caches. - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "tests", "caching"), - ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) { - duration, ok := stack.Outputs["durationSeconds"] - assert.True(t, ok) - assert.Greater(t, duration.(float64), sleepFuzzed) - }, - Dependencies: []string{"@pulumi/docker-build"}, - Config: map[string]string{ - "SLEEP_SECONDS": fmt.Sprint(sleepFuzzed), - "cacheTo": tt.cacheTo, - "cacheFrom": tt.cacheFrom, - "name": tt.name, - "address": tt.address, - "username": tt.username, - }, - Secrets: map[string]string{ - "password": tt.password, - }, - NoParallel: true, - Quick: true, - SkipPreview: true, - SkipRefresh: true, - Verbose: true, - } - - // First run should be un-cached. - integration.ProgramTest(t, &test) - - // Now run again and confirm our build was faster due to a cache hit. - test.ExtraRuntimeValidation = func(t *testing.T, stack integration.RuntimeValidationStackInfo) { - duration, ok := stack.Outputs["durationSeconds"] - assert.True(t, ok) - assert.Less(t, duration.(float64), sleepFuzzed) - } - test.Config["name"] += "-cached" - integration.ProgramTest(t, &test) - }) - } -} - -type ECR struct { - address string - username string - password string -} - -// tmpEcr creates a new ECR repo and cleans it up after the test concludes. -func tmpEcr(t *testing.T) (ECR, bool) { - sess, err := session.NewSession(&aws.Config{ - Region: aws.String("us-west-2"), - }) - if err != nil { - return ECR{}, false - } - - svc := ecr.New(sess) - name := strings.ToLower(t.Name()) + fmt.Sprint(rand.Intn(1000)) - - // Always attempt to delete pre-existing repos, in case our cleanup didn't - // run. - _, _ = svc.DeleteRepository(&ecr.DeleteRepositoryInput{ - Force: aws.Bool(true), - RepositoryName: aws.String(name), - }) - - params := &ecr.CreateRepositoryInput{ - RepositoryName: aws.String(name), - } - resp, err := svc.CreateRepository(params) - if err != nil { - return ECR{}, false - } - repo := resp.Repository - t.Cleanup(func() { - svc.DeleteRepository(&ecr.DeleteRepositoryInput{ - Force: aws.Bool(true), - RegistryId: repo.RegistryId, - RepositoryName: repo.RepositoryName, - }) - }) - - // Now grab auth for the repo. - auth, err := svc.GetAuthorizationToken(&ecr.GetAuthorizationTokenInput{}) - if err != nil { - return ECR{}, false - } - b64token := auth.AuthorizationData[0].AuthorizationToken - token, err := base64.StdEncoding.DecodeString(*b64token) - if err != nil { - return ECR{}, false - } - parts := strings.SplitN(string(token), ":", 2) - if len(parts) != 2 { - return ECR{}, false - } - username := parts[0] - password := parts[1] - - return ECR{ - address: *repo.RepositoryUri, - username: username, - password: password, - }, true -} diff --git a/examples/python/.dockerignore b/examples/python/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/python/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/python/.gitignore b/examples/python/.gitignore deleted file mode 100644 index b664ab4..0000000 --- a/examples/python/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -venv/ \ No newline at end of file diff --git a/examples/python/Pulumi.yaml b/examples/python/Pulumi.yaml deleted file mode 100644 index 44da823..0000000 --- a/examples/python/Pulumi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: provider-docker-build -runtime: python -config: - dockerHubPassword: - type: string - secret: true -plugins: - providers: - - name: docker-build - path: ../../bin diff --git a/examples/python/__main__.py b/examples/python/__main__.py deleted file mode 100644 index e09d474..0000000 --- a/examples/python/__main__.py +++ /dev/null @@ -1,155 +0,0 @@ -import pulumi -import pulumi_docker_build as docker_build - -config = pulumi.Config() -docker_hub_password = config.require("dockerHubPassword") -multi_platform = docker_build.Image("multiPlatform", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.multiPlatform", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - platforms=[ - docker_build.Platform.PLAN9_AMD64, - docker_build.Platform.PLAN9_386, - ]) -registry_push = docker_build.Image("registryPush", - push=False, - context=docker_build.BuildContextArgs( - location="./app", - ), - tags=["docker.io/pulumibot/buildkit-e2e:example"], - exports=[docker_build.ExportArgs( - registry=docker_build.ExportRegistryArgs( - oci_media_types=True, - push=False, - ), - )], - registries=[docker_build.RegistryArgs( - address="docker.io", - username="pulumibot", - password=docker_hub_password, - )]) -cached = docker_build.Image("cached", - push=False, - context=docker_build.BuildContextArgs( - location="./app", - ), - cache_to=[docker_build.CacheToArgs( - local=docker_build.CacheToLocalArgs( - dest="tmp/cache", - mode=docker_build.CacheMode.MAX, - ), - )], - cache_from=[docker_build.CacheFromArgs( - local=docker_build.CacheFromLocalArgs( - src="tmp/cache", - ), - )]) -build_args = docker_build.Image("buildArgs", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.buildArgs", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - build_args={ - "SET_ME_TO_TRUE": "true", - }) -extra_hosts = docker_build.Image("extraHosts", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.extraHosts", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - add_hosts=["metadata.google.internal:169.254.169.254"]) -ssh_mount = docker_build.Image("sshMount", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.sshMount", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - ssh=[docker_build.SSHArgs( - id="default", - )]) -secrets = docker_build.Image("secrets", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.secrets", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - secrets={ - "password": "hunter2", - }) -labels = docker_build.Image("labels", - push=False, - context=docker_build.BuildContextArgs( - location="./app", - ), - labels={ - "description": "This image will get a descriptive label 👍", - }) -target = docker_build.Image("target", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.target", - ), - context=docker_build.BuildContextArgs( - location="./app", - ), - target="build-me") -named_contexts = docker_build.Image("namedContexts", - push=False, - dockerfile=docker_build.DockerfileArgs( - location="./app/Dockerfile.namedContexts", - ), - context=docker_build.BuildContextArgs( - location="./app", - named={ - "golang:latest": docker_build.ContextArgs( - location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - ), - }, - )) -remote_context = docker_build.Image("remoteContext", - 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", - push=False, - dockerfile=docker_build.DockerfileArgs( - inline="""FROM busybox -COPY hello.c ./ -""", - ), - context=docker_build.BuildContextArgs( - location="https://github.com/docker-library/hello-world.git", - )) -inline = docker_build.Image("inline", - push=False, - dockerfile=docker_build.DockerfileArgs( - inline="""FROM alpine -RUN echo "This uses an inline Dockerfile! 👍" -""", - )) -docker_load = docker_build.Image("dockerLoad", - push=False, - context=docker_build.BuildContextArgs( - location="./app", - ), - exports=[docker_build.ExportArgs( - docker=docker_build.ExportDockerArgs( - tar=True, - ), - )]) -pulumi.export("platforms", multi_platform.platforms) diff --git a/examples/python/app/Dockerfile b/examples/python/app/Dockerfile deleted file mode 100644 index e17a80c..0000000 --- a/examples/python/app/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo 👍 diff --git a/examples/python/app/Dockerfile.buildArgs b/examples/python/app/Dockerfile.buildArgs deleted file mode 100644 index 438ee01..0000000 --- a/examples/python/app/Dockerfile.buildArgs +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -ARG SET_ME_TO_TRUE -RUN [ "$SET_ME_TO_TRUE" = "true" ] -RUN echo "That's the correct build arg, thanks! 👍" diff --git a/examples/python/app/Dockerfile.emptyContext b/examples/python/app/Dockerfile.emptyContext deleted file mode 100644 index 769593b..0000000 --- a/examples/python/app/Dockerfile.emptyContext +++ /dev/null @@ -1,2 +0,0 @@ -FROM alpine -RUN echo "This image doesn't use any local files, so it doesn't need a context parameter 👍" diff --git a/examples/python/app/Dockerfile.extraHosts b/examples/python/app/Dockerfile.extraHosts deleted file mode 100644 index 35b15f4..0000000 --- a/examples/python/app/Dockerfile.extraHosts +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash AS base - -RUN getent hosts metadata.google.internal diff --git a/examples/python/app/Dockerfile.multiPlatform b/examples/python/app/Dockerfile.multiPlatform deleted file mode 100644 index 49d3c83..0000000 --- a/examples/python/app/Dockerfile.multiPlatform +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM alpine as build -RUN echo ${BUILDPLATFORM} > buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/python/app/Dockerfile.namedContexts b/examples/python/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/python/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/python/app/Dockerfile.secrets b/examples/python/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/python/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/python/app/Dockerfile.sshMount b/examples/python/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/python/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/python/app/Dockerfile.target b/examples/python/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/python/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/python/requirements.txt b/examples/python/requirements.txt deleted file mode 100644 index bc4e430..0000000 --- a/examples/python/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pulumi>=3.0.0,<4.0.0 diff --git a/examples/python_test.go b/examples/python_test.go deleted file mode 100644 index 0ff6310..0000000 --- a/examples/python_test.go +++ /dev/null @@ -1,31 +0,0 @@ -//go:build python || all -// +build python all - -package examples - -import ( - "os" - "path" - "testing" - - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/require" -) - -func TestPythonExample(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "python"), - RelativeWorkDir: ".", - Dependencies: []string{ - path.Join("..", "sdk", "python", "bin"), - }, - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - integration.ProgramTest(t, &test) -} diff --git a/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/grpc.json b/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/grpc.json deleted file mode 100644 index 9d8a6b3..0000000 --- a/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/grpc.json +++ /dev/null @@ -1,238 +0,0 @@ -{"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-7b788721-304961874","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","object":{}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.1.0-alpha.0+dev"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"randomSeed":"dU9nGeHtuY5WJ07dmNJzuNfMNpu5YSkT+/iPf7hkJzc="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"XqJMo5Kt3kgFUbYiaE63S5h/JCUlRMuJatK4VKfDrZ0="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"COiEoFhH0tso6trAyR79dggykuPUuPdTDAb6rWLJEQM="},"response":{"inputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"randomSeed":"Gqcahy0DgifH8J5t9K+BsxwiB9uRMFuQ9oxvjypJIrA="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"randomSeed":"ytb+Wil0bAmvXPONadCFP+parr+foknm4DcS15rd5TQ="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"randomSeed":"PFor5hNxbNZQWonQLqkMofHhhnLaeCB6cOsQRA+ERzs="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"tpi4T6Kip+uy6rCR8k8/KdxSWALhFFxqK9wksnJCfmc="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"EBui8rdz/fz1NIUztJAk3k7Gc7+P2IfXASoakd6FA5M="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"RgX3qPiWKOVCgLcmZp4QUOyvFoaaVoUTWViRXjhfQUI="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"randomSeed":"+4AO29jRRRBb0gRp6MN5nVp6YFhhPNwi4oIUcwZjG2I="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"randomSeed":"o2Y/gjI4Jjn48JgGbW4AaWzJu3zB0C/rDgZsCM5kGw0="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"3aunMbWswKRz30w9y7n2H24Cb3i4dFlOAYwcfR9w/54="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"randomSeed":"zxXPBnfcEhgGkfYNKxuYMPGYTwEqZ2SaLarIx/NrHCM="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"randomSeed":"xZ7r1luOcYPTziWVg+rNAXWWVXmvNOAI4PwDkoogo4c="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"remoteContext","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"propertyDependencies":{"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"namedContexts","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"labels","properties":{"buildOnPreview":true,"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,"network":"default","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":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"propertyDependencies":{"context":{},"labels":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::target","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"},"preview":true},"response":{"id":"target","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::inline","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"inline","properties":{"buildOnPreview":true,"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,"network":"default","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":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::secrets","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"preview":true},"response":{"id":"secrets","properties":{"buildOnPreview":true,"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,"network":"default","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":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"preview":true},"response":{"id":"sshMount","properties":{"buildOnPreview":true,"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,"network":"default","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.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::cached","properties":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"cached","properties":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"remoteContextWithInline","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"preview":true},"response":{"id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","properties":{"buildOnPreview":true,"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":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","properties":{"buildOnPreview":true,"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":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"propertyDependencies":{"context":{},"exports":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"preview":true},"response":{"id":"multiPlatform","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.LanguageRuntime/Run","request":{"project":"provider-docker-build","stack":"p-it-bryces-wor-upgrade-7b788721","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","program":".","dryRun":true,"parallel":40,"monitorAddress":"127.0.0.1:60047","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721-304961874","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","object":{}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.1.0-alpha.0+dev"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"randomSeed":"FZMNXsuPFd7JqA7qMlAHnlCtWr2gKRa/ITgO7YohD44="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"randomSeed":"DUB/i+Z/ucGQ+TVUulrwieB9dd8t+TOcUyfgnQQmjCc="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"yxyIE0C4phiPUhheFV41Xg1bX+8wcbIgy3qyFjIVW6g="},"response":{"inputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"eCBsJYwXwQDSSi4y7QcY/kdPKJPnu4JoKM38UlRyxHU="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"lNZQwWiX/qkTcLuNbUILnoM2tjPSdIVM/PrqJIvnv18="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"randomSeed":"zIa33eziRhsfR2RO7eY2ktEEvUgnnD8XfRzV2G+UM5Y="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"randomSeed":"STIHwB3iA+/8qMHjWIZkI5wjyplfH8wQzHdFF5W3i+E="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"cDBwoi3YKtq7Zt4kIUwM+ZbCCHWdVMfnZdFNt7qnd7w="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"Wi7wbKDyh7iNjdEvKOj1CZHpGlDhKMzknP7A+bhlriM="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"randomSeed":"W+iS+Se45ETk6+abc4er+KlaA4TAH9irkx9Hkw/cm6U="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","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-7b788721::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"},"push":false},"randomSeed":"AiHGTww74Oht+dh8O8CojODnFHYGgPTbUPZLsbAM9jU="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"randomSeed":"1TlDiLt9Hldo6+7mqn8es7MX1hSx48Che3nECuQ/2ms="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"randomSeed":"T55G55cr/92u/6J7gzFOx0M7YFQdga0z0m6t1fnJLFQ="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"randomSeed":"AJuyQw5wBse3pjxJmvz7Dh6y2vlMeUD1DCH4ZrM3tMw="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::secrets","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""}},"response":{"id":"secrets","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::sshMount","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""}},"response":{"id":"sshMount","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"remoteContext","properties":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{"id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"labels","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::inline","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"inline","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::target","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"}},"response":{"id":"target","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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":"secrets","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"buildArgs","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"sshMount","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"propertyDependencies":{"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"registryPush","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::cached","properties":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"cached","properties":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"propertyDependencies":{"context":{},"exports":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"labels","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"propertyDependencies":{"context":{},"labels":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"inline","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"target","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"cached","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""}},"response":{"id":"multiPlatform","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"remoteContextWithInline","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Create","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"response":{"id":"namedContexts","properties":{"buildOnPreview":true,"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,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"buildOnPreview":true,"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,"network":"default","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-7b788721","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","program":".","parallel":40,"monitorAddress":"127.0.0.1:60086","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721-304961874","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","object":{}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.1.0-alpha.0+dev"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::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-7b788721::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-7b788721::provider-docker-build::docker-build:index:Image::cached","olds":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"randomSeed":"ZWskN3jlqBMv6tmMC3iYcp72JlJi3BaynABwfJvItf0="},"response":{"inputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::cached","olds":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"randomSeed":"w2fMu6b3i00ragSVGWmvIDtQcSnrc+tjouVOX94MOjs="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"randomSeed":"byZBE5Pr6wsJm1uCqGA7Y7/ONw/2rlV3aRk7xWWLEo8="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"propertyDependencies":{"context":{},"exports":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"randomSeed":"p8FBq6krg4I7hAUYM4neg5YNRa3tWVakQOHYfF6vFN4="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::inline","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"randomSeed":"G7n7xhvbi62QRvCJna5KrofLnmMIZ/vGJAdrCW/Rtrk="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::inline","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"randomSeed":"0p/EMi8wX7/oogSrdOLh7212T5s3xiJg8LTvx472XvE="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"propertyDependencies":{"context":{},"labels":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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"],"push":false},"randomSeed":"/PtiUljglYok1d9FeJAyPeK5pqQgJHX7UDdo0iN6eh4="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"2MLryJXUSCtyYEay5UqLHXK2NmAO7gqFArJoR94yqxQ="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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"},"push":false},"randomSeed":"jwjqrWoEo9bkNxg+c/bGkujinMxk9u6H6kXZz609seE="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"namedContexts","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"randomSeed":"CaplRfMxjiQCr1PCFJaqI/RWqzglzoESxXZfrdbwAt4="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"propertyDependencies":{"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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"},"push":false},"randomSeed":"xNAphsB4aznduk89CDvOVS8w52uf7APLGilnNvFeW4M="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"randomSeed":"2pWR2Fya+kqsX+fiRZsCijKKNyM4Vg7cV+zWbvgYd40="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"randomSeed":"p3KkWQOMacJB3Xx3iA9xzZNVbq4cisgeBDusyc7Dd5M="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"randomSeed":"NtYD6OUq2twAADxlS7q6b/RtDapKb1B5Ho88CrkTvRg="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","program":".","dryRun":true,"parallel":40,"monitorAddress":"127.0.0.1:60111","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721-304961874","program":".","info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","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-7b788721","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","object":{}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.1.0-alpha.0+dev"},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::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-7b788721::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-7b788721::provider-docker-build::docker-build:index:Image::cached","olds":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"randomSeed":"YlPwz+irKxTn1onICMkOdP6qPuH2AjQyDdO2UwPged4="},"response":{"inputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::cached","olds":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"cacheFrom":[{"local":{"src":"tmp/cache"}}],"cacheTo":[{"local":{"dest":"tmp/cache","mode":"max"}}],"context":{"location":"./app"},"push":false},"propertyDependencies":{"cacheFrom":{},"cacheTo":{},"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::cached","id":"cached","object":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"randomSeed":"ZD8yxSVnJPTrHTTgkkjj/8omgT2p16ynkABPukmQF0Q="},"response":{"inputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","olds":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.buildArgs"},"push":false},"propertyDependencies":{"buildArgs":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","id":"buildArgs","object":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"randomSeed":"aAbPxtKNUA8gxPyARhZulNHP/6Vt4M7Olim0RngACqE="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""}},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Diff","request":{"id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"docker":{"tar":true}}],"push":false},"propertyDependencies":{"context":{},"exports":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","id":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"randomSeed":"e6kvEVUQRH/xdMeQ2DOsyjpKlcF1hsfj3wai8X//zO8="},"response":{"inputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","olds":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"addHosts":["metadata.google.internal:169.254.169.254"],"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.extraHosts"},"push":false},"propertyDependencies":{"addHosts":{},"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","id":"extraHosts","object":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::inline","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"randomSeed":"LzbI6Hzqd7u7gGJKzIw6YQcc6lQ6rqQB4pNq0sPYz64="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::inline","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::inline","id":"inline","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"randomSeed":"jYHvYFLcKQWdJpSasE1PwlWilrWqfx1pK3DeAUgjPj4="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::labels","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"labels":{"description":"This image will get a descriptive label 👍"},"push":false},"propertyDependencies":{"context":{},"labels":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::labels","id":"labels","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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"],"push":false},"randomSeed":"uASdht9PbZ7eqA+irTXzT70A8/vLkMDvDz6p37ID7pU="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.multiPlatform"},"platforms":["plan9/amd64","plan9/386"],"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"platforms":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","id":"multiPlatform","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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"},"push":false},"randomSeed":"DQmtLvsL7o7CYPZQipV/1LT+i944Ar572mKkVF4OAfY="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","olds":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"inline":"","location":"./app/Dockerfile.namedContexts"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app","named":{"golang:latest":{"location":"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"}}},"dockerfile":{"location":"./app/Dockerfile.namedContexts"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","id":"namedContexts","object":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"randomSeed":"tDOnnOAQPWITFZ3C5q5muS3yfoAwGPVRAljRVmRtqi8="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"exports":[{"registry":{"ociMediaTypes":true,"push":false}}],"push":false,"tags":["docker.io/pulumibot/buildkit-e2e:example"]},"propertyDependencies":{"context":{},"exports":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::registryPush","id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"news":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"randomSeed":"o6ZbqfPdKuSOgWB7HF3l28QX3vGlQSMjgidCJtKpxMg="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","olds":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","outputs":{"platforms":["plan9/amd64","plan9/386"]}},"response":{},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"type":"docker-build:index:Image","name":"remoteContext","parent":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"push":false},"propertyDependencies":{"context":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","id":"remoteContext","object":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"randomSeed":"/5/ksFewBQi7wRXAj4xuv2CKJTcW5ZUbz4+rgjKE3jA="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::secrets","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"secrets":{"password":"hunter2"},"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.secrets"},"push":false,"secrets":{"password":"hunter2"}},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::secrets","id":"secrets","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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"},"push":false},"randomSeed":"9ii22+m87HW/Fzxigp7uU8ogSpzUmAVh45+GLFjdOnA="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","olds":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"news":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n","location":""},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"https://github.com/docker-library/hello-world.git"},"dockerfile":{"inline":"FROM busybox\nCOPY hello.c ./\n"},"push":false},"propertyDependencies":{"context":{},"dockerfile":{},"push":{}},"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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","id":"remoteContextWithInline","object":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"metadata":{"mode":"server"}} -{"method":"/pulumirpc.ResourceProvider/Check","request":{"urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"randomSeed":"8yg7waJ1blvyXo8K0C0jflHueD+JoAov302Lp3iZkbg="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ssh":[{"id":"default"}],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.sshMount"},"push":false,"ssh":[{"id":"default"}]},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","id":"sshMount","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"},"news":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"randomSeed":"oRDdZiTWGCmPPp/DLBko63qKWS9ZN6FjERsvBlkkbX4="},"response":{"inputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::docker-build:index:Image::target","olds":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"news":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"target":"build-me"},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721","custom":true,"object":{"context":{"location":"./app"},"dockerfile":{"location":"./app/Dockerfile.target"},"push":false,"target":"build-me"},"propertyDependencies":{"context":{},"dockerfile":{},"push":{},"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-7b788721::provider-docker-build::docker-build:index:Image::target","id":"target","object":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","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-7b788721","pwd":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","program":".","parallel":40,"monitorAddress":"127.0.0.1:60131","organization":"organization","configPropertyMap":{},"info":{"rootDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","programDirectory":"/private/var/folders/kq/zdlx0fn57yl66gxktcyzylv40000gn/T/p-it-bryces-wor-upgrade-7b788721-304961874","entryPoint":".","options":{}}},"response":{},"metadata":{"kind":"language","mode":"client","runtime":"yaml"}} -{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"0.1.0-alpha.0+dev"},"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:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"docker":{"compression":"gzip","compressionLevel":0,"dest":"","forceCompression":false,"ociMediaTypes":false,"tar":true},"raw":""}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline","properties":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::extraHosts","properties":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"addHosts":["metadata.google.internal:169.254.169.254"],"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.extraHosts"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::target","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.target"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":"build-me"}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"secrets","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::secrets","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.secrets"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","secrets":{"password":"hunter2"},"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-7b788721::provider-docker-build::docker-build:index:Image::namedContexts","properties":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"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,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::cached","properties":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"cacheFrom":[{"disabled":false,"local":{"digest":"","src":"tmp/cache"},"raw":""}],"cacheTo":[{"disabled":false,"local":{"compression":"gzip","compressionLevel":0,"dest":"tmp/cache","forceCompression":false,"ignoreError":false,"mode":"max"},"raw":""}],"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::sshMount","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.sshMount"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","ssh":[{"id":"default"}],"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-7b788721::provider-docker-build::docker-build:index:Image::inline","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec","digest":"","dockerfile":{"inline":"FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.multiPlatform"},"exec":false,"load":false,"network":"default","noCache":false,"platforms":["plan9/amd64","plan9/386"],"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::buildArgs","properties":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildArgs":{"SET_ME_TO_TRUE":"true"},"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381","digest":"","dockerfile":{"inline":"","location":"./app/Dockerfile.buildArgs"},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"labels","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"labels":{"description":"This image will get a descriptive label 👍"},"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","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-7b788721::provider-docker-build::docker-build:index:Image::remoteContext","properties":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"},"contextHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","digest":"","dockerfile":{"inline":"","location":""},"exec":false,"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"","target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} -{"method":"/pulumirpc.ResourceProvider/Delete","request":{"id":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","urn":"urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush","properties":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""},"oldInputs":{"buildOnPreview":true,"context":{"location":"./app"},"contextHash":"e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5","digest":"sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","dockerfile":{"inline":"","location":"app/Dockerfile"},"exec":false,"exports":[{"disabled":false,"raw":"","registry":{"compression":"gzip","compressionLevel":0,"danglingNamePrefix":"","forceCompression":false,"ociMediaTypes":true,"push":false,"store":true}}],"load":false,"network":"default","noCache":false,"pull":false,"push":false,"ref":"docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a","tags":["docker.io/pulumibot/buildkit-e2e:example"],"target":""}},"response":{},"metadata":{"kind":"resource","mode":"client","name":"docker-build"}} diff --git a/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/state.json b/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/state.json deleted file mode 100755 index 6d38aff..0000000 --- a/examples/testdata/recorded/TestProviderUpgrade/upgrade/0.0.1/state.json +++ /dev/null @@ -1,944 +0,0 @@ -{ - "version": 3, - "deployment": { - "manifest": { - "time": "2024-06-18T15:10:50.439881-07:00", - "magic": "", - "version": "" - }, - "secrets_providers": { - "type": "passphrase", - "state": { - "salt": "v1:uRYnzeN15MA=:v1:rpAZ+oxUTuiNyCpF:KQmWj5xMhsTrE2XhW35Gd1XoMW7RDg==" - } - }, - "resources": [ - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "custom": false, - "type": "pulumi:pulumi:Stack", - "outputs": { - "platforms": [ - "plan9/amd64", - "plan9/386" - ] - }, - "created": "2024-06-18T22:10:48.091797Z", - "modified": "2024-06-18T22:10:48.091797Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default", - "custom": true, - "id": "b62bb809-b83b-42cb-889c-46d524de5fe7", - "type": "pulumi:providers:docker-build", - "inputs": { - "host": "" - }, - "outputs": { - "host": "" - }, - "created": "2024-06-18T22:10:48.187658Z", - "modified": "2024-06-18T22:10:48.187658Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::secrets", - "custom": true, - "id": "secrets", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.secrets" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "secrets": { - "password": "hunter2" - }, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "5c1561571a60aa3b5a234a9c26f69e2ba5d9a18624f426109d36a1d729b23a21", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.secrets" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "secrets": { - "password": "hunter2" - }, - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [], - "secrets": [] - }, - "created": "2024-06-18T22:10:50.181453Z", - "modified": "2024-06-18T22:10:50.181453Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::buildArgs", - "custom": true, - "id": "buildArgs", - "type": "docker-build:index:Image", - "inputs": { - "buildArgs": { - "SET_ME_TO_TRUE": "true" - }, - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.buildArgs" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildArgs": { - "SET_ME_TO_TRUE": "true" - }, - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "55695ddcfb4d08a0d78d1a74c7b0141dada73ed05bc4b056ba29a51e42c83381", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.buildArgs" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "buildArgs": [], - "context": [], - "dockerfile": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.182348Z", - "modified": "2024-06-18T22:10:50.182348Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::sshMount", - "custom": true, - "id": "sshMount", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.sshMount" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ssh": [ - { - "id": "default" - } - ], - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "71d21b382ab9ee0324ad820ce57a0a4318342a0a244931f51fc46b791f1b37e9", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.sshMount" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "ssh": [ - { - "id": "default" - } - ], - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [], - "ssh": [] - }, - "created": "2024-06-18T22:10:50.182807Z", - "modified": "2024-06-18T22:10:50.182807Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContext", - "custom": true, - "id": "remoteContext", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile" - }, - "dockerfile": { - "inline": "", - "location": "" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile" - }, - "contextHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "digest": "", - "dockerfile": { - "inline": "", - "location": "" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.18341Z", - "modified": "2024-06-18T22:10:50.18341Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::registryPush", - "custom": true, - "id": "sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "exports": [ - { - "disabled": false, - "raw": "", - "registry": { - "compression": "gzip", - "compressionLevel": 0, - "danglingNamePrefix": "", - "forceCompression": false, - "ociMediaTypes": true, - "push": false, - "store": true - } - } - ], - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "tags": [ - "docker.io/pulumibot/buildkit-e2e:example" - ], - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5", - "digest": "sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a", - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "exports": [ - { - "disabled": false, - "raw": "", - "registry": { - "compression": "gzip", - "compressionLevel": 0, - "danglingNamePrefix": "", - "forceCompression": false, - "ociMediaTypes": true, - "push": false, - "store": true - } - } - ], - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "docker.io/pulumibot/buildkit-e2e:example@sha256:0d286c8339e2bc4e166585dcda28a501fb08c8f991c2293209faa78a13bfb79a", - "tags": [ - "docker.io/pulumibot/buildkit-e2e:example" - ], - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "exports": [], - "push": [], - "tags": [] - }, - "created": "2024-06-18T22:10:50.183668Z", - "modified": "2024-06-18T22:10:50.183668Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::dockerLoad", - "custom": true, - "id": "sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "exports": [ - { - "disabled": false, - "docker": { - "compression": "gzip", - "compressionLevel": 0, - "dest": "", - "forceCompression": false, - "ociMediaTypes": false, - "tar": true - }, - "raw": "" - } - ], - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5", - "digest": "sha256:ec5d5c149823f61d56f5666d494d19c4edca42cfe4b578e640f57bf2429716a4", - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "exports": [ - { - "disabled": false, - "docker": { - "compression": "gzip", - "compressionLevel": 0, - "dest": "", - "forceCompression": false, - "ociMediaTypes": false, - "tar": true - }, - "raw": "" - } - ], - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "exports": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.183874Z", - "modified": "2024-06-18T22:10:50.183874Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::labels", - "custom": true, - "id": "labels", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "labels": { - "description": "This image will get a descriptive label 👍" - }, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5", - "digest": "", - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "labels": { - "description": "This image will get a descriptive label 👍" - }, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "labels": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.183996Z", - "modified": "2024-06-18T22:10:50.183996Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::inline", - "custom": true, - "id": "inline", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n", - "location": "" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "36c67969e6700e87bde75fcf604a7db1fa9593194718fc0ae1c498df43228aec", - "digest": "", - "dockerfile": { - "inline": "FROM alpine\nRUN echo \"This uses an inline Dockerfile! 👍\"\n", - "location": "" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.184088Z", - "modified": "2024-06-18T22:10:50.184088Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::target", - "custom": true, - "id": "target", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.target" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "build-me" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "fefadf795b6b4b119e97a87067a25f52a16cc3375223acad7b3f642fdcd413fc", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.target" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "build-me" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [], - "target": [] - }, - "created": "2024-06-18T22:10:50.18426Z", - "modified": "2024-06-18T22:10:50.18426Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::cached", - "custom": true, - "id": "cached", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "cacheFrom": [ - { - "disabled": false, - "local": { - "digest": "", - "src": "tmp/cache" - }, - "raw": "" - } - ], - "cacheTo": [ - { - "disabled": false, - "local": { - "compression": "gzip", - "compressionLevel": 0, - "dest": "tmp/cache", - "forceCompression": false, - "ignoreError": false, - "mode": "max" - }, - "raw": "" - } - ], - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "cacheFrom": [ - { - "disabled": false, - "local": { - "digest": "", - "src": "tmp/cache" - }, - "raw": "" - } - ], - "cacheTo": [ - { - "disabled": false, - "local": { - "compression": "gzip", - "compressionLevel": 0, - "dest": "tmp/cache", - "forceCompression": false, - "ignoreError": false, - "mode": "max" - }, - "raw": "" - } - ], - "context": { - "location": "./app" - }, - "contextHash": "e569495ad1cfde07d0e769ab9b5ed56b889508f299d2e7a90400caf9e12795d5", - "digest": "", - "dockerfile": { - "inline": "", - "location": "app/Dockerfile" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "cacheFrom": [], - "cacheTo": [], - "context": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.206842Z", - "modified": "2024-06-18T22:10:50.206842Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::multiPlatform", - "custom": true, - "id": "multiPlatform", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.multiPlatform" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "platforms": [ - "plan9/amd64", - "plan9/386" - ], - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "c7ecf546ed2402de04f2dfa56ca4adb6fd490eed4219d7f1b2e559cd475f1755", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.multiPlatform" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "platforms": [ - "plan9/amd64", - "plan9/386" - ], - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "platforms": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.257528Z", - "modified": "2024-06-18T22:10:50.257528Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::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" - ], - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.extraHosts" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "addHosts": [ - "metadata.google.internal:169.254.169.254" - ], - "buildOnPreview": true, - "context": { - "location": "./app" - }, - "contextHash": "e5d510d9ce39d91260e3aa7f8c81d7517a76165eb35e7134cae2f3e4e9fcb712", - "digest": "", - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.extraHosts" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "addHosts": [], - "context": [], - "dockerfile": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.274264Z", - "modified": "2024-06-18T22:10:50.274264Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::remoteContextWithInline", - "custom": true, - "id": "remoteContextWithInline", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "https://github.com/docker-library/hello-world.git" - }, - "dockerfile": { - "inline": "FROM busybox\nCOPY hello.c ./\n", - "location": "" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "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, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.332506Z", - "modified": "2024-06-18T22:10:50.332506Z" - }, - { - "urn": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::docker-build:index:Image::namedContexts", - "custom": true, - "id": "namedContexts", - "type": "docker-build:index:Image", - "inputs": { - "buildOnPreview": true, - "context": { - "location": "./app", - "named": { - "golang:latest": { - "location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984" - } - } - }, - "dockerfile": { - "inline": "", - "location": "./app/Dockerfile.namedContexts" - }, - "exec": false, - "load": false, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "target": "" - }, - "outputs": { - "buildOnPreview": true, - "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, - "network": "default", - "noCache": false, - "pull": false, - "push": false, - "ref": "", - "target": "" - }, - "parent": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:pulumi:Stack::provider-docker-build-p-it-bryces-wor-upgrade-7b788721", - "provider": "urn:pulumi:p-it-bryces-wor-upgrade-7b788721::provider-docker-build::pulumi:providers:docker-build::default::b62bb809-b83b-42cb-889c-46d524de5fe7", - "propertyDependencies": { - "context": [], - "dockerfile": [], - "push": [] - }, - "created": "2024-06-18T22:10:50.422524Z", - "modified": "2024-06-18T22:10:50.422524Z" - } - ] - } -} diff --git a/examples/tests/caching/Dockerfile b/examples/tests/caching/Dockerfile deleted file mode 100644 index a48c983..0000000 --- a/examples/tests/caching/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM --platform=$BUILDPLATFORM golang:1.21.6-alpine3.18 as initial -ARG SLEEP_SECONDS -RUN sleep ${SLEEP_SECONDS} && echo ${SLEEP_SECONDS} > output - -FROM alpine:3.18 as final -COPY --from=initial /go/output output -RUN cat output diff --git a/examples/tests/caching/Pulumi.yaml b/examples/tests/caching/Pulumi.yaml deleted file mode 100644 index 7fa2fb4..0000000 --- a/examples/tests/caching/Pulumi.yaml +++ /dev/null @@ -1,3 +0,0 @@ -name: test-buildx-caching -runtime: nodejs -description: A minimal TypeScript Pulumi program diff --git a/examples/tests/caching/index.ts b/examples/tests/caching/index.ts deleted file mode 100644 index 02c8cdb..0000000 --- a/examples/tests/caching/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as buildx from "@pulumi/docker-build"; -import * as pulumi from "@pulumi/pulumi"; - -const config = new pulumi.Config(); - -const start = new Date().getTime(); - -// docker buildx build \ -// -f Dockerfile \ -// --cache-to type=local,dest=tmp,mode=max,oci-mediatypes=true \ -// --cache-from type=local,src=tmp \ -// --build-arg SLEEP-MS=$SLEEP_MS \ -// -t not-pushed \ -// -f Dockerfile \ -// . -const img = new buildx.Image(`buildx-${config.require("name")}`, { - tags: ["not-pushed"], - dockerfile: { location: "Dockerfile" }, - push: false, - context: { location: "." }, - buildArgs: { - SLEEP_SECONDS: config.require("SLEEP_SECONDS"), - }, - cacheTo: [{ raw: config.require("cacheTo") }], - cacheFrom: [{ raw: config.require("cacheFrom") }], - // Set registry auth if it was provided. - registries: config.require("username") - ? [ - { - address: config.getSecret("address"), - username: config.getSecret("username"), - password: config.getSecret("password"), - }, - ] - : undefined, -}); - -export const durationSeconds = img.ref.apply( - (_) => (new Date().getTime() - start) / 1000.0 -); diff --git a/examples/tests/caching/package.json b/examples/tests/caching/package.json deleted file mode 100644 index a9dc923..0000000 --- a/examples/tests/caching/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "test-buildx-caching", - "devDependencies": { - "@types/node": "^20.0.0" - }, - "dependencies": { - "@pulumi/pulumi": "^3.0.0" - } -} diff --git a/examples/tests/caching/yarn.lock b/examples/tests/caching/yarn.lock deleted file mode 100644 index 87f4be2..0000000 --- a/examples/tests/caching/yarn.lock +++ /dev/null @@ -1,1905 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@grpc/grpc-js@^1.10.1": - version "1.10.8" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.8.tgz#99787785cd8335be861afd1cd485ae9f058e4484" - integrity sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.7.13": - version "0.7.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" - integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@logdna/tail-file@^2.0.6": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@logdna/tail-file/-/tail-file-2.2.0.tgz#158a362d293f940dacfd07c835bf3ae2f9e0455a" - integrity sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng== - -"@npmcli/agent@^2.0.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" - integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== - dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.3" - -"@npmcli/arborist@^7.3.1": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.5.2.tgz#0a1b86d9dce852391ce86314c0d4f2172723bb27" - integrity sha512-V0zqhdnK9Av3qSIbhYs2O+7HAJPSGhqBkNP6624iSVke2J2JKY306V5Czwul+tc2Xnq6SDEKe8v+frLeKJ4aeA== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/fs" "^3.1.1" - "@npmcli/installed-package-contents" "^2.1.0" - "@npmcli/map-workspaces" "^3.0.2" - "@npmcli/metavuln-calculator" "^7.1.1" - "@npmcli/name-from-folder" "^2.0.0" - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.1.0" - "@npmcli/query" "^3.1.0" - "@npmcli/redact" "^2.0.0" - "@npmcli/run-script" "^8.1.0" - bin-links "^4.0.4" - cacache "^18.0.3" - common-ancestor-path "^1.0.1" - hosted-git-info "^7.0.2" - json-parse-even-better-errors "^3.0.2" - json-stringify-nice "^1.1.4" - lru-cache "^10.2.2" - minimatch "^9.0.4" - nopt "^7.2.1" - npm-install-checks "^6.2.0" - npm-package-arg "^11.0.2" - npm-pick-manifest "^9.0.1" - npm-registry-fetch "^17.0.1" - pacote "^18.0.6" - parse-conflict-json "^3.0.0" - proc-log "^4.2.0" - proggy "^2.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^3.0.1" - read-package-json-fast "^3.0.2" - semver "^7.3.7" - ssri "^10.0.6" - treeverse "^3.0.0" - walk-up-path "^3.0.1" - -"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== - dependencies: - semver "^7.3.5" - -"@npmcli/git@^5.0.0": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.7.tgz#7ff675e33b4dc0b0adb1f0c4aa302109efc06463" - integrity sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA== - dependencies: - "@npmcli/promise-spawn" "^7.0.0" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^4.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" - -"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" - integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/map-workspaces@^3.0.2": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" - integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== - dependencies: - "@npmcli/name-from-folder" "^2.0.0" - glob "^10.2.2" - minimatch "^9.0.0" - read-package-json-fast "^3.0.0" - -"@npmcli/metavuln-calculator@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" - integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== - dependencies: - cacache "^18.0.0" - json-parse-even-better-errors "^3.0.0" - pacote "^18.0.0" - proc-log "^4.1.0" - semver "^7.3.5" - -"@npmcli/name-from-folder@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" - integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.1.0.tgz#10d117b5fb175acc14c70901a151c52deffc843e" - integrity sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" - -"@npmcli/promise-spawn@^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" - integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== - dependencies: - which "^4.0.0" - -"@npmcli/query@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" - integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== - dependencies: - postcss-selector-parser "^6.0.10" - -"@npmcli/redact@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-2.0.0.tgz#72f9689e87bd0ce419c35e75b8470ce8ac9e14f0" - integrity sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ== - -"@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" - integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - proc-log "^4.0.0" - which "^4.0.0" - -"@opentelemetry/api-metrics@0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz#0f09f78491a4b301ddf54a8b8a38ffa99981f645" - integrity sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ== - dependencies: - "@opentelemetry/api" "^1.0.0" - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.2.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" - integrity sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w== - -"@opentelemetry/context-async-hooks@1.24.1": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.1.tgz#1db7116d78f60e993e0d337bd497885a53deba1a" - integrity sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ== - -"@opentelemetry/core@1.24.1": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.24.1.tgz#35ab9d2ac9ca938e0ffbdfa40c49c169ac8ba80d" - integrity sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg== - dependencies: - "@opentelemetry/semantic-conventions" "1.24.1" - -"@opentelemetry/exporter-zipkin@^1.6.0": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.1.tgz#fc0173dca3c50ffe0d7b754d9bf8b35f6d2700c4" - integrity sha512-+Rl/VFmu2n6eaRMnVbyfZx1DqR/1KNyWebYuHyQBZaEAVIn/ZLgmofRpXN1X2nhJ4BNaptQUNxAstCYYz6dKoQ== - dependencies: - "@opentelemetry/core" "1.24.1" - "@opentelemetry/resources" "1.24.1" - "@opentelemetry/sdk-trace-base" "1.24.1" - "@opentelemetry/semantic-conventions" "1.24.1" - -"@opentelemetry/instrumentation-grpc@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz#5a9705a166f4f10106f502078f2ed4b8681b2ccf" - integrity sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ== - dependencies: - "@opentelemetry/api-metrics" "0.32.0" - "@opentelemetry/instrumentation" "0.32.0" - "@opentelemetry/semantic-conventions" "1.6.0" - -"@opentelemetry/instrumentation@0.32.0", "@opentelemetry/instrumentation@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz#27c5975a323a2ba83d9bf2ea8b11faaab37c5827" - integrity sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ== - dependencies: - "@opentelemetry/api-metrics" "0.32.0" - require-in-the-middle "^5.0.3" - semver "^7.3.2" - shimmer "^1.2.1" - -"@opentelemetry/propagator-b3@1.24.1": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.24.1.tgz#37ff0ee875b585fdbc095e58651cb8b09e09e051" - integrity sha512-nda97ZwhpZKyUJTXqQuKzNhPMUgMLunbbGWn8kroBwegn+nh6OhtyGkrVQsQLNdVKJl0KeB5z0ZgeWszrYhwFw== - dependencies: - "@opentelemetry/core" "1.24.1" - -"@opentelemetry/propagator-jaeger@1.24.1": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.1.tgz#cbc07aa29ee1a4351a161e6cd1ed13b958f1da54" - integrity sha512-7bRBJn3FG1l195A1m+xXRHvgzAOBsfmRi9uZ5Da18oTh7BLmNDiA8+kpk51FpTsU1PCikPVpRDNPhKVB6lyzZg== - dependencies: - "@opentelemetry/core" "1.24.1" - -"@opentelemetry/resources@1.24.1", "@opentelemetry/resources@^1.6.0": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.24.1.tgz#5e2cb84814824f3b1e1017e6caeeee8402e0ad6e" - integrity sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ== - dependencies: - "@opentelemetry/core" "1.24.1" - "@opentelemetry/semantic-conventions" "1.24.1" - -"@opentelemetry/sdk-trace-base@1.24.1", "@opentelemetry/sdk-trace-base@^1.6.0": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.1.tgz#dc2ab89126e75e442913fb5af98803fde67b2536" - integrity sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg== - dependencies: - "@opentelemetry/core" "1.24.1" - "@opentelemetry/resources" "1.24.1" - "@opentelemetry/semantic-conventions" "1.24.1" - -"@opentelemetry/sdk-trace-node@^1.6.0": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.1.tgz#9bcb08ee64416531ff71edba7d46972b24606345" - integrity sha512-/FZX8uWaGIAwsDhqI8VvQ+qWtfMNlXjaFYGc+vmxgdRFppCSSIRwrPyIhJO1qx61okyYhoyxVEZAfoiNxrfJCg== - dependencies: - "@opentelemetry/context-async-hooks" "1.24.1" - "@opentelemetry/core" "1.24.1" - "@opentelemetry/propagator-b3" "1.24.1" - "@opentelemetry/propagator-jaeger" "1.24.1" - "@opentelemetry/sdk-trace-base" "1.24.1" - semver "^7.5.2" - -"@opentelemetry/semantic-conventions@1.24.1", "@opentelemetry/semantic-conventions@^1.6.0": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz#d4bcebda1cb5146d47a2a53daaa7922f8e084dfb" - integrity sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw== - -"@opentelemetry/semantic-conventions@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz#ed410c9eb0070491cff9fe914246ce41f88d6f74" - integrity sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@pulumi/pulumi@^3.0.0": - version "3.117.0" - resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.117.0.tgz#0ef4f05c96d3b3362f2aa17f4b46a155cd1152aa" - integrity sha512-pF4KF5FpSwckB/Xy0ZlCH6FGHiNUkmC9c4ATW2pjfp2oa0uyEQ+5nQjj/6osX5wWI2Wn+Qsf+9c9ZaZwrwyhnw== - dependencies: - "@grpc/grpc-js" "^1.10.1" - "@logdna/tail-file" "^2.0.6" - "@npmcli/arborist" "^7.3.1" - "@opentelemetry/api" "^1.2.0" - "@opentelemetry/exporter-zipkin" "^1.6.0" - "@opentelemetry/instrumentation" "^0.32.0" - "@opentelemetry/instrumentation-grpc" "^0.32.0" - "@opentelemetry/resources" "^1.6.0" - "@opentelemetry/sdk-trace-base" "^1.6.0" - "@opentelemetry/sdk-trace-node" "^1.6.0" - "@opentelemetry/semantic-conventions" "^1.6.0" - "@pulumi/query" "^0.3.0" - "@types/google-protobuf" "^3.15.5" - "@types/semver" "^7.5.6" - "@types/tmp" "^0.2.6" - execa "^5.1.0" - fdir "^6.1.1" - google-protobuf "^3.5.0" - got "^11.8.6" - ini "^2.0.0" - js-yaml "^3.14.0" - minimist "^1.2.6" - normalize-package-data "^6.0.0" - picomatch "^3.0.1" - pkg-dir "^7.0.0" - require-from-string "^2.0.1" - semver "^7.5.2" - source-map-support "^0.5.6" - tmp "^0.2.1" - upath "^1.1.0" - -"@pulumi/query@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@pulumi/query/-/query-0.3.0.tgz#f496608e86a18c3dd31b6c533408e2441c29071d" - integrity sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w== - -"@sigstore/bundle@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" - integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - -"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" - integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== - -"@sigstore/protobuf-specs@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" - integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== - -"@sigstore/sign@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" - integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - make-fetch-happen "^13.0.1" - proc-log "^4.2.0" - promise-retry "^2.0.1" - -"@sigstore/tuf@^2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" - integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - tuf-js "^2.2.1" - -"@sigstore/verify@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" - integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.1.0" - "@sigstore/protobuf-specs" "^0.3.2" - -"@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - -"@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== - -"@tufjs/models@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" - integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== - dependencies: - "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.4" - -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - -"@types/google-protobuf@^3.15.5": - version "3.15.12" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" - integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ== - -"@types/http-cache-semantics@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.0.0": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== - dependencies: - undici-types "~5.26.4" - -"@types/responselike@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" - integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== - dependencies: - "@types/node" "*" - -"@types/semver@^7.5.6": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/tmp@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217" - integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bin-links@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" - integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== - dependencies: - cmd-shim "^6.0.0" - npm-normalize-package-bin "^3.0.0" - read-cmd-shim "^4.0.0" - write-file-atomic "^5.0.0" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -cacache@^18.0.0, cacache@^18.0.3: - version "18.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.3.tgz#864e2c18414e1e141ae8763f31e46c2cb96d1b21" - integrity sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^2.0.1" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -cmd-shim@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" - integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - -cross-spawn@^7.0.0, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -debug@4, debug@^4.1.1, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -execa@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exponential-backoff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" - integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== - -fdir@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.1.1.tgz#316b58145a05223b75c8b371e80bb3bad8f1441e" - integrity sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg== - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob@^10.2.2, glob@^10.3.10: - version "10.4.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" - integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - path-scurry "^1.11.1" - -google-protobuf@^3.5.0: - version "3.21.2" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4" - integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA== - -got@^11.8.6: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@^4.2.6: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-proxy-agent@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -https-proxy-agent@^7.0.1: - version "7.0.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" - integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== - dependencies: - agent-base "^7.0.2" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ignore-walk@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" - integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== - dependencies: - minimatch "^9.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -ini@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - -is-core-module@^2.13.0, is-core-module@^2.8.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - -jackspeak@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" - integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -js-yaml@^3.14.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" - integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== - -json-stringify-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - -jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -just-diff-apply@^5.2.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" - integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== - -just-diff@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" - integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== - -keyv@^4.0.0: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - -make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" - integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== - dependencies: - "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - proc-log "^4.2.0" - promise-retry "^2.0.1" - ssri "^10.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -minimatch@^9.0.0, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" - integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== - dependencies: - minipass "^7.0.3" - -minipass-fetch@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" - integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -module-details-from-path@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" - integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -node-gyp@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.1.0.tgz#75e6f223f2acb4026866c26a2ead6aab75a8ca7e" - integrity sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^10.3.10" - graceful-fs "^4.2.6" - make-fetch-happen "^13.0.0" - nopt "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - tar "^6.1.2" - which "^4.0.0" - -nopt@^7.0.0, nopt@^7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" - integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== - dependencies: - abbrev "^2.0.0" - -normalize-package-data@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" - integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== - dependencies: - hosted-git-info "^7.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" - integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" - integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-packlist@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" - integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== - dependencies: - ignore-walk "^6.0.4" - -npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz#c90658bd726fe5bca9d2869f3e99359b8fcda046" - integrity sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - -npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-17.0.1.tgz#c13cfd4c022713f09d23af5fba8b6ec59a17609e" - integrity sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA== - dependencies: - "@npmcli/redact" "^2.0.0" - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^4.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -pacote@^18.0.0, pacote@^18.0.6: - version "18.0.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" - integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== - dependencies: - "@npmcli/git" "^5.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/package-json" "^5.1.0" - "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^8.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^17.0.0" - proc-log "^4.0.0" - promise-retry "^2.0.1" - sigstore "^2.2.0" - ssri "^10.0.0" - tar "^6.1.11" - -parse-conflict-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" - integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== - dependencies: - json-parse-even-better-errors "^3.0.0" - just-diff "^6.0.0" - just-diff-apply "^5.2.0" - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -picomatch@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" - integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -postcss-selector-parser@^6.0.10: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" - integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" - integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== - -proggy@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" - integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== - -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.1.tgz#3570f7a3f2aaaf8e703623a552cd74749688cf19" - integrity sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -protobufjs@^7.2.5: - version "7.3.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" - integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -read-cmd-shim@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" - integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== - -read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-in-the-middle@^5.0.3: - version "5.2.0" - resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz#4b71e3cc7f59977100af9beb76bf2d056a5a6de2" - integrity sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg== - dependencies: - debug "^4.1.1" - module-details-from-path "^1.0.3" - resolve "^1.22.1" - -resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve@^1.22.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shimmer@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sigstore@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" - integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - "@sigstore/sign" "^2.3.2" - "@sigstore/tuf" "^2.3.4" - "@sigstore/verify" "^1.2.1" - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -socks-proxy-agent@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" - integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== - dependencies: - agent-base "^7.1.1" - debug "^4.3.4" - socks "^2.7.1" - -socks@^2.7.1: - version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" - integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - -source-map-support@^0.5.6: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== - -sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -ssri@^10.0.0, ssri@^10.0.6: - version "10.0.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tar@^6.1.11, tar@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tmp@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -treeverse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" - integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== - -tuf-js@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" - integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== - dependencies: - "@tufjs/models" "2.0.1" - debug "^4.3.4" - make-fetch-happen "^13.0.1" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -upath@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - -walk-up-path@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" - integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== diff --git a/examples/tests/dockerhub/.dockerignore b/examples/tests/dockerhub/.dockerignore deleted file mode 100644 index 72e8ffc..0000000 --- a/examples/tests/dockerhub/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/examples/tests/dockerhub/Pulumi.yaml b/examples/tests/dockerhub/Pulumi.yaml deleted file mode 100644 index 1670a8b..0000000 --- a/examples/tests/dockerhub/Pulumi.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: dockerhub -description: Push to DockerHub with caching -runtime: yaml -plugins: - providers: - - name: docker-build - path: ../../../bin -outputs: - ref: ${my-image.ref} -resources: - my-image: - type: docker-build:Image - properties: - tags: - - docker.io/pulumibot/buildkit-e2e - push: true - context: - location: . - dockerfile: - inline: FROM alpine - cacheFrom: - - registry: - ref: docker.io/pulumibot/buildkit-e2e:cache - cacheTo: - - registry: - ref: docker.io/pulumibot/buildkit-e2e:cache - registries: - - username: pulumibot - address: docker.io - password: ${dockerHubPassword} -config: - dockerHubPassword: - type: string - secret: true diff --git a/examples/tests/ecr/.dockerignore b/examples/tests/ecr/.dockerignore deleted file mode 100644 index 72e8ffc..0000000 --- a/examples/tests/ecr/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/examples/tests/ecr/Pulumi.yaml b/examples/tests/ecr/Pulumi.yaml deleted file mode 100644 index 5499c2e..0000000 --- a/examples/tests/ecr/Pulumi.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: ecr -description: Push to AWS ECR with caching -runtime: yaml -plugins: - providers: - - name: docker-build - path: ../../../bin -outputs: - ref: ${my-image.ref} -resources: - ecr-repository: - type: aws:ecr:Repository - properties: - forceDelete: true - my-image: - type: docker-build:Image - properties: - tags: - - ${ecr-repository.repositoryUrl}:latest - push: true - context: - location: . - dockerfile: - inline: FROM alpine - cacheFrom: - - registry: - ref: ${ecr-repository.repositoryUrl}:cache - cacheTo: - - registry: - ref: ${ecr-repository.repositoryUrl}:cache - imageManifest: true - ociMediaTypes: true - registries: - - username: ${auth-token.userName} - password: ${auth-token.password} - address: ${ecr-repository.repositoryUrl} -variables: - auth-token: - fn::aws:ecr:getAuthorizationToken: - registryId: ${ecr-repository.registryId} diff --git a/examples/tests/unauthenticated/.dockerignore b/examples/tests/unauthenticated/.dockerignore deleted file mode 100644 index 72e8ffc..0000000 --- a/examples/tests/unauthenticated/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/examples/tests/unauthenticated/Pulumi.yaml b/examples/tests/unauthenticated/Pulumi.yaml deleted file mode 100644 index 024f5a0..0000000 --- a/examples/tests/unauthenticated/Pulumi.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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 diff --git a/examples/upgrade/Pulumi.yaml b/examples/upgrade/Pulumi.yaml deleted file mode 100644 index e37d898..0000000 --- a/examples/upgrade/Pulumi.yaml +++ /dev/null @@ -1,187 +0,0 @@ -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 < buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/upgrade/app/Dockerfile.namedContexts b/examples/upgrade/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/upgrade/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/upgrade/app/Dockerfile.secrets b/examples/upgrade/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/upgrade/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/upgrade/app/Dockerfile.sshMount b/examples/upgrade/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/upgrade/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/upgrade/app/Dockerfile.target b/examples/upgrade/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/upgrade/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/yaml/.dockerignore b/examples/yaml/.dockerignore deleted file mode 100644 index 37ffae4..0000000 --- a/examples/yaml/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -command-output -tmp diff --git a/examples/yaml/Pulumi.yaml b/examples/yaml/Pulumi.yaml deleted file mode 100644 index b58fe60..0000000 --- a/examples/yaml/Pulumi.yaml +++ /dev/null @@ -1,193 +0,0 @@ -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. - registries: - - address: docker.io - username: pulumibot - password: ${dockerHubPassword} - - # 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 < buildplatform -RUN echo ${TARGETPLATFORM} > targetplatform - -FROM build -RUN cat buildplatform -RUN cat targetplatform diff --git a/examples/yaml/app/Dockerfile.namedContexts b/examples/yaml/app/Dockerfile.namedContexts deleted file mode 100644 index 6e53dba..0000000 --- a/examples/yaml/app/Dockerfile.namedContexts +++ /dev/null @@ -1,5 +0,0 @@ -# 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 👍" diff --git a/examples/yaml/app/Dockerfile.secrets b/examples/yaml/app/Dockerfile.secrets deleted file mode 100644 index 513bbd2..0000000 --- a/examples/yaml/app/Dockerfile.secrets +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine - -RUN --mount=type=secret,id=password [ "$(cat /run/secrets/password)" = "hunter2" ] - diff --git a/examples/yaml/app/Dockerfile.sshMount b/examples/yaml/app/Dockerfile.sshMount deleted file mode 100644 index 055cb78..0000000 --- a/examples/yaml/app/Dockerfile.sshMount +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine - -RUN apk add openssh-client - -RUN --mount=type=ssh ssh-add -l diff --git a/examples/yaml/app/Dockerfile.target b/examples/yaml/app/Dockerfile.target deleted file mode 100644 index 7cddec7..0000000 --- a/examples/yaml/app/Dockerfile.target +++ /dev/null @@ -1,8 +0,0 @@ -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" ] diff --git a/examples/yaml_test.go b/examples/yaml_test.go deleted file mode 100644 index 9264d76..0000000 --- a/examples/yaml_test.go +++ /dev/null @@ -1,96 +0,0 @@ -//go:build java || all -// +build java all - -package examples - -import ( - "os" - "path" - "path/filepath" - "testing" - - "github.com/pulumi/providertest" - "github.com/pulumi/pulumi-docker-build/provider" - "github.com/pulumi/pulumi/pkg/v3/testing/integration" - "github.com/stretchr/testify/require" -) - -func TestYAMLExample(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "yaml"), - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - 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) { - if os.Getenv("AWS_SESSION_TOKEN") == "" { - t.Skip("Missing AWS credentials") - } - - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "tests/ecr"), - } - - integration.ProgramTest(t, &test) -} - -func TestDockerHub(t *testing.T) { - if os.Getenv("DOCKER_HUB_PASSWORD") == "" { - t.Skip("Missing DockerHub credentials") - } - - cwd, err := os.Getwd() - require.NoError(t, err) - - test := integration.ProgramTestOptions{ - Dir: path.Join(cwd, "tests/dockerhub"), - Secrets: map[string]string{ - "dockerHubPassword": os.Getenv("DOCKER_HUB_PASSWORD"), - }, - } - - 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) -} diff --git a/go.mod b/go.mod deleted file mode 100644 index 080da31..0000000 --- a/go.mod +++ /dev/null @@ -1,493 +0,0 @@ -module github.com/pulumi/pulumi-docker-build - -go 1.21.7 - -require ( - github.com/aws/aws-sdk-go v1.54.18 - github.com/blang/semver v3.5.1+incompatible - github.com/distribution/reference v0.6.0 - github.com/docker/buildx v0.16.0 - github.com/docker/cli v27.0.3+incompatible - github.com/docker/docker v27.0.3+incompatible - github.com/golangci/golangci-lint v1.59.1 - github.com/moby/buildkit v0.15.0 - github.com/moby/patternmatcher v0.6.0 - github.com/muesli/reflow v0.3.0 - github.com/otiai10/copy v1.14.0 - github.com/pulumi/providertest v0.0.13 - github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet v0.0.0-20240624150732-fa777213effd - github.com/pulumi/pulumi-go-provider v0.20.0 - github.com/pulumi/pulumi-java/pkg v0.12.1-0.20240624103139-022406d291f4 - github.com/pulumi/pulumi-yaml v1.9.1 - github.com/pulumi/pulumi/pkg/v3 v3.123.1-0.20240711160144-b8226b705890 - github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240711160144-b8226b705890 - github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240711160144-b8226b705890 - github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240711160144-b8226b705890 - github.com/pulumi/pulumi/sdk/v3 v3.123.1-0.20240711160144-b8226b705890 - github.com/regclient/regclient v0.6.1 - github.com/sirupsen/logrus v1.9.3 - github.com/spf13/afero v1.11.0 - github.com/stretchr/testify v1.9.0 - github.com/theupdateframework/notary v0.7.0 - github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c - go.uber.org/mock v0.4.0 - golang.org/x/crypto v0.25.0 - golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 - google.golang.org/protobuf v1.34.2 - gopkg.in/yaml.v3 v3.0.1 -) - -require ( - 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect - 4d63.com/gochecknoglobals v0.2.1 // indirect - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute v1.25.1 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/kms v1.15.7 // indirect - cloud.google.com/go/logging v1.9.0 // indirect - cloud.google.com/go/longrunning v0.5.5 // indirect - cloud.google.com/go/storage v1.39.1 // indirect - dario.cat/mergo v1.0.0 // indirect - github.com/4meepo/tagalign v1.3.4 // indirect - github.com/Abirdcfly/dupword v0.0.14 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/AlecAivazis/survey/v2 v2.3.7 // indirect - github.com/Antonboom/errname v0.1.13 // indirect - github.com/Antonboom/nilnil v0.1.9 // indirect - github.com/Antonboom/testifylint v1.3.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect - github.com/BurntSushi/toml v1.4.0 // indirect - github.com/Crocmagnon/fatcontext v0.2.2 // indirect - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 // indirect - github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect - github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect - github.com/agext/levenshtein v1.2.3 // indirect - github.com/alecthomas/chroma v0.10.0 // indirect - github.com/alecthomas/chroma/v2 v2.13.0 // indirect - github.com/alecthomas/go-check-sumtype v0.1.4 // indirect - github.com/alexkohler/nakedret/v2 v2.0.4 // indirect - github.com/alexkohler/prealloc v1.0.0 // indirect - github.com/alingse/asasalint v0.0.11 // indirect - github.com/apparentlymart/go-cidr v1.1.0 // indirect - github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/ashanbrown/forbidigo v1.6.0 // indirect - github.com/ashanbrown/makezero v1.1.1 // indirect - github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect - github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 // indirect - github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect - github.com/aws/smithy-go v1.20.2 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/aymerick/douceur v0.2.0 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bkielbasa/cyclop v1.2.1 // indirect - github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v4 v4.2.1 // indirect - github.com/breml/bidichk v0.2.7 // indirect - github.com/breml/errchkjson v0.3.6 // indirect - github.com/butuzov/ireturn v0.3.0 // indirect - github.com/butuzov/mirror v1.2.0 // indirect - github.com/catenacyber/perfsprint v0.7.1 // indirect - github.com/ccojocar/zxcvbn-go v1.0.2 // indirect - github.com/cenkalti/backoff/v3 v3.2.2 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/charithe/durationcheck v0.0.10 // indirect - github.com/charmbracelet/bubbles v0.18.0 // indirect - github.com/charmbracelet/bubbletea v0.26.4 // indirect - github.com/charmbracelet/glamour v0.6.0 // indirect - github.com/charmbracelet/lipgloss v0.11.0 // indirect - github.com/charmbracelet/x/ansi v0.1.2 // indirect - github.com/charmbracelet/x/input v0.1.0 // indirect - github.com/charmbracelet/x/term v0.1.1 // indirect - github.com/charmbracelet/x/windows v0.1.0 // indirect - github.com/chavacava/garif v0.1.0 // indirect - github.com/cheggaaa/pb v1.0.29 // indirect - github.com/ckaznocha/intrange v0.1.2 // indirect - github.com/cloudflare/circl v1.3.8 // indirect - github.com/compose-spec/compose-go/v2 v2.1.3 // indirect - github.com/containerd/console v1.0.4 // indirect - github.com/containerd/containerd v1.7.19 // indirect - github.com/containerd/containerd/api v1.7.19 // indirect - github.com/containerd/continuity v0.4.3 // indirect - github.com/containerd/errdefs v0.1.0 // indirect - github.com/containerd/log v0.1.0 // indirect - github.com/containerd/platforms v0.2.1 // indirect - github.com/containerd/ttrpc v1.2.5 // indirect - github.com/containerd/typeurl/v2 v2.1.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect - github.com/curioswitch/go-reassign v0.2.0 // indirect - github.com/cyphar/filepath-securejoin v0.2.5 // indirect - github.com/daixiang0/gci v0.13.4 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/deckarep/golang-set/v2 v2.5.0 // indirect - github.com/denis-tingaikin/go-header v0.5.0 // indirect - github.com/djherbis/times v1.6.0 // indirect - github.com/dlclark/regexp2 v1.11.0 // indirect - github.com/docker/cli-docs-tool v0.8.0 // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.2 // indirect - github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-metrics v0.0.1 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/edsrzf/mmap-go v1.1.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/emirpasic/gods v1.18.1 // indirect - github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect - github.com/erikgeiser/promptkit v0.9.0 // indirect - github.com/ettle/strcase v0.2.0 // indirect - github.com/fatih/color v1.17.0 // indirect - github.com/fatih/structtag v1.2.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/firefart/nonamedreturns v1.0.5 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/fvbommel/sortorder v1.1.0 // indirect - github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.6 // indirect - github.com/go-critic/go-critic v0.11.4 // indirect - github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-git/go-git/v5 v5.12.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.3 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.3 // indirect - github.com/go-toolsmith/astcast v1.1.0 // indirect - github.com/go-toolsmith/astcopy v1.1.0 // indirect - github.com/go-toolsmith/astequal v1.2.0 // indirect - github.com/go-toolsmith/astfmt v1.1.0 // indirect - github.com/go-toolsmith/astp v1.1.0 // indirect - github.com/go-toolsmith/strparse v1.1.0 // indirect - github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0 // indirect - github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect - github.com/gobwas/glob v0.2.3 // indirect - github.com/gofrs/flock v0.12.0 // indirect - github.com/gofrs/uuid v4.2.0+incompatible // indirect - github.com/gogo/googleapis v1.4.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.1 // indirect - github.com/golang/glog v1.2.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect - github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect - github.com/golangci/misspell v0.6.0 // indirect - github.com/golangci/modinfo v0.3.4 // indirect - github.com/golangci/plugin-module-register v0.1.1 // indirect - github.com/golangci/revgrep v0.5.3 // indirect - github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect - github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/go-querystring v1.1.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/google/wire v0.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gordonklaus/ineffassign v0.1.0 // indirect - github.com/gorilla/css v1.0.0 // indirect - github.com/gorilla/mux v1.8.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-cty-funcs v0.0.0-20230405223818-a090f58aa992 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect - github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect - github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect - github.com/hashicorp/go-sockaddr v1.0.6 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/hcl/v2 v2.20.1 // indirect - github.com/hashicorp/vault/api v1.12.0 // indirect - github.com/hexops/gotextdiff v1.0.3 // indirect - github.com/iancoleman/strcase v0.2.0 // indirect - github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd // indirect - github.com/imdario/mergo v0.3.16 // indirect - github.com/in-toto/in-toto-golang v0.5.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/jgautheron/goconst v1.7.1 // indirect - github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect - github.com/jjti/go-spancheck v0.6.1 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/julz/importas v0.1.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect - github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/kisielk/errcheck v1.7.0 // indirect - github.com/kkHAIKE/contextcheck v1.1.5 // indirect - github.com/klauspost/compress v1.17.9 // indirect - github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.10 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect - github.com/kyoh86/exportloopref v0.1.11 // indirect - github.com/lasiar/canonicalheader v1.1.1 // indirect - github.com/ldez/gomoddirectives v0.2.4 // indirect - github.com/ldez/tagliatelle v0.5.0 // indirect - github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/lufeee/execinquery v1.2.1 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/macabu/inamedparam v0.1.3 // indirect - github.com/magiconair/properties v1.8.6 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/maratori/testableexamples v1.0.0 // indirect - github.com/maratori/testpackage v1.1.1 // indirect - github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mattn/go-shellwords v1.0.12 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mgechev/revive v1.3.7 // indirect - github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect - github.com/microcosm-cc/bluemonday v1.0.21 // indirect - github.com/miekg/pkcs11 v1.1.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-ps v1.0.0 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/locker v1.0.1 // indirect - github.com/moby/moby v25.0.4+incompatible // indirect - github.com/moby/spdystream v0.2.0 // indirect - github.com/moby/sys/mountinfo v0.7.1 // indirect - github.com/moby/sys/sequential v0.5.0 // indirect - github.com/moby/sys/signal v0.7.0 // indirect - github.com/moby/sys/user v0.1.0 // indirect - github.com/moby/term v0.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/moricho/tparallel v0.3.1 // indirect - github.com/morikuni/aec v1.0.0 // indirect - github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect - github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/termenv v0.15.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/nakabonne/nestif v0.3.1 // indirect - github.com/natefinch/atomic v1.0.1 // indirect - github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d // indirect - github.com/nishanths/exhaustive v0.12.0 // indirect - github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.16.2 // indirect - github.com/nxadm/tail v1.4.11 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/opentracing/basictracer-go v1.1.0 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petar-dambovaliev/aho-corasick v0.0.0-20230725210150-fb29fc3c913e // indirect - github.com/pgavlin/diff v0.0.0-20230503175810-113847418e2e // indirect - github.com/pgavlin/fx v0.1.6 // indirect - github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect - github.com/pgavlin/text v0.0.0-20230428184845-84c285f11d2f // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pkg/term v1.1.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.5.2 // indirect - github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_golang v1.17.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.44.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.9.1 // indirect - github.com/pulumi/inflector v0.1.1 // indirect - github.com/quasilyte/go-ruleguard v0.4.2 // indirect - github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect - github.com/quasilyte/gogrep v0.5.0 // indirect - github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect - github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect - github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/ryancurrah/gomodguard v1.3.2 // indirect - github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect - github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect - github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect - github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.26.0 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect - github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 // indirect - github.com/segmentio/asm v1.1.3 // indirect - github.com/segmentio/encoding v0.3.5 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect - github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/shirou/gopsutil/v3 v3.24.5 // indirect - github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect - github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 // indirect - github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sivchari/tenv v1.7.1 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect - github.com/sonatard/noctx v0.0.2 // indirect - github.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 // indirect - github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.8.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.12.0 // indirect - github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect - github.com/stretchr/objx v0.5.2 // indirect - github.com/subosito/gotenv v1.4.1 // indirect - github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect - github.com/tdakkota/asciicheck v0.2.0 // indirect - github.com/tetafro/godot v1.4.16 // indirect - github.com/texttheater/golang-levenshtein v1.0.1 // indirect - github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect - github.com/timonwong/loggercheck v0.9.4 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/tomarrell/wrapcheck/v2 v2.8.3 // indirect - github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect - github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect - github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // indirect - github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab // indirect - github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect - github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect - github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - github.com/ulikunitz/xz v0.5.12 // indirect - github.com/ultraware/funlen v0.1.0 // indirect - github.com/ultraware/whitespace v0.1.1 // indirect - github.com/uudashr/gocognit v1.1.2 // indirect - github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/xen0n/gosmopolitan v1.2.2 // indirect - github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - github.com/yagipy/maintidx v1.0.0 // indirect - github.com/yeya24/promlinter v0.3.0 // indirect - github.com/ykadowak/zerologlint v0.1.5 // indirect - github.com/yuin/goldmark v1.5.2 // indirect - github.com/yuin/goldmark-emoji v1.0.1 // indirect - github.com/yusufpapurcu/wmi v1.2.4 // indirect - github.com/zclconf/go-cty v1.14.4 // indirect - gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.12.2 // indirect - go-simpler.org/sloglint v0.7.1 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.22.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect - go.pennock.tech/tabular v1.1.3 // indirect - go.uber.org/atomic v1.11.0 // indirect - go.uber.org/automaxprocs v1.5.3 // indirect - go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect - gocloud.dev v0.37.0 // indirect - gocloud.dev/secrets/hashivault v0.37.0 // indirect - golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.22.0 // indirect - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/api v0.169.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/grpc v1.64.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - honnef.co/go/tools v0.4.7 // indirect - k8s.io/api v0.29.2 // indirect - k8s.io/apimachinery v0.29.2 // indirect - k8s.io/client-go v0.29.2 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect - k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect - lukechampine.com/frand v1.4.2 // indirect - mvdan.cc/gofumpt v0.6.0 // indirect - mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) diff --git a/go.sum b/go.sum deleted file mode 100644 index 1fc7769..0000000 --- a/go.sum +++ /dev/null @@ -1,1562 +0,0 @@ -4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= -4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= -4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= -4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= -cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM= -cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= -cloud.google.com/go/logging v1.9.0 h1:iEIOXFO9EmSiTjDmfpbRjOxECO7R8C7b8IXUGOj7xZw= -cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= -cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= -cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= -cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= -cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= -filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8= -github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0= -github.com/Abirdcfly/dupword v0.0.14 h1:3U4ulkc8EUo+CaT105/GJ1BQwtgyj6+VaBVbAX11Ba8= -github.com/Abirdcfly/dupword v0.0.14/go.mod h1:VKDAbxdY8YbKUByLGg8EETzYSuC4crm9WwI6Y3S0cLI= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= -github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= -github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= -github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM= -github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns= -github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ= -github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ= -github.com/Antonboom/testifylint v1.3.1 h1:Uam4q1Q+2b6H7gvk9RQFw6jyVDdpzIirFOOrbs14eG4= -github.com/Antonboom/testifylint v1.3.1/go.mod h1:NV0hTlteCkViPW9mSR4wEMfwp+Hs1T3dY60bkvSfhpM= -github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0 h1:AifHbc4mg0x9zW52WOpKbsHaDKuRhlI7TVl47thgQ70= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0/go.mod h1:T5RfihdXtBDxt1Ch2wobif3TvzTdumDy29kahv6AV9A= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1 h1:fXPMAmuh0gDuRDey0atC8cXBuKIlqCzCkL8sm1n9Ov0= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1/go.mod h1:SUZc9YRRHfx2+FAQKNDGrssXehqLpxmwRv2mC/5ntj4= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Crocmagnon/fatcontext v0.2.2 h1:OrFlsDdOj9hW/oBEJBNSuH7QWf+E9WPVHw+x52bXVbk= -github.com/Crocmagnon/fatcontext v0.2.2/go.mod h1:WSn/c/+MMNiD8Pri0ahRj0o9jVpeowzavOQplBJw6u0= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI= -github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ= -github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= -github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= -github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/Shopify/logrus-bugsnag v0.0.0-20170309145241-6dbc35f2c30d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= -github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= -github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= -github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/alecthomas/assert/v2 v2.6.0 h1:o3WJwILtexrEUk3cUVal3oiQY2tfgr/FHWiz/v2n4FU= -github.com/alecthomas/assert/v2 v2.6.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= -github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= -github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= -github.com/alecthomas/chroma/v2 v2.13.0 h1:VP72+99Fb2zEcYM0MeaWJmV+xQvz5v5cxRHd+ooU1lI= -github.com/alecthomas/chroma/v2 v2.13.0/go.mod h1:BUGjjsD+ndS6eX37YgTchSEG+Jg9Jv1GiZs9sqPqztk= -github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c= -github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= -github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= -github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alexkohler/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg= -github.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= -github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= -github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= -github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= -github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= -github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= -github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= -github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= -github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aws/aws-sdk-go v1.54.18 h1:t8DGtN8A2wEiazoJxeDbfPsbxCKtjoRLuO7jBSgJzo4= -github.com/aws/aws-sdk-go v1.54.18/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= -github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= -github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= -github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= -github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= -github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 h1:7Zwtt/lP3KNRkeZre7soMELMGNoBrutx8nobg1jKWmo= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15/go.mod h1:436h2adoHb57yd+8W+gYPrrA9U/R/SuAuOO42Ushzhw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 h1:81KE7vaZzrl7yHBYHVEzYB8sypz11NMOZ40YlWvPxsU= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5/go.mod h1:LIt2rg7Mcgn09Ygbdh/RdIm0rQ+3BNkbP1gyVMFtRK0= -github.com/aws/aws-sdk-go-v2/service/iam v1.31.4 h1:eVm30ZIDv//r6Aogat9I88b5YX1xASSLcEDqHYRPVl0= -github.com/aws/aws-sdk-go-v2/service/iam v1.31.4/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 h1:ZMeFZ5yk+Ek+jNr1+uwCd2tG89t6oTS5yVWpa6yy2es= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7/go.mod h1:mxV05U+4JiHqIpGqqYXOHLPKUC6bDXC44bsUhNjOEwY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 h1:f9RyWNtS8oH7cZlbn+/JNPpjUk5+5fLd5lM9M0i49Ys= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5/go.mod h1:h5CoMZV2VF297/VLhRhO1WF+XYWOzXo+4HsObA4HjBQ= -github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 h1:SBn4I0fJXF9FYOVRSVMWuhvEKoAHDikjGpS3wlmw5DE= -github.com/aws/aws-sdk-go-v2/service/kms v1.30.1/go.mod h1:2snWQJQUKsbN66vAawJuOGX7dr37pfOq9hb0tZDGIqQ= -github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc= -github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= -github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= -github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= -github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= -github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= -github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM= -github.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= -github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= -github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= -github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= -github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0 h1:s7+5BfS4WFJoVF9pnB8kBk03S7pZXRdKamnV0FOl5Sc= -github.com/bugsnag/bugsnag-go v1.0.5-0.20150529004307-13fd6b8acda0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= -github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= -github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= -github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= -github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= -github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= -github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= -github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= -github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= -github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= -github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= -github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.26.4 h1:2gDkkzLZaTjMl/dQBpNVtnvcCxsh/FCkimep7FC9c40= -github.com/charmbracelet/bubbletea v0.26.4/go.mod h1:P+r+RRA5qtI1DOHNFn0otoNwB4rn+zNAzSj/EXz6xU0= -github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc= -github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc= -github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g= -github.com/charmbracelet/lipgloss v0.11.0/go.mod h1:1UdRTH9gYgpcdNN5oBtjbu/IzNKtzVtb7sqN1t9LNn8= -github.com/charmbracelet/x/ansi v0.1.2 h1:6+LR39uG8DE6zAmbu023YlqjJHkYXDF1z36ZwzO4xZY= -github.com/charmbracelet/x/ansi v0.1.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= -github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= -github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= -github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= -github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= -github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4= -github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= -github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= -github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= -github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= -github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= -github.com/ckaznocha/intrange v0.1.2 h1:3Y4JAxcMntgb/wABQ6e8Q8leMd26JbX2790lIss9MTI= -github.com/ckaznocha/intrange v0.1.2/go.mod h1:RWffCw/vKBwHeOEwWdCikAtY0q4gGt8VhJZEEA5n+RE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ= -github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= -github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= -github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= -github.com/compose-spec/compose-go/v2 v2.1.3 h1:bD67uqLuL/XgkAK6ir3xZvNLFPxPScEi1KW7R5esrLE= -github.com/compose-spec/compose-go/v2 v2.1.3/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= -github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= -github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= -github.com/containerd/containerd v1.7.19 h1:/xQ4XRJ0tamDkdzrrBAUy/LE5nCcxFKdBm4EcPrSMEE= -github.com/containerd/containerd v1.7.19/go.mod h1:h4FtNYUUMB4Phr6v+xG89RYKj9XccvbNSCKjdufCrkc= -github.com/containerd/containerd/api v1.7.19 h1:VWbJL+8Ap4Ju2mx9c9qS1uFSB1OVYr5JJrW2yT5vFoA= -github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= -github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= -github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= -github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= -github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= -github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/nydus-snapshotter v0.13.7 h1:x7DHvGnzJOu1ZPwPYkeOPk5MjZZYbdddygEjaSDoFTk= -github.com/containerd/nydus-snapshotter v0.13.7/go.mod h1:VPVKQ3jmHFIcUIV2yiQ1kImZuBFS3GXDohKs9mRABVE= -github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= -github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/containerd/stargz-snapshotter v0.15.1 h1:fpsP4kf/Z4n2EYnU0WT8ZCE3eiKDwikDhL6VwxIlgeA= -github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= -github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= -github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= -github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= -github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= -github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0= -github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= -github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= -github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/daixiang0/gci v0.13.4 h1:61UGkmpoAcxHM2hhNkZEf5SzwQtWJXTSws7jaPyqwlw= -github.com/daixiang0/gci v0.13.4/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA= -github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= -github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= -github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= -github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c= -github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0= -github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= -github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/docker/buildx v0.16.0 h1:LurEflyb6BBoLtDwJY1dw9dLHKzEgGvCjAz67QI0xO0= -github.com/docker/buildx v0.16.0/go.mod h1:4xduW7BOJ2B11AyORKZFDKjF6Vcb4EgTYnV2nunxv9I= -github.com/docker/cli v27.0.3+incompatible h1:usGs0/BoBW8MWxGeEtqPMkzOY56jZ6kYlSN5BLDioCQ= -github.com/docker/cli v27.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli-docs-tool v0.8.0 h1:YcDWl7rQJC3lJ7WVZRwSs3bc9nka97QLWfyJQli8yJU= -github.com/docker/cli-docs-tool v0.8.0/go.mod h1:8TQQ3E7mOXoYUs811LiPdUnAhXrcVsBIrW21a5pUbdk= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= -github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= -github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= -github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v0.0.0-20170216131308-f21a8cedbbae/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= -github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= -github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= -github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= -github.com/erikgeiser/promptkit v0.9.0 h1:3qL1mS/ntCrXdb8sTP/ka82CJ9kEQaGuYXNrYJkWYBc= -github.com/erikgeiser/promptkit v0.9.0/go.mod h1:pU9dtogSe3Jlc2AY77EP7R4WFP/vgD4v+iImC83KsCo= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= -github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= -github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= -github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= -github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk= -github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw= -github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8= -github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.4.9 h1:x6+GEQeYWC+cnLNsHK5uXXgEQADmlH/1EqMrjfXjzk8= -github.com/gkampitakis/go-snaps v0.4.9/go.mod h1:8HW4KX3JKV8M0GSw69CvT+Jqhd1AlBPMPpBfjBI3bdY= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= -github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU= -github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= -github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= -github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= -github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= -github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= -github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= -github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= -github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= -github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= -github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= -github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= -github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= -github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= -github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= -github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= -github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= -github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= -github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc= -github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gofrs/flock v0.12.0 h1:xHW8t8GPAiGtqz7KxiSqfOEXwpOaqhpYZrTE2MQBgXY= -github.com/gofrs/flock v0.12.0/go.mod h1:FirDy1Ing0mI2+kB6wk+vyyAH+e6xiE+EYA0jnzV9jc= -github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= -github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= -github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= -github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= -github.com/golangci/golangci-lint v1.59.1 h1:CRRLu1JbhK5avLABFJ/OHVSQ0Ie5c4ulsOId1h3TTks= -github.com/golangci/golangci-lint v1.59.1/go.mod h1:jX5Oif4C7P0j9++YB2MMJmoNrb01NJ8ITqKWNLewThg= -github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= -github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= -github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= -github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= -github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= -github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= -github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= -github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= -github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= -github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= -github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= -github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= -github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= -github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= -github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= -github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= -github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= -github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= -github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-cty-funcs v0.0.0-20230405223818-a090f58aa992 h1:fYOrSfO5C9PmFGtmRWSYGqq52SOoE2dXMtAn2Xzh1LQ= -github.com/hashicorp/go-cty-funcs v0.0.0-20230405223818-a090f58aa992/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= -github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= -github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= -github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= -github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= -github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= -github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= -github.com/hashicorp/vault/api v1.12.0 h1:meCpJSesvzQyao8FCOgk2fGdoADAnbDu2WPJN1lDLJ4= -github.com/hashicorp/vault/api v1.12.0/go.mod h1:si+lJCYO7oGkIoNPAN8j3azBLTn9SjMGS+jFaHd1Cck= -github.com/hexops/autogold v1.3.0 h1:IEtGNPxBeBu8RMn8eKWh/Ll9dVNgSnJ7bp/qHgMQ14o= -github.com/hexops/autogold v1.3.0/go.mod h1:d4hwi2rid66Sag+BVuHgwakW/EmaFr8vdTSbWDbrDRI= -github.com/hexops/autogold/v2 v2.2.1 h1:JPUXuZQGkcQMv7eeDXuNMovjfoRYaa0yVcm+F3voaGY= -github.com/hexops/autogold/v2 v2.2.1/go.mod h1:IJwxtUfj1BGLm0YsR/k+dIxYi6xbeLjqGke2bzcOTMI= -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= -github.com/hexops/valast v1.4.4 h1:rETyycw+/L2ZVJHHNxEBgh8KUn+87WugH9MxcEv9PGs= -github.com/hexops/valast v1.4.4/go.mod h1:Jcy1pNH7LNraVaAZDLyv21hHg2WBv9Nf9FL6fGxU7o4= -github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= -github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02 h1:AgcIVYPa6XJnU3phs104wLj8l5GEththEw6+F79YsIY= -github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd h1:anPrsicrIi2ColgWTVPk+TrN42hJIWlfPHSBP9S0ZkM= -github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= -github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= -github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8 h1:CZkYfurY6KGhVtlalI4QwQ6T0Cu6iuY3e0x5RLu96WE= -github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d h1:jRQLvyVGL+iVtDElaEIDdKwpPqUIZJfzkNLV34htpEc= -github.com/jinzhu/inflection v0.0.0-20170102125226-1c35d901db3d/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jjti/go-spancheck v0.6.1 h1:ZK/wE5Kyi1VX3PJpUO2oEgeoI4FWOUm7Shb2Gbv5obI= -github.com/jjti/go-spancheck v0.6.1/go.mod h1:vF1QkOO159prdo6mHRxak2CpzDpHAfKiPUDP/NeRnX8= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= -github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= -github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= -github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= -github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= -github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= -github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= -github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= -github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I= -github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0= -github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= -github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= -github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= -github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= -github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= -github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= -github.com/lib/pq v0.0.0-20150723085316-0dad96c0b94f/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/liquidgecka/testlib v0.0.0-20180123051607-561e6b271c63 h1:E1gsAMD4TysLS1Vt2CGR1EK/RtNPIT7YkiVOy9PS1IM= -github.com/liquidgecka/testlib v0.0.0-20180123051607-561e6b271c63/go.mod h1:vwMPvLIhXhkJaBfsk/6l+eDuiQaIVHC0b6eCvUVBsB0= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= -github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= -github.com/magiconair/properties v1.5.3/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= -github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= -github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= -github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE= -github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg= -github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= -github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= -github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= -github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= -github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/buildkit v0.15.0 h1:vnZLThPr9JU6SvItctKoa6NfgPZ8oUApg/TCOaa/SVs= -github.com/moby/buildkit v0.15.0/go.mod h1:oN9S+8I7wF26vrqn9NuAF6dFSyGTfXvtiu9o1NlnnH4= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/moby v25.0.4+incompatible h1:vea1J80wDM5x5geaZSaywFkfFxLABJIQ3mmR4ewZGbU= -github.com/moby/moby v25.0.4+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= -github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= -github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= -github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= -github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= -github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= -github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= -github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= -github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= -github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= -github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= -github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= -github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= -github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= -github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= -github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= -github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nightlyone/lockfile v1.0.0 h1:RHep2cFKK4PonZJDdEl4GmkabuhbsRMgk/k3uAmxBiA= -github.com/nightlyone/lockfile v1.0.0/go.mod h1:rywoIealpdNse2r832aiD9jRk8ErCatROs6LzC841CI= -github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= -github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= -github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk= -github.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ= -github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= -github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -github.com/olareg/olareg v0.1.0 h1:1dXBOgPrig5N7zoXyIZVQqU0QBo6sD9pbL6UYjY75CA= -github.com/olareg/olareg v0.1.0/go.mod h1:RBuU7JW7SoIIxZKzLRhq8sVtQeAHzCAtRrXEBx2KlM4= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/ginkgo/v2 v2.17.3 h1:oJcvKpIb7/8uLpDDtnQuf18xVnwKp8DTD7DQ6gTd/MU= -github.com/onsi/ginkgo/v2 v2.17.3/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= -github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= -github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= -github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= -github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= -github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= -github.com/petar-dambovaliev/aho-corasick v0.0.0-20230725210150-fb29fc3c913e h1:POJco99aNgosh92lGqmx7L1ei+kCymivB/419SD15PQ= -github.com/petar-dambovaliev/aho-corasick v0.0.0-20230725210150-fb29fc3c913e/go.mod h1:EHPiTAKtiFmrMldLUNswFwfZ2eJIYBHktdaUTZxYWRw= -github.com/pgavlin/diff v0.0.0-20230503175810-113847418e2e h1:Or25BtWLCyWKjnLyuMDrQsc6VcCs1V2AiKdOnxHEeEk= -github.com/pgavlin/diff v0.0.0-20230503175810-113847418e2e/go.mod h1:WGwlmuPAiQTGQUjxyAfP7j4JgbgiFvFpI/qRtsQtS/4= -github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= -github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= -github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo= -github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE= -github.com/pgavlin/text v0.0.0-20230428184845-84c285f11d2f h1:TMx3Fq7JiybnvprFQ38/8V1T1GPgHEtsQmwscGpN1jc= -github.com/pgavlin/text v0.0.0-20230428184845-84c285f11d2f/go.mod h1:fk4+YyTLi0Ap0CsL1HA70/tAs6evqw3hbPGdR8rD/3E= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= -github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= -github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.5.2 h1:SJhVik3Umsjh7mte1vE0fVZ5T1gznasQG3PV7U5xFdA= -github.com/polyfloyd/go-errorlint v1.5.2/go.mod h1:sH1QC1pxxi0fFecsVIzBmxtrgd9IF/SkJpA6wqyKAJs= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= -github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= -github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+SobA= -github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= -github.com/pulumi/providertest v0.0.13 h1:9CAaoviOTuCVHDI15h3znXa5JsKYtXLYHIIdxOCzo3Y= -github.com/pulumi/providertest v0.0.13/go.mod h1:REAoaN+hGOtdWJGirfWYqcSjCejlbGfzyVTUuemJTuE= -github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet v0.0.0-20240624150732-fa777213effd h1:Ifc7JJZF0WVt+snPsDaEdkCcQXht2x/Hcw7GPnK5gvs= -github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet v0.0.0-20240624150732-fa777213effd/go.mod h1:poRLYpZlEjDr09kC2f50srI97hjjmNay55FBMl6ZHug= -github.com/pulumi/pulumi-go-provider v0.20.0 h1:dSpsqeSk0Dy2NRXRXwNk/x773mcAtHqAaDmUX+JPqUU= -github.com/pulumi/pulumi-go-provider v0.20.0/go.mod h1:yi/hjXmwwjt57wIqkdjaLww28t0/MwXML3BROYo18cg= -github.com/pulumi/pulumi-java/pkg v0.12.1-0.20240624103139-022406d291f4 h1:wK1GDGkIDSJB/tJ5wckctjsv0T1swcAeXY5n5FRNNjQ= -github.com/pulumi/pulumi-java/pkg v0.12.1-0.20240624103139-022406d291f4/go.mod h1:aVpF95s5iTCDUsrbxmCMnbc1h9b+oIdrlaAoP52mdXg= -github.com/pulumi/pulumi-yaml v1.9.1 h1:JPeI80M23SPactxgnCFS1casZlSr7ZhAXwSx4H55QQ4= -github.com/pulumi/pulumi-yaml v1.9.1/go.mod h1:OH0R34yJxA5u6zjYBN4JXcWoEvfkRoOVWi6viu8buoA= -github.com/pulumi/pulumi/pkg/v3 v3.123.1-0.20240711160144-b8226b705890 h1:fx6UbtFWpsm3Hls6bJ5gzO1EfAbAurmVnLBe94e89ho= -github.com/pulumi/pulumi/pkg/v3 v3.123.1-0.20240711160144-b8226b705890/go.mod h1:Tjrtb9HuGLvPHagkh/oIx7R+KFcnTzsfYIOEiYP54I4= -github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240701173611-2f4b26b68107 h1:GAQuBpO0yoIctkZOPTzA2jjB7KzPvRp55JeSRbmqY98= -github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240701173611-2f4b26b68107/go.mod h1:qXKEx1qMnJxeCrbS32hbcSV7P6cKA7VIjh2NSV61jzc= -github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240711160144-b8226b705890 h1:xNiqqkMg1jBVQwJNquYhAgFZiPEKsHEDRiR72UsUlJs= -github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240711160144-b8226b705890/go.mod h1:6btSLjHqlXLLeBEi5ZI5WxExINcEzoWHD8c5M16Wvcg= -github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240701173611-2f4b26b68107 h1:tqskzpZEUpWekUJ8XPkwCfZU2Fn+k1SSh6NRFJmFLWk= -github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240701173611-2f4b26b68107/go.mod h1:BUnTUyNil1JTFq839t38MmcC/RUN3y5S3dSVfDoAbCY= -github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240711160144-b8226b705890 h1:QOEMSmwdg3OLSC0rmCeLWBw98r3AdmFcbVPwwMmRHMI= -github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240711160144-b8226b705890/go.mod h1:orq0O3OoKgq3OFmascBdCvJufjb2Nbzql/aSZXHJ75E= -github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240701173611-2f4b26b68107 h1:LBSXl00gUGjEJOj7zEY+H/d7ol7jEFkEudh+17eNwlY= -github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240701173611-2f4b26b68107/go.mod h1:q4KtGz7GxVA1tvIp1q9dJ1drlgTxz69AaVc6zCJzQ9w= -github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240711160144-b8226b705890 h1:r6/LVnQfLE3MsZzYxRe2wvycPCODjcWGCeSRub4FNkQ= -github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240711160144-b8226b705890/go.mod h1:TOkX1I+j97kZdBagyK2xN7MuL+j58Q2O4Zla/m+VAmA= -github.com/pulumi/pulumi/sdk/v3 v3.123.1-0.20240711160144-b8226b705890 h1:CBiyYJ+vERIeud6v8649a/VbU0sPGTmUAtJRovGW6Wc= -github.com/pulumi/pulumi/sdk/v3 v3.123.1-0.20240711160144-b8226b705890/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= -github.com/quasilyte/go-ruleguard v0.4.2 h1:htXcXDK6/rO12kiTHKfHuqR4kr3Y4M0J0rOL6CH/BYs= -github.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= -github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= -github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= -github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= -github.com/regclient/regclient v0.6.1 h1:4PxrGxMXrLpPrSaet8QZl568CVOolyHyukLL9UyogoU= -github.com/regclient/regclient v0.6.1/go.mod h1:hCKbRHYMx6LJntAhXzWVV7Oxyn9DzNVJoOKJaSnU5BM= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.3.2 h1:CuG27ulzEB1Gu5Dk5gP8PFxSOZ3ptSdP5iI/3IXxM18= -github.com/ryancurrah/gomodguard v1.3.2/go.mod h1:LqdemiFomEjcxOqirbQCb3JFvSxH2JUYMerTFd3sF2o= -github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= -github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= -github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= -github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= -github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= -github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= -github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.26.0 h1:LONR2hNVKxRmzIrZR0PhSF3mhCAzvnr+DcUiHgREfXE= -github.com/sashamelentyev/usestdlibvars v1.26.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= -github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= -github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs= -github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 h1:rnO6Zp1YMQwv8AyxzuwsVohljJgp4L0ZqiCgtACsPsc= -github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9/go.mod h1:dg7lPlu/xK/Ut9SedURCoZbVCR4yC7fM65DtH9/CDHs= -github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc= -github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= -github.com/segmentio/encoding v0.3.5 h1:UZEiaZ55nlXGDL92scoVuw00RmiRCazIEmvPSbSvt8Y= -github.com/segmentio/encoding v0.3.5/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b h1:h+3JX2VoWTFuyQEo87pStk/a99dzIO1mM9KxIyLPGTU= -github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= -github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= -github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= -github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= -github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= -github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= -github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= -github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= -github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= -github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= -github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= -github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= -github.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 h1:8ZnTA26bBOoPkAbbitKPgNlpw0Bwt7ZlpYgZWHWJR/w= -github.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:tNZjgbYncKL5HxvDULAr/mWDmFz4B7H8yrXEDlnoIiw= -github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= -github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY= -github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v0.0.0-20150530192845-be5ff3e4840c/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= -github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= -github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= -github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= -github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.16 h1:4ChfhveiNLk4NveAZ9Pu2AN8QZ2nkUGFuadM9lrr5D0= -github.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= -github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= -github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= -github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= -github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= -github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= -github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= -github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= -github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= -github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tomarrell/wrapcheck/v2 v2.8.3 h1:5ov+Cbhlgi7s/a42BprYoxsr73CbdMUTzE3bRDFASUs= -github.com/tomarrell/wrapcheck/v2 v2.8.3/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= -github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= -github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= -github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c h1:+6wg/4ORAbnSoGDzg2Q1i3CeMcT/jjhye/ZfnBHy7/M= -github.com/tonistiigi/fsutil v0.0.0-20240424095704-91a3fc46842c/go.mod h1:vbbYqJlnswsbJqWUcJN8fKtBhnEgldDrcagTgnBVKKM= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 h1:7I5c2Ig/5FgqkYOh/N87NzoyI9U15qUPXhDD8uCupv8= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= -github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= -github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= -github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= -github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= -github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= -github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= -github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= -github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= -github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= -github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= -github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ= -github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= -github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= -github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= -github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= -github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= -github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= -github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= -github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= -github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= -github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= -github.com/yuin/goldmark v1.5.2/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os= -github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= -github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= -github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zclconf/go-cty v1.4.0/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ= -github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= -github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= -gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= -gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= -go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= -go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs= -go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM= -go-simpler.org/sloglint v0.7.1 h1:qlGLiqHbN5islOxjeLXoPtUdZXb669RW+BDQ+xOSNoU= -go-simpler.org/sloglint v0.7.1/go.mod h1:OlaVDRh/FKKd4X4sIMbsz8st97vomydceL146Fthh/c= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 h1:gbhw/u49SS3gkPWiYweQNJGm/uJN5GkI/FrosxSHT7A= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1/go.mod h1:GnOaBaFQ2we3b9AGWJpsBa7v1S5RlQzlC3O7dRMxZhM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 h1:ZtfnDL+tUrs1F0Pzfwbg2d59Gru9NCH3bgSHBM6LDwU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0/go.mod h1:hG4Fj/y8TR/tlEDREo8tWstl9fO9gcFkn4xrx0Io8xU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 h1:NmnYCiR0qNufkldjVvyQfZTHSdzeHoZ41zggMsdMcLM= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0/go.mod h1:UVAO61+umUsHLtYb8KXXRoHtxUkdOPkYidzW3gipRLQ= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 h1:wNMDy/LVGLj2h3p6zg4d0gypKfWKSWI14E1C4smOgl8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0/go.mod h1:YfbDdXAAkemWJK3H/DshvlrxqFB2rtW4rY6ky/3x/H0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= -go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.pennock.tech/tabular v1.1.3 h1:JYN3TdVkTjOWdZz2FwKcW7f69vRhPl4NAQqJ8RZAsmY= -go.pennock.tech/tabular v1.1.3/go.mod h1:UzyxF5itNqTCS1ZGXfwDwbFgYj/lS+e67Fid68QOYZ0= -go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= -go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -gocloud.dev v0.37.0 h1:XF1rN6R0qZI/9DYjN16Uy0durAmSlf58DHOcb28GPro= -gocloud.dev v0.37.0/go.mod h1:7/O4kqdInCNsc6LqgmuFnS0GRew4XNNYWpA44yQnwco= -gocloud.dev/secrets/hashivault v0.37.0 h1:5ehGtUBP29DFAgAs6bPw7fVSgqQ3TxaoK2xVcLp1x+c= -gocloud.dev/secrets/hashivault v0.37.0/go.mod h1:4ClUWjBfP8wLdGts56acjHz3mWLuATMoH9vi74FjIv8= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= -golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s= -google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= -gopkg.in/cenkalti/backoff.v2 v2.2.1/go.mod h1:S0QdOvT2AlerfSBkp0O+dk+bbIMaNbEmVk876gPCthU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1 h1:d4KQkxAaAiRY2h5Zqis161Pv91A37uZyJOx73duwUwM= -gopkg.in/rethinkdb/rethinkdb-go.v6 v6.2.1/go.mod h1:WbjuEoo1oadwzQ4apSDU+JTvmllEHtsNHS6y7vFc7iw= -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/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs= -honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= -k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= -lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= -mvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo= -mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA= -mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= -mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/provider/cmd/pulumi-resource-docker-build/main.go b/provider/cmd/pulumi-resource-docker-build/main.go deleted file mode 100644 index e6dfaed..0000000 --- a/provider/cmd/pulumi-resource-docker-build/main.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package main invokes the provider as a gRPC server and runs forever. -package main - -import ( - "github.com/pulumi/pulumi-docker-build/provider" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil" -) - -func main() { - err := provider.Serve() - if err != nil { - cmdutil.ExitError(err.Error()) - } -} diff --git a/provider/cmd/pulumi-resource-docker-build/schema.json b/provider/cmd/pulumi-resource-docker-build/schema.json deleted file mode 100644 index cb346e7..0000000 --- a/provider/cmd/pulumi-resource-docker-build/schema.json +++ /dev/null @@ -1,1463 +0,0 @@ -{ - "name": "docker-build", - "displayName": "docker-build", - "description": "A Pulumi provider for building modern Docker images with buildx and BuildKit.", - "keywords": [ - "docker", - "buildkit", - "buildx", - "kind/native" - ], - "homepage": "https://pulumi.com", - "license": "Apache-2.0", - "repository": "https://github.com/pulumi/pulumi-docker-build", - "publisher": "Pulumi", - "meta": { - "moduleFormat": "(.*)" - }, - "language": { - "csharp": { - "packageReferences": { - "Pulumi": "3.*" - }, - "respectSchemaVersion": true - }, - "go": { - "importBasePath": "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild", - "packageImportAliases": { - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild": "dockerbuild" - }, - "respectSchemaVersion": true, - "generics": "side-by-side" - }, - "java": { - "basePackage": "", - "buildFiles": "gradle", - "dependencies": { - "com.google.code.findbugs:jsr305": "3.0.2", - "com.google.code.gson:gson": "2.8.9", - "com.pulumi:pulumi": "0.9.9" - }, - "gradleNexusPublishPluginVersion": "1.1.0", - "gradleTest": "" - }, - "nodejs": { - "dependencies": { - "@pulumi/pulumi": "^3.0.0" - }, - "respectSchemaVersion": true - }, - "python": { - "requires": { - "pulumi": ">=3.0.0,<4.0.0" - }, - "respectSchemaVersion": true, - "pyproject": { - "enabled": true - } - } - }, - "config": { - "variables": { - "host": { - "type": "string", - "description": "The build daemon's address.", - "default": "", - "defaultInfo": { - "environment": [ - "DOCKER_HOST" - ] - } - }, - "registries": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Registry" - } - } - } - }, - "types": { - "docker-build:index:BuildContext": { - "properties": { - "location": { - "type": "string", - "description": "Resources to use for build context.\n\nThe location can be:\n* A relative or absolute path to a local directory (`.`, `./app`,\n `/app`, etc.).\n* A remote URL of a Git repository, tarball, or plain text file\n (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,\n etc.)." - }, - "named": { - "type": "object", - "additionalProperties": { - "$ref": "#/types/docker-build:index:Context" - }, - "description": "Additional build contexts to use.\n\nThese contexts are accessed with `FROM name` or `--from=name`\nstatements when using Dockerfile 1.4+ syntax.\n\nValues can be local paths, HTTP URLs, or `docker-image://` images." - } - }, - "type": "object", - "required": [ - "location" - ] - }, - "docker-build:index:BuilderConfig": { - "properties": { - "name": { - "type": "string", - "description": "Name of an existing buildx builder to use.\n\nOnly `docker-container`, `kubernetes`, or `remote` drivers are\nsupported. The legacy `docker` driver is not supported.\n\nEquivalent to Docker's `--builder` flag." - } - }, - "type": "object" - }, - "docker-build:index:CacheFrom": { - "properties": { - "azblob": { - "$ref": "#/types/docker-build:index:CacheFromAzureBlob", - "description": "Upload build caches to Azure's blob storage service." - }, - "disabled": { - "type": "boolean", - "description": "When `true` this entry will be excluded. Defaults to `false`." - }, - "gha": { - "$ref": "#/types/docker-build:index:CacheFromGitHubActions", - "description": "Recommended for use with GitHub Actions workflows.\n\nAn action like `crazy-max/ghaction-github-runtime` is recommended to\nexpose appropriate credentials to your GitHub workflow." - }, - "local": { - "$ref": "#/types/docker-build:index:CacheFromLocal", - "description": "A simple backend which caches images on your local filesystem." - }, - "raw": { - "type": "string", - "description": "A raw string as you would provide it to the Docker CLI (e.g.,\n`type=inline`)." - }, - "registry": { - "$ref": "#/types/docker-build:index:CacheFromRegistry", - "description": "Upload build caches to remote registries." - }, - "s3": { - "$ref": "#/types/docker-build:index:CacheFromS3", - "description": "Upload build caches to AWS S3 or an S3-compatible services such as\nMinIO." - } - }, - "type": "object" - }, - "docker-build:index:CacheFromAzureBlob": { - "properties": { - "accountUrl": { - "type": "string", - "description": "Base URL of the storage account." - }, - "name": { - "type": "string", - "description": "The name of the cache image." - }, - "secretAccessKey": { - "type": "string", - "description": "Blob storage account key.", - "secret": true - } - }, - "type": "object", - "required": [ - "name" - ] - }, - "docker-build:index:CacheFromGitHubActions": { - "properties": { - "scope": { - "type": "string", - "description": "The scope to use for cache keys. Defaults to `buildkit`.\n\nThis should be set if building and caching multiple images in one\nworkflow, otherwise caches will overwrite each other.", - "default": "", - "defaultInfo": { - "environment": [ - "buildkit" - ] - } - }, - "token": { - "type": "string", - "description": "The GitHub Actions token to use. This is not a personal access tokens\nand is typically generated automatically as part of each job.\n\nDefaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like\n`crazy-max/ghaction-github-runtime` is recommended to expose this\nenvironment variable to your jobs.", - "default": "", - "defaultInfo": { - "environment": [ - "ACTIONS_RUNTIME_TOKEN" - ] - }, - "secret": true - }, - "url": { - "type": "string", - "description": "The cache server URL to use for artifacts.\n\nDefaults to `$ACTIONS_CACHE_URL`, although a separate action like\n`crazy-max/ghaction-github-runtime` is recommended to expose this\nenvironment variable to your jobs.", - "default": "", - "defaultInfo": { - "environment": [ - "ACTIONS_CACHE_URL" - ] - } - } - }, - "type": "object" - }, - "docker-build:index:CacheFromLocal": { - "properties": { - "digest": { - "type": "string", - "description": "Digest of manifest to import." - }, - "src": { - "type": "string", - "description": "Path of the local directory where cache gets imported from." - } - }, - "type": "object", - "required": [ - "src" - ] - }, - "docker-build:index:CacheFromRegistry": { - "properties": { - "ref": { - "type": "string", - "description": "Fully qualified name of the cache image to import." - } - }, - "type": "object", - "required": [ - "ref" - ] - }, - "docker-build:index:CacheFromS3": { - "properties": { - "accessKeyId": { - "type": "string", - "description": "Defaults to `$AWS_ACCESS_KEY_ID`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_ACCESS_KEY_ID" - ] - } - }, - "blobsPrefix": { - "type": "string", - "description": "Prefix to prepend to blob filenames." - }, - "bucket": { - "type": "string", - "description": "Name of the S3 bucket." - }, - "endpointUrl": { - "type": "string", - "description": "Endpoint of the S3 bucket." - }, - "manifestsPrefix": { - "type": "string", - "description": "Prefix to prepend on manifest filenames." - }, - "name": { - "type": "string", - "description": "Name of the cache image." - }, - "region": { - "type": "string", - "description": "The geographic location of the bucket. Defaults to `$AWS_REGION`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_REGION" - ] - } - }, - "secretAccessKey": { - "type": "string", - "description": "Defaults to `$AWS_SECRET_ACCESS_KEY`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_SECRET_ACCESS_KEY" - ] - }, - "secret": true - }, - "sessionToken": { - "type": "string", - "description": "Defaults to `$AWS_SESSION_TOKEN`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_SESSION_TOKEN" - ] - }, - "secret": true - }, - "usePathStyle": { - "type": "boolean", - "description": "Uses `bucket` in the URL instead of hostname when `true`." - } - }, - "type": "object", - "required": [ - "bucket", - "region" - ] - }, - "docker-build:index:CacheMode": { - "type": "string", - "enum": [ - { - "description": "Only layers that are exported into the resulting image are cached.", - "value": "min" - }, - { - "description": "All layers are cached, even those of intermediate steps.", - "value": "max" - } - ] - }, - "docker-build:index:CacheTo": { - "properties": { - "azblob": { - "$ref": "#/types/docker-build:index:CacheToAzureBlob", - "description": "Push cache to Azure's blob storage service." - }, - "disabled": { - "type": "boolean", - "description": "When `true` this entry will be excluded. Defaults to `false`." - }, - "gha": { - "$ref": "#/types/docker-build:index:CacheToGitHubActions", - "description": "Recommended for use with GitHub Actions workflows.\n\nAn action like `crazy-max/ghaction-github-runtime` is recommended to\nexpose appropriate credentials to your GitHub workflow." - }, - "inline": { - "$ref": "#/types/docker-build:index:CacheToInline", - "description": "The inline cache storage backend is the simplest implementation to get\nstarted with, but it does not handle multi-stage builds. Consider the\n`registry` cache backend instead." - }, - "local": { - "$ref": "#/types/docker-build:index:CacheToLocal", - "description": "A simple backend which caches imagines on your local filesystem." - }, - "raw": { - "type": "string", - "description": "A raw string as you would provide it to the Docker CLI (e.g.,\n`type=inline`)" - }, - "registry": { - "$ref": "#/types/docker-build:index:CacheToRegistry", - "description": "Push caches to remote registries. Incompatible with the `docker` build\ndriver." - }, - "s3": { - "$ref": "#/types/docker-build:index:CacheToS3", - "description": "Push cache to AWS S3 or S3-compatible services such as MinIO." - } - }, - "type": "object" - }, - "docker-build:index:CacheToAzureBlob": { - "properties": { - "accountUrl": { - "type": "string", - "description": "Base URL of the storage account." - }, - "ignoreError": { - "type": "boolean", - "description": "Ignore errors caused by failed cache exports.", - "default": false - }, - "mode": { - "$ref": "#/types/docker-build:index:CacheMode", - "description": "The cache mode to use. Defaults to `min`.", - "default": "min" - }, - "name": { - "type": "string", - "description": "The name of the cache image." - }, - "secretAccessKey": { - "type": "string", - "description": "Blob storage account key.", - "secret": true - } - }, - "type": "object", - "required": [ - "name" - ] - }, - "docker-build:index:CacheToGitHubActions": { - "properties": { - "ignoreError": { - "type": "boolean", - "description": "Ignore errors caused by failed cache exports.", - "default": false - }, - "mode": { - "$ref": "#/types/docker-build:index:CacheMode", - "description": "The cache mode to use. Defaults to `min`.", - "default": "min" - }, - "scope": { - "type": "string", - "description": "The scope to use for cache keys. Defaults to `buildkit`.\n\nThis should be set if building and caching multiple images in one\nworkflow, otherwise caches will overwrite each other.", - "default": "", - "defaultInfo": { - "environment": [ - "buildkit" - ] - } - }, - "token": { - "type": "string", - "description": "The GitHub Actions token to use. This is not a personal access tokens\nand is typically generated automatically as part of each job.\n\nDefaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like\n`crazy-max/ghaction-github-runtime` is recommended to expose this\nenvironment variable to your jobs.", - "default": "", - "defaultInfo": { - "environment": [ - "ACTIONS_RUNTIME_TOKEN" - ] - }, - "secret": true - }, - "url": { - "type": "string", - "description": "The cache server URL to use for artifacts.\n\nDefaults to `$ACTIONS_CACHE_URL`, although a separate action like\n`crazy-max/ghaction-github-runtime` is recommended to expose this\nenvironment variable to your jobs.", - "default": "", - "defaultInfo": { - "environment": [ - "ACTIONS_CACHE_URL" - ] - } - } - }, - "type": "object" - }, - "docker-build:index:CacheToInline": { - "description": "Include an inline cache with the exported image.", - "type": "object" - }, - "docker-build:index:CacheToLocal": { - "properties": { - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "dest": { - "type": "string", - "description": "Path of the local directory to export the cache." - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "ignoreError": { - "type": "boolean", - "description": "Ignore errors caused by failed cache exports.", - "default": false - }, - "mode": { - "$ref": "#/types/docker-build:index:CacheMode", - "description": "The cache mode to use. Defaults to `min`.", - "default": "min" - } - }, - "type": "object", - "required": [ - "dest" - ] - }, - "docker-build:index:CacheToRegistry": { - "properties": { - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "ignoreError": { - "type": "boolean", - "description": "Ignore errors caused by failed cache exports.", - "default": false - }, - "imageManifest": { - "type": "boolean", - "description": "Export cache manifest as an OCI-compatible image manifest instead of a\nmanifest list. Requires `ociMediaTypes` to also be `true`.\n\nSome registries like AWS ECR will not work with caching if this is\n`false`.\n\nDefaults to `false` to match Docker's default behavior.", - "default": false - }, - "mode": { - "$ref": "#/types/docker-build:index:CacheMode", - "description": "The cache mode to use. Defaults to `min`.", - "default": "min" - }, - "ociMediaTypes": { - "type": "boolean", - "description": "Whether to use OCI media types in exported manifests. Defaults to\n`true`.", - "default": true - }, - "ref": { - "type": "string", - "description": "Fully qualified name of the cache image to import." - } - }, - "type": "object", - "required": [ - "ref" - ] - }, - "docker-build:index:CacheToS3": { - "properties": { - "accessKeyId": { - "type": "string", - "description": "Defaults to `$AWS_ACCESS_KEY_ID`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_ACCESS_KEY_ID" - ] - } - }, - "blobsPrefix": { - "type": "string", - "description": "Prefix to prepend to blob filenames." - }, - "bucket": { - "type": "string", - "description": "Name of the S3 bucket." - }, - "endpointUrl": { - "type": "string", - "description": "Endpoint of the S3 bucket." - }, - "ignoreError": { - "type": "boolean", - "description": "Ignore errors caused by failed cache exports.", - "default": false - }, - "manifestsPrefix": { - "type": "string", - "description": "Prefix to prepend on manifest filenames." - }, - "mode": { - "$ref": "#/types/docker-build:index:CacheMode", - "description": "The cache mode to use. Defaults to `min`.", - "default": "min" - }, - "name": { - "type": "string", - "description": "Name of the cache image." - }, - "region": { - "type": "string", - "description": "The geographic location of the bucket. Defaults to `$AWS_REGION`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_REGION" - ] - } - }, - "secretAccessKey": { - "type": "string", - "description": "Defaults to `$AWS_SECRET_ACCESS_KEY`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_SECRET_ACCESS_KEY" - ] - }, - "secret": true - }, - "sessionToken": { - "type": "string", - "description": "Defaults to `$AWS_SESSION_TOKEN`.", - "default": "", - "defaultInfo": { - "environment": [ - "AWS_SESSION_TOKEN" - ] - }, - "secret": true - }, - "usePathStyle": { - "type": "boolean", - "description": "Uses `bucket` in the URL instead of hostname when `true`." - } - }, - "type": "object", - "required": [ - "bucket", - "region" - ] - }, - "docker-build:index:CompressionType": { - "type": "string", - "enum": [ - { - "description": "Use `gzip` for compression.", - "value": "gzip" - }, - { - "description": "Use `estargz` for compression.", - "value": "estargz" - }, - { - "description": "Use `zstd` for compression.", - "value": "zstd" - } - ] - }, - "docker-build:index:Context": { - "properties": { - "location": { - "type": "string", - "description": "Resources to use for build context.\n\nThe location can be:\n* A relative or absolute path to a local directory (`.`, `./app`,\n `/app`, etc.).\n* A remote URL of a Git repository, tarball, or plain text file\n (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`,\n etc.)." - } - }, - "type": "object", - "required": [ - "location" - ] - }, - "docker-build:index:Dockerfile": { - "properties": { - "inline": { - "type": "string", - "description": "Raw Dockerfile contents.\n\nConflicts with `location`.\n\nEquivalent to invoking Docker with `-f -`." - }, - "location": { - "type": "string", - "description": "Location of the Dockerfile to use.\n\nCan be a relative or absolute path to a local file, or a remote URL.\n\nDefaults to `${context.location}/Dockerfile` if context is on-disk.\n\nConflicts with `inline`." - } - }, - "type": "object" - }, - "docker-build:index:Export": { - "properties": { - "cacheonly": { - "$ref": "#/types/docker-build:index:ExportCacheOnly", - "description": "A no-op export. Helpful for silencing the 'no exports' warning if you\njust want to populate caches." - }, - "disabled": { - "type": "boolean", - "description": "When `true` this entry will be excluded. Defaults to `false`." - }, - "docker": { - "$ref": "#/types/docker-build:index:ExportDocker", - "description": "Export as a Docker image layout." - }, - "image": { - "$ref": "#/types/docker-build:index:ExportImage", - "description": "Outputs the build result into a container image format." - }, - "local": { - "$ref": "#/types/docker-build:index:ExportLocal", - "description": "Export to a local directory as files and directories." - }, - "oci": { - "$ref": "#/types/docker-build:index:ExportOCI", - "description": "Identical to the Docker exporter but uses OCI media types by default." - }, - "raw": { - "type": "string", - "description": "A raw string as you would provide it to the Docker CLI (e.g.,\n`type=docker`)" - }, - "registry": { - "$ref": "#/types/docker-build:index:ExportRegistry", - "description": "Identical to the Image exporter, but pushes by default." - }, - "tar": { - "$ref": "#/types/docker-build:index:ExportTar", - "description": "Export to a local directory as a tarball." - } - }, - "type": "object" - }, - "docker-build:index:ExportCacheOnly": { - "type": "object" - }, - "docker-build:index:ExportDocker": { - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach an arbitrary key/value annotation to the image." - }, - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "dest": { - "type": "string", - "description": "The local export path." - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify images names to export. This is overridden if tags are already specified." - }, - "ociMediaTypes": { - "type": "boolean", - "description": "Use OCI media types in exporter manifests.", - "default": false - }, - "tar": { - "type": "boolean", - "description": "Bundle the output into a tarball layout.", - "default": true - } - }, - "type": "object" - }, - "docker-build:index:ExportImage": { - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach an arbitrary key/value annotation to the image." - }, - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "danglingNamePrefix": { - "type": "string", - "description": "Name image with `prefix@`, used for anonymous images." - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "insecure": { - "type": "boolean", - "description": "Allow pushing to an insecure registry." - }, - "nameCanonical": { - "type": "boolean", - "description": "Add additional canonical name (`name@`)." - }, - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify images names to export. This is overridden if tags are already specified." - }, - "ociMediaTypes": { - "type": "boolean", - "description": "Use OCI media types in exporter manifests.", - "default": false - }, - "push": { - "type": "boolean", - "description": "Push after creating the image. Defaults to `false`." - }, - "pushByDigest": { - "type": "boolean", - "description": "Push image without name." - }, - "store": { - "type": "boolean", - "description": "Store resulting images to the worker's image store and ensure all of\nits blobs are in the content store.\n\nDefaults to `true`.\n\nIgnored if the worker doesn't have image store (when using OCI workers,\nfor example).", - "default": true - }, - "unpack": { - "type": "boolean", - "description": "Unpack image after creation (for use with containerd). Defaults to\n`false`." - } - }, - "type": "object" - }, - "docker-build:index:ExportLocal": { - "properties": { - "dest": { - "type": "string", - "description": "Output path." - } - }, - "type": "object", - "required": [ - "dest" - ] - }, - "docker-build:index:ExportOCI": { - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach an arbitrary key/value annotation to the image." - }, - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "dest": { - "type": "string", - "description": "The local export path." - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify images names to export. This is overridden if tags are already specified." - }, - "ociMediaTypes": { - "type": "boolean", - "description": "Use OCI media types in exporter manifests.", - "default": true - }, - "tar": { - "type": "boolean", - "description": "Bundle the output into a tarball layout.", - "default": true - } - }, - "type": "object" - }, - "docker-build:index:ExportRegistry": { - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach an arbitrary key/value annotation to the image." - }, - "compression": { - "$ref": "#/types/docker-build:index:CompressionType", - "description": "The compression type to use.", - "default": "gzip" - }, - "compressionLevel": { - "type": "integer", - "description": "Compression level from 0 to 22.", - "default": 0 - }, - "danglingNamePrefix": { - "type": "string", - "description": "Name image with `prefix@`, used for anonymous images." - }, - "forceCompression": { - "type": "boolean", - "description": "Forcefully apply compression.", - "default": false - }, - "insecure": { - "type": "boolean", - "description": "Allow pushing to an insecure registry." - }, - "nameCanonical": { - "type": "boolean", - "description": "Add additional canonical name (`name@`)." - }, - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify images names to export. This is overridden if tags are already specified." - }, - "ociMediaTypes": { - "type": "boolean", - "description": "Use OCI media types in exporter manifests.", - "default": false - }, - "push": { - "type": "boolean", - "description": "Push after creating the image. Defaults to `true`.", - "default": true - }, - "pushByDigest": { - "type": "boolean", - "description": "Push image without name." - }, - "store": { - "type": "boolean", - "description": "Store resulting images to the worker's image store and ensure all of\nits blobs are in the content store.\n\nDefaults to `true`.\n\nIgnored if the worker doesn't have image store (when using OCI workers,\nfor example).", - "default": true - }, - "unpack": { - "type": "boolean", - "description": "Unpack image after creation (for use with containerd). Defaults to\n`false`." - } - }, - "type": "object" - }, - "docker-build:index:ExportTar": { - "properties": { - "dest": { - "type": "string", - "description": "Output path." - } - }, - "type": "object", - "required": [ - "dest" - ] - }, - "docker-build:index:NetworkMode": { - "type": "string", - "enum": [ - { - "description": "The default sandbox network mode.", - "value": "default" - }, - { - "description": "Host network mode.", - "value": "host" - }, - { - "description": "Disable network access.", - "value": "none" - } - ] - }, - "docker-build:index:Platform": { - "type": "string", - "enum": [ - { - "value": "darwin/386" - }, - { - "value": "darwin/amd64" - }, - { - "value": "darwin/arm" - }, - { - "value": "darwin/arm64" - }, - { - "value": "dragonfly/amd64" - }, - { - "value": "freebsd/386" - }, - { - "value": "freebsd/amd64" - }, - { - "value": "freebsd/arm" - }, - { - "value": "linux/386" - }, - { - "value": "linux/amd64" - }, - { - "value": "linux/arm" - }, - { - "value": "linux/arm64" - }, - { - "value": "linux/mips64" - }, - { - "value": "linux/mips64le" - }, - { - "value": "linux/ppc64le" - }, - { - "value": "linux/riscv64" - }, - { - "value": "linux/s390x" - }, - { - "value": "netbsd/386" - }, - { - "value": "netbsd/amd64" - }, - { - "value": "netbsd/arm" - }, - { - "value": "openbsd/386" - }, - { - "value": "openbsd/amd64" - }, - { - "value": "openbsd/arm" - }, - { - "value": "plan9/386" - }, - { - "value": "plan9/amd64" - }, - { - "value": "solaris/amd64" - }, - { - "value": "windows/386" - }, - { - "value": "windows/amd64" - } - ] - }, - "docker-build:index:Registry": { - "properties": { - "address": { - "type": "string", - "description": "The registry's address (e.g. \"docker.io\")." - }, - "password": { - "type": "string", - "description": "Password or token for the registry.", - "secret": true - }, - "username": { - "type": "string", - "description": "Username for the registry." - } - }, - "type": "object", - "required": [ - "address" - ] - }, - "docker-build:index:SSH": { - "properties": { - "id": { - "type": "string", - "description": "Useful for distinguishing different servers that are part of the same\nbuild.\n\nA value of `default` is appropriate if only dealing with a single host." - }, - "paths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "SSH agent socket or private keys to expose to the build under the given\nidentifier.\n\nDefaults to `[$SSH_AUTH_SOCK]`.\n\nNote that your keys are **not** automatically added when using an\nagent. Run `ssh-add -l` locally to confirm which public keys are\nvisible to the agent; these will be exposed to your build." - } - }, - "type": "object", - "required": [ - "id" - ] - } - }, - "provider": { - "properties": { - "host": { - "type": "string", - "description": "The build daemon's address.", - "default": "", - "defaultInfo": { - "environment": [ - "DOCKER_HOST" - ] - } - } - }, - "type": "object", - "inputProperties": { - "host": { - "type": "string", - "description": "The build daemon's address.", - "default": "", - "defaultInfo": { - "environment": [ - "DOCKER_HOST" - ] - } - }, - "registries": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Registry" - } - } - } - }, - "resources": { - "docker-build:index:Image": { - "description": "A Docker image built using buildx -- Docker's interface to the improved\nBuildKit backend.\n\n## Stability\n\n**This resource is pre-1.0 and in public preview.**\n\nWe will strive to keep APIs and behavior as stable as possible, but we\ncannot guarantee stability until version 1.0.\n\n## Migrating Pulumi Docker v3 and v4 Image resources\n\nThis provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider.\nExisting `Image` resources can be converted to the docker-build `Image` resources with minor modifications.\n\n### Behavioral differences\n\nThere are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource.\n\n#### Previews\n\nVersion `3.x` of the Pulumi Docker provider always builds images during preview operations.\nThis is helpful as a safeguard to prevent \"broken\" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally.\n\nVersion `4.x` changed build-on-preview behavior to be opt-in.\nBy default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option.\nSeveral users reported outages due to the default behavior allowing bad images to accidentally sneak through CI.\n\nThe default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews.\nThis behavior can be changed by specifying `buildOnPreview`.\n\n#### Push behavior\n\nVersions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default.\nThey expose a `skipPush: true` option to disable pushing.\n\nThis provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default.\n\nTo 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`).\nLike 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.\n\n#### Secrets\n\nVersion `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field.\n\nVersion `4.x` of the Pulumi Docker provider does not support secrets.\n\nThe `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables.\nInstead, they should be passed directly as values.\n(Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).)\nPulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments.\n\n#### Caching\n\nVersion `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`.\nIt builds targets individually and pushes them to separate images for caching.\n\nVersion `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches.\n\nBoth versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior.\nThis can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc.\n\nThe `Image` resource delegates all caching behavior to Docker.\n`cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc.\n\n#### Outputs\n\nVersions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest.\nIn `4.x` this could also be a single sha256 hash if the image wasn't pushed.\n\nUnlike earlier providers the `Image` resource can push multiple tags.\nAs a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed.\nIf multiple tags were pushed this uses one at random.\n\nIf you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere.\n\n#### Tag deletion and refreshes\n\nVersions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations.\n\nThe `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist.\nIf any are missing a subsequent `update` will push them.\n\nWhen a `Image` is deleted, it will _attempt_ to also delete any pushed tags.\nDeletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular).\nManifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace.\n\nUse the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted.\n\n### Example migration\n\nExamples of \"fully-featured\" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration.\n\nThe `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`.\nAfter migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`.\nIn almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to.\n\nThe `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`.\nIt it is shown with parameters similar to the `v3` example for completeness.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### v3/v4 migration\n\n```typescript\n\n// v3 Image\nconst v3 = new docker.Image(\"v3-image\", {\n imageName: \"myregistry.com/user/repo:latest\",\n localImageName: \"local-tag\",\n skipPush: false,\n build: {\n dockerfile: \"./Dockerfile\",\n context: \"../app\",\n target: \"mytarget\",\n args: {\n MY_BUILD_ARG: \"foo\",\n },\n env: {\n DOCKER_BUILDKIT: \"1\",\n },\n extraOptions: [\n \"--cache-from\",\n \"type=registry,myregistry.com/user/repo:cache\",\n \"--cache-to\",\n \"type=registry,myregistry.com/user/repo:cache\",\n \"--add-host\",\n \"metadata.google.internal:169.254.169.254\",\n \"--secret\",\n \"id=mysecret,src=/local/secret\",\n \"--ssh\",\n \"default=/home/runner/.ssh/id_ed25519\",\n \"--network\",\n \"host\",\n \"--platform\",\n \"linux/amd64\",\n ],\n },\n registry: {\n server: \"myregistry.com\",\n username: \"username\",\n password: pulumi.secret(\"password\"),\n },\n});\n\n// v3 Image after migrating to docker-build.Image\nconst v3Migrated = new dockerbuild.Image(\"v3-to-buildx\", {\n tags: [\"myregistry.com/user/repo:latest\", \"local-tag\"],\n push: true,\n dockerfile: {\n location: \"./Dockerfile\",\n },\n context: {\n location: \"../app\",\n },\n target: \"mytarget\",\n buildArgs: {\n MY_BUILD_ARG: \"foo\",\n },\n cacheFrom: [{ registry: { ref: \"myregistry.com/user/repo:cache\" } }],\n cacheTo: [{ registry: { ref: \"myregistry.com/user/repo:cache\" } }],\n secrets: {\n mysecret: \"value\",\n },\n addHosts: [\"metadata.google.internal:169.254.169.254\"],\n ssh: {\n default: [\"/home/runner/.ssh/id_ed25519\"],\n },\n network: \"host\",\n platforms: [\"linux/amd64\"],\n registries: [{\n address: \"myregistry.com\",\n username: \"username\",\n password: pulumi.secret(\"password\"),\n }],\n});\n\n\n// v4 Image\nconst v4 = new docker.Image(\"v4-image\", {\n imageName: \"myregistry.com/user/repo:latest\",\n skipPush: false,\n build: {\n dockerfile: \"./Dockerfile\",\n context: \"../app\",\n target: \"mytarget\",\n args: {\n MY_BUILD_ARG: \"foo\",\n },\n cacheFrom: {\n images: [\"myregistry.com/user/repo:cache\"],\n },\n addHosts: [\"metadata.google.internal:169.254.169.254\"],\n network: \"host\",\n platform: \"linux/amd64\",\n },\n buildOnPreview: true,\n registry: {\n server: \"myregistry.com\",\n username: \"username\",\n password: pulumi.secret(\"password\"),\n },\n});\n\n// v4 Image after migrating to docker-build.Image\nconst v4Migrated = new dockerbuild.Image(\"v4-to-buildx\", {\n tags: [\"myregistry.com/user/repo:latest\"],\n push: true,\n dockerfile: {\n location: \"./Dockerfile\",\n },\n context: {\n location: \"../app\",\n },\n target: \"mytarget\",\n buildArgs: {\n MY_BUILD_ARG: \"foo\",\n },\n cacheFrom: [{ registry: { ref: \"myregistry.com/user/repo:cache\" } }],\n cacheTo: [{ registry: { ref: \"myregistry.com/user/repo:cache\" } }],\n addHosts: [\"metadata.google.internal:169.254.169.254\"],\n network: \"host\",\n platforms: [\"linux/amd64\"],\n registries: [{\n address: \"myregistry.com\",\n username: \"username\",\n password: pulumi.secret(\"password\"),\n }],\n});\n\n```\n\n{{% /example %}}\n\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Push to AWS ECR with caching\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst ecrRepository = new aws.ecr.Repository(\"ecr-repository\", {});\nconst authToken = aws.ecr.getAuthorizationTokenOutput({\n registryId: ecrRepository.registryId,\n});\nconst myImage = new docker_build.Image(\"my-image\", {\n cacheFrom: [{\n registry: {\n ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`,\n },\n }],\n cacheTo: [{\n registry: {\n imageManifest: true,\n ociMediaTypes: true,\n ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`,\n },\n }],\n context: {\n location: \"./app\",\n },\n push: true,\n registries: [{\n address: ecrRepository.repositoryUrl,\n password: authToken.apply(authToken => authToken.password),\n username: authToken.apply(authToken => authToken.userName),\n }],\n tags: [pulumi.interpolate`${ecrRepository.repositoryUrl}:latest`],\n});\nexport const ref = myImage.ref;\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_docker_build as docker_build\n\necr_repository = aws.ecr.Repository(\"ecr-repository\")\nauth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id)\nmy_image = docker_build.Image(\"my-image\",\n cache_from=[docker_build.CacheFromArgs(\n registry=docker_build.CacheFromRegistryArgs(\n ref=ecr_repository.repository_url.apply(lambda repository_url: f\"{repository_url}:cache\"),\n ),\n )],\n cache_to=[docker_build.CacheToArgs(\n registry=docker_build.CacheToRegistryArgs(\n image_manifest=True,\n oci_media_types=True,\n ref=ecr_repository.repository_url.apply(lambda repository_url: f\"{repository_url}:cache\"),\n ),\n )],\n context=docker_build.BuildContextArgs(\n location=\"./app\",\n ),\n push=True,\n registries=[docker_build.RegistryArgs(\n address=ecr_repository.repository_url,\n password=auth_token.password,\n username=auth_token.user_name,\n )],\n tags=[ecr_repository.repository_url.apply(lambda repository_url: f\"{repository_url}:latest\")])\npulumi.export(\"ref\", my_image.ref)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var ecrRepository = new Aws.Ecr.Repository(\"ecr-repository\");\n\n var authToken = Aws.Ecr.GetAuthorizationToken.Invoke(new()\n {\n RegistryId = ecrRepository.RegistryId,\n });\n\n var myImage = new DockerBuild.Image(\"my-image\", new()\n {\n CacheFrom = new[]\n {\n new DockerBuild.Inputs.CacheFromArgs\n {\n Registry = new DockerBuild.Inputs.CacheFromRegistryArgs\n {\n Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $\"{repositoryUrl}:cache\"),\n },\n },\n },\n CacheTo = new[]\n {\n new DockerBuild.Inputs.CacheToArgs\n {\n Registry = new DockerBuild.Inputs.CacheToRegistryArgs\n {\n ImageManifest = true,\n OciMediaTypes = true,\n Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $\"{repositoryUrl}:cache\"),\n },\n },\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"./app\",\n },\n Push = true,\n Registries = new[]\n {\n new DockerBuild.Inputs.RegistryArgs\n {\n Address = ecrRepository.RepositoryUrl,\n Password = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.Password),\n Username = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.UserName),\n },\n },\n Tags = new[]\n {\n ecrRepository.RepositoryUrl.Apply(repositoryUrl => $\"{repositoryUrl}:latest\"),\n },\n });\n\n return new Dictionary\n {\n [\"ref\"] = myImage.Ref,\n };\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tecrRepository, err := ecr.NewRepository(ctx, \"ecr-repository\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tauthToken := ecr.GetAuthorizationTokenOutput(ctx, ecr.GetAuthorizationTokenOutputArgs{\n\t\t\tRegistryId: ecrRepository.RegistryId,\n\t\t}, nil)\n\t\tmyImage, err := dockerbuild.NewImage(ctx, \"my-image\", &dockerbuild.ImageArgs{\n\t\t\tCacheFrom: dockerbuild.CacheFromArray{\n\t\t\t\t&dockerbuild.CacheFromArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheFromRegistryArgs{\n\t\t\t\t\t\tRef: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:cache\", repositoryUrl), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCacheTo: dockerbuild.CacheToArray{\n\t\t\t\t&dockerbuild.CacheToArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheToRegistryArgs{\n\t\t\t\t\t\tImageManifest: pulumi.Bool(true),\n\t\t\t\t\t\tOciMediaTypes: pulumi.Bool(true),\n\t\t\t\t\t\tRef: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:cache\", repositoryUrl), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"./app\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(true),\n\t\t\tRegistries: dockerbuild.RegistryArray{\n\t\t\t\t&dockerbuild.RegistryArgs{\n\t\t\t\t\tAddress: ecrRepository.RepositoryUrl,\n\t\t\t\t\tPassword: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) {\n\t\t\t\t\t\treturn &authToken.Password, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tUsername: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) {\n\t\t\t\t\t\treturn &authToken.UserName, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"%v:latest\", repositoryUrl), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ref\", myImage.Ref)\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Push to AWS ECR with caching\nname: ecr\noutputs:\n ref: ${my-image.ref}\nresources:\n ecr-repository:\n type: aws:ecr:Repository\n my-image:\n properties:\n cacheFrom:\n - registry:\n ref: ${ecr-repository.repositoryUrl}:cache\n cacheTo:\n - registry:\n imageManifest: true\n ociMediaTypes: true\n ref: ${ecr-repository.repositoryUrl}:cache\n context:\n location: ./app\n push: true\n registries:\n - address: ${ecr-repository.repositoryUrl}\n password: ${auth-token.password}\n username: ${auth-token.userName}\n tags:\n - ${ecr-repository.repositoryUrl}:latest\n type: docker-build:Image\nruntime: yaml\nvariables:\n auth-token:\n fn::aws:ecr:getAuthorizationToken:\n registryId: ${ecr-repository.registryId}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.EcrFunctions;\nimport com.pulumi.aws.ecr.inputs.GetAuthorizationTokenArgs;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.inputs.RegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ecrRepository = new Repository(\"ecrRepository\");\n\n final var authToken = EcrFunctions.getAuthorizationToken(GetAuthorizationTokenArgs.builder()\n .registryId(ecrRepository.registryId())\n .build());\n\n var myImage = new Image(\"myImage\", ImageArgs.builder() \n .cacheFrom(CacheFromArgs.builder()\n .registry(CacheFromRegistryArgs.builder()\n .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format(\"%s:cache\", repositoryUrl)))\n .build())\n .build())\n .cacheTo(CacheToArgs.builder()\n .registry(CacheToRegistryArgs.builder()\n .imageManifest(true)\n .ociMediaTypes(true)\n .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format(\"%s:cache\", repositoryUrl)))\n .build())\n .build())\n .context(BuildContextArgs.builder()\n .location(\"./app\")\n .build())\n .push(true)\n .registries(RegistryArgs.builder()\n .address(ecrRepository.repositoryUrl())\n .password(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.password())))\n .username(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.userName())))\n .build())\n .tags(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format(\"%s:latest\", repositoryUrl)))\n .build());\n\n ctx.export(\"ref\", myImage.ref());\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Multi-platform image\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n },\n platforms: [\n docker_build.Platform.Plan9_amd64,\n docker_build.Platform.Plan9_386,\n ],\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n platforms=[\n docker_build.Platform.PLAN9_AMD64,\n docker_build.Platform.PLAN9_386,\n ],\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Platforms = new[]\n {\n DockerBuild.Platform.Plan9_amd64,\n DockerBuild.Platform.Plan9_386,\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPlatforms: docker - build.PlatformArray{\n\t\t\t\tdockerbuild.Platform_Plan9_amd64,\n\t\t\t\tdockerbuild.Platform_Plan9_386,\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Multi-platform image\nname: multi-platform\nresources:\n image:\n properties:\n context:\n location: app\n platforms:\n - plan9/amd64\n - plan9/386\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .platforms( \n \"plan9/amd64\",\n \"plan9/386\")\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Registry export\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n },\n push: true,\n registries: [{\n address: \"docker.io\",\n password: dockerHubPassword,\n username: \"pulumibot\",\n }],\n tags: [\"docker.io/pulumi/pulumi:3.107.0\"],\n});\nexport const ref = myImage.ref;\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n push=True,\n registries=[docker_build.RegistryArgs(\n address=\"docker.io\",\n password=docker_hub_password,\n username=\"pulumibot\",\n )],\n tags=[\"docker.io/pulumi/pulumi:3.107.0\"])\npulumi.export(\"ref\", my_image[\"ref\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Push = true,\n Registries = new[]\n {\n new DockerBuild.Inputs.RegistryArgs\n {\n Address = \"docker.io\",\n Password = dockerHubPassword,\n Username = \"pulumibot\",\n },\n },\n Tags = new[]\n {\n \"docker.io/pulumi/pulumi:3.107.0\",\n },\n });\n\n return new Dictionary\n {\n [\"ref\"] = myImage.Ref,\n };\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(true),\n\t\t\tRegistries: dockerbuild.RegistryArray{\n\t\t\t\t&dockerbuild.RegistryArgs{\n\t\t\t\t\tAddress: pulumi.String(\"docker.io\"),\n\t\t\t\t\tPassword: pulumi.Any(dockerHubPassword),\n\t\t\t\t\tUsername: pulumi.String(\"pulumibot\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"docker.io/pulumi/pulumi:3.107.0\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ref\", myImage.Ref)\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Registry export\nname: registry\noutputs:\n ref: ${my-image.ref}\nresources:\n image:\n properties:\n context:\n location: app\n push: true\n registries:\n - address: docker.io\n password: ${dockerHubPassword}\n username: pulumibot\n tags:\n - docker.io/pulumi/pulumi:3.107.0\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.inputs.RegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .push(true)\n .registries(RegistryArgs.builder()\n .address(\"docker.io\")\n .password(dockerHubPassword)\n .username(\"pulumibot\")\n .build())\n .tags(\"docker.io/pulumi/pulumi:3.107.0\")\n .build());\n\n ctx.export(\"ref\", myImage.ref());\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Caching\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n cacheFrom: [{\n local: {\n src: \"tmp/cache\",\n },\n }],\n cacheTo: [{\n local: {\n dest: \"tmp/cache\",\n mode: docker_build.CacheMode.Max,\n },\n }],\n context: {\n location: \"app\",\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n cache_from=[docker_build.CacheFromArgs(\n local=docker_build.CacheFromLocalArgs(\n src=\"tmp/cache\",\n ),\n )],\n cache_to=[docker_build.CacheToArgs(\n local=docker_build.CacheToLocalArgs(\n dest=\"tmp/cache\",\n mode=docker_build.CacheMode.MAX,\n ),\n )],\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n CacheFrom = new[]\n {\n new DockerBuild.Inputs.CacheFromArgs\n {\n Local = new DockerBuild.Inputs.CacheFromLocalArgs\n {\n Src = \"tmp/cache\",\n },\n },\n },\n CacheTo = new[]\n {\n new DockerBuild.Inputs.CacheToArgs\n {\n Local = new DockerBuild.Inputs.CacheToLocalArgs\n {\n Dest = \"tmp/cache\",\n Mode = DockerBuild.CacheMode.Max,\n },\n },\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tCacheFrom: dockerbuild.CacheFromArray{\n\t\t\t\t&dockerbuild.CacheFromArgs{\n\t\t\t\t\tLocal: &dockerbuild.CacheFromLocalArgs{\n\t\t\t\t\t\tSrc: pulumi.String(\"tmp/cache\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCacheTo: dockerbuild.CacheToArray{\n\t\t\t\t&dockerbuild.CacheToArgs{\n\t\t\t\t\tLocal: &dockerbuild.CacheToLocalArgs{\n\t\t\t\t\t\tDest: pulumi.String(\"tmp/cache\"),\n\t\t\t\t\t\tMode: dockerbuild.CacheModeMax,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Caching\nname: caching\nresources:\n image:\n properties:\n cacheFrom:\n - local:\n src: tmp/cache\n cacheTo:\n - local:\n dest: tmp/cache\n mode: max\n context:\n location: app\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromLocalArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToLocalArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .cacheFrom(CacheFromArgs.builder()\n .local(CacheFromLocalArgs.builder()\n .src(\"tmp/cache\")\n .build())\n .build())\n .cacheTo(CacheToArgs.builder()\n .local(CacheToLocalArgs.builder()\n .dest(\"tmp/cache\")\n .mode(\"max\")\n .build())\n .build())\n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Docker Build Cloud\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n builder: {\n name: \"cloud-builder-name\",\n },\n context: {\n location: \"app\",\n },\n exec: true,\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n builder=docker_build.BuilderConfigArgs(\n name=\"cloud-builder-name\",\n ),\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n exec_=True,\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Builder = new DockerBuild.Inputs.BuilderConfigArgs\n {\n Name = \"cloud-builder-name\",\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Exec = true,\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tBuilder: &dockerbuild.BuilderConfigArgs{\n\t\t\t\tName: pulumi.String(\"cloud-builder-name\"),\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tExec: pulumi.Bool(true),\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Docker Build Cloud\nname: dbc\nresources:\n image:\n properties:\n builder:\n name: cloud-builder-name\n context:\n location: app\n exec: true\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuilderConfigArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .builder(BuilderConfigArgs.builder()\n .name(\"cloud-builder-name\")\n .build())\n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .exec(true)\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Build arguments\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n buildArgs: {\n SET_ME_TO_TRUE: \"true\",\n },\n context: {\n location: \"app\",\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n build_args={\n \"SET_ME_TO_TRUE\": \"true\",\n },\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n BuildArgs = \n {\n { \"SET_ME_TO_TRUE\", \"true\" },\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tBuildArgs: pulumi.StringMap{\n\t\t\t\t\"SET_ME_TO_TRUE\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Build arguments\nname: build-args\nresources:\n image:\n properties:\n buildArgs:\n SET_ME_TO_TRUE: \"true\"\n context:\n location: app\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .buildArgs(Map.of(\"SET_ME_TO_TRUE\", \"true\"))\n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Build target\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n },\n push: false,\n target: \"build-me\",\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n push=False,\n target=\"build-me\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Push = false,\n Target = \"build-me\",\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t\tTarget: pulumi.String(\"build-me\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Build target\nname: build-target\nresources:\n image:\n properties:\n context:\n location: app\n push: false\n target: build-me\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .push(false)\n .target(\"build-me\")\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Named contexts\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n named: {\n \"golang:latest\": {\n location: \"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\",\n },\n },\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n named={\n \"golang:latest\": docker_build.ContextArgs(\n location=\"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\",\n ),\n },\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n Named = \n {\n { \"golang:latest\", new DockerBuild.Inputs.ContextArgs\n {\n Location = \"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\",\n } },\n },\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t\tNamed: dockerbuild.ContextMap{\n\t\t\t\t\t\"golang:latest\": &dockerbuild.ContextArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Named contexts\nname: named-contexts\nresources:\n image:\n properties:\n context:\n location: app\n named:\n golang:latest:\n location: docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .named(Map.of(\"golang:latest\", Map.of(\"location\", \"docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984\")))\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Remote context\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\",\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\",\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\",\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Remote context\nname: remote-context\nresources:\n image:\n properties:\n context:\n location: https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile\")\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Inline Dockerfile\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n },\n dockerfile: {\n inline: `FROM busybox\nCOPY hello.c ./\n`,\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n dockerfile=docker_build.DockerfileArgs(\n inline=\"\"\"FROM busybox\nCOPY hello.c ./\n\"\"\",\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Dockerfile = new DockerBuild.Inputs.DockerfileArgs\n {\n Inline = @\"FROM busybox\nCOPY hello.c ./\n\",\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tDockerfile: &dockerbuild.DockerfileArgs{\n\t\t\t\tInline: pulumi.String(\"FROM busybox\\nCOPY hello.c ./\\n\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Inline Dockerfile\nname: inline\nresources:\n image:\n properties:\n context:\n location: app\n dockerfile:\n inline: |\n FROM busybox\n COPY hello.c ./\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.inputs.DockerfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .dockerfile(DockerfileArgs.builder()\n .inline(\"\"\"\nFROM busybox\nCOPY hello.c ./\n \"\"\")\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Remote context\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"https://github.com/docker-library/hello-world.git\",\n },\n dockerfile: {\n location: \"app/Dockerfile\",\n },\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"https://github.com/docker-library/hello-world.git\",\n ),\n dockerfile=docker_build.DockerfileArgs(\n location=\"app/Dockerfile\",\n ),\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"https://github.com/docker-library/hello-world.git\",\n },\n Dockerfile = new DockerBuild.Inputs.DockerfileArgs\n {\n Location = \"app/Dockerfile\",\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"https://github.com/docker-library/hello-world.git\"),\n\t\t\t},\n\t\t\tDockerfile: &dockerbuild.DockerfileArgs{\n\t\t\t\tLocation: pulumi.String(\"app/Dockerfile\"),\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Remote context\nname: remote-context\nresources:\n image:\n properties:\n context:\n location: https://github.com/docker-library/hello-world.git\n dockerfile:\n location: app/Dockerfile\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.inputs.DockerfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"https://github.com/docker-library/hello-world.git\")\n .build())\n .dockerfile(DockerfileArgs.builder()\n .location(\"app/Dockerfile\")\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% example %}}\n### Local export\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst image = new docker_build.Image(\"image\", {\n context: {\n location: \"app\",\n },\n exports: [{\n docker: {\n tar: true,\n },\n }],\n push: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\nimage = docker_build.Image(\"image\",\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n exports=[docker_build.ExportArgs(\n docker=docker_build.ExportDockerArgs(\n tar=True,\n ),\n )],\n push=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var image = new DockerBuild.Image(\"image\", new()\n {\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Exports = new[]\n {\n new DockerBuild.Inputs.ExportArgs\n {\n Docker = new DockerBuild.Inputs.ExportDockerArgs\n {\n Tar = true,\n },\n },\n },\n Push = false,\n });\n\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dockerbuild.NewImage(ctx, \"image\", &dockerbuild.ImageArgs{\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tExports: dockerbuild.ExportArray{\n\t\t\t\t&dockerbuild.ExportArgs{\n\t\t\t\t\tDocker: &dockerbuild.ExportDockerArgs{\n\t\t\t\t\t\tTar: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPush: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Local export\nname: docker-load\nresources:\n image:\n properties:\n context:\n location: app\n exports:\n - docker:\n tar: true\n push: false\n type: docker-build:Image\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.inputs.ExportArgs;\nimport com.pulumi.dockerbuild.inputs.ExportDockerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new Image(\"image\", ImageArgs.builder() \n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .exports(ExportArgs.builder()\n .docker(ExportDockerArgs.builder()\n .tar(true)\n .build())\n .build())\n .push(false)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}", - "properties": { - "addHosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Custom `host:ip` mappings to use during the build.\n\nEquivalent to Docker's `--add-host` flag." - }, - "buildArgs": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "`ARG` names and values to set during the build.\n\nThese variables are accessed like environment variables inside `RUN`\ninstructions.\n\nBuild arguments are persisted in the image, so you should use `secrets`\nif these arguments are sensitive.\n\nEquivalent to Docker's `--build-arg` flag." - }, - "buildOnPreview": { - "type": "boolean", - "description": "Setting this to `false` will always skip image builds during previews,\nand setting it to `true` will always build images during previews.\n\nImages built during previews are never exported to registries, however\ncache manifests are still exported.\n\nOn-disk Dockerfiles are always validated for syntactic correctness\nregardless of this setting.\n\nDefaults to `true` as a safeguard against broken images merging as part\nof CI pipelines.", - "default": true - }, - "builder": { - "$ref": "#/types/docker-build:index:BuilderConfig", - "description": "Builder configuration." - }, - "cacheFrom": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:CacheFrom" - }, - "description": "Cache export configuration.\n\nEquivalent to Docker's `--cache-from` flag." - }, - "cacheTo": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:CacheTo" - }, - "description": "Cache import configuration.\n\nEquivalent to Docker's `--cache-to` flag." - }, - "context": { - "$ref": "#/types/docker-build:index:BuildContext", - "description": "Build context settings. Defaults to the current directory.\n\nEquivalent to Docker's `PATH | URL | -` positional argument." - }, - "contextHash": { - "type": "string", - "description": "A preliminary hash of the image's build context.\n\nPulumi uses this to determine if an image _may_ need to be re-built." - }, - "digest": { - "type": "string", - "description": "A SHA256 digest of the image if it was exported to a registry or\nelsewhere.\n\nEmpty if the image was not exported.\n\nRegistry images can be referenced precisely as `@`. The\n`ref` output provides one such reference as a convenience." - }, - "dockerfile": { - "$ref": "#/types/docker-build:index:Dockerfile", - "description": "Dockerfile settings.\n\nEquivalent to Docker's `--file` flag." - }, - "exec": { - "type": "boolean", - "description": "Use `exec` mode to build this image.\n\nBy default the provider embeds a v25 Docker client with v0.12 buildx\nsupport. This helps ensure consistent behavior across environments and\nis compatible with alternative build backends (e.g. `buildkitd`), but\nit may not be desirable if you require a specific version of buildx.\nFor example you may want to run a custom `docker-buildx` binary with\nsupport for [Docker Build\nCloud](https://docs.docker.com/build/cloud/setup/) (DBC).\n\nWhen this is set to `true` the provider will instead execute the\n`docker-buildx` binary directly to perform its operations. The user is\nresponsible for ensuring this binary exists, with correct permissions\nand pre-configured builders, at a path Docker expects (e.g.\n`~/.docker/cli-plugins`).\n\nDebugging `exec` mode may be more difficult as Pulumi will not be able\nto surface fine-grained errors and warnings. Additionally credentials\nare temporarily written to disk in order to provide them to the\n`docker-buildx` binary." - }, - "exports": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Export" - }, - "description": "Controls where images are persisted after building.\n\nImages are only stored in the local cache unless `exports` are\nexplicitly configured.\n\nExporting to multiple destinations requires a daemon running BuildKit\n0.13 or later.\n\nEquivalent to Docker's `--output` flag." - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach arbitrary key/value metadata to the image.\n\nEquivalent to Docker's `--label` flag." - }, - "load": { - "type": "boolean", - "description": "When `true` the build will automatically include a `docker` export.\n\nDefaults to `false`.\n\nEquivalent to Docker's `--load` flag." - }, - "network": { - "$ref": "#/types/docker-build:index:NetworkMode", - "description": "Set the network mode for `RUN` instructions. Defaults to `default`.\n\nFor custom networks, configure your builder with `--driver-opt network=...`.\n\nEquivalent to Docker's `--network` flag.", - "default": "default" - }, - "noCache": { - "type": "boolean", - "description": "Do not import cache manifests when building the image.\n\nEquivalent to Docker's `--no-cache` flag." - }, - "platforms": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Platform" - }, - "description": "Set target platform(s) for the build. Defaults to the host's platform.\n\nEquivalent to Docker's `--platform` flag." - }, - "pull": { - "type": "boolean", - "description": "Always pull referenced images.\n\nEquivalent to Docker's `--pull` flag." - }, - "push": { - "type": "boolean", - "description": "When `true` the build will automatically include a `registry` export.\n\nDefaults to `false`.\n\nEquivalent to Docker's `--push` flag." - }, - "ref": { - "type": "string", - "description": "If the image was pushed to any registries then this will contain a\nsingle fully-qualified tag including the build's digest.\n\nIf the image had tags but was not exported, this will take on a value\nof one of those tags.\n\nThis will be empty if the image had no exports and no tags.\n\nThis is only for convenience and may not be appropriate for situations\nwhere multiple tags or registries are involved. In those cases this\noutput is not guaranteed to be stable.\n\nFor more control over tags consumed by downstream resources you should\nuse the `digest` output." - }, - "registries": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Registry" - }, - "description": "Registry credentials. Required if reading or exporting to private\nrepositories.\n\nCredentials are kept in-memory and do not pollute pre-existing\ncredentials on the host.\n\nSimilar to `docker login`." - }, - "secrets": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "A mapping of secret names to their corresponding values.\n\nUnlike the Docker CLI, these can be passed by value and do not need to\nexist on-disk or in environment variables.\n\nBuild arguments and environment variables are persistent in the final\nimage, so you should use this for sensitive values.\n\nSimilar to Docker's `--secret` flag." - }, - "ssh": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:SSH" - }, - "description": "SSH agent socket or keys to expose to the build.\n\nEquivalent to Docker's `--ssh` flag." - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Name and optionally a tag (format: `name:tag`).\n\nIf exporting to a registry, the name should include the fully qualified\nregistry address (e.g. `docker.io/pulumi/pulumi:latest`).\n\nEquivalent to Docker's `--tag` flag." - }, - "target": { - "type": "string", - "description": "Set the target build stage(s) to build.\n\nIf not specified all targets will be built by default.\n\nEquivalent to Docker's `--target` flag." - } - }, - "type": "object", - "required": [ - "contextHash", - "digest", - "push", - "ref" - ], - "inputProperties": { - "addHosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Custom `host:ip` mappings to use during the build.\n\nEquivalent to Docker's `--add-host` flag." - }, - "buildArgs": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "`ARG` names and values to set during the build.\n\nThese variables are accessed like environment variables inside `RUN`\ninstructions.\n\nBuild arguments are persisted in the image, so you should use `secrets`\nif these arguments are sensitive.\n\nEquivalent to Docker's `--build-arg` flag." - }, - "buildOnPreview": { - "type": "boolean", - "description": "Setting this to `false` will always skip image builds during previews,\nand setting it to `true` will always build images during previews.\n\nImages built during previews are never exported to registries, however\ncache manifests are still exported.\n\nOn-disk Dockerfiles are always validated for syntactic correctness\nregardless of this setting.\n\nDefaults to `true` as a safeguard against broken images merging as part\nof CI pipelines.", - "default": true - }, - "builder": { - "$ref": "#/types/docker-build:index:BuilderConfig", - "description": "Builder configuration." - }, - "cacheFrom": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:CacheFrom" - }, - "description": "Cache export configuration.\n\nEquivalent to Docker's `--cache-from` flag." - }, - "cacheTo": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:CacheTo" - }, - "description": "Cache import configuration.\n\nEquivalent to Docker's `--cache-to` flag." - }, - "context": { - "$ref": "#/types/docker-build:index:BuildContext", - "description": "Build context settings. Defaults to the current directory.\n\nEquivalent to Docker's `PATH | URL | -` positional argument." - }, - "dockerfile": { - "$ref": "#/types/docker-build:index:Dockerfile", - "description": "Dockerfile settings.\n\nEquivalent to Docker's `--file` flag." - }, - "exec": { - "type": "boolean", - "description": "Use `exec` mode to build this image.\n\nBy default the provider embeds a v25 Docker client with v0.12 buildx\nsupport. This helps ensure consistent behavior across environments and\nis compatible with alternative build backends (e.g. `buildkitd`), but\nit may not be desirable if you require a specific version of buildx.\nFor example you may want to run a custom `docker-buildx` binary with\nsupport for [Docker Build\nCloud](https://docs.docker.com/build/cloud/setup/) (DBC).\n\nWhen this is set to `true` the provider will instead execute the\n`docker-buildx` binary directly to perform its operations. The user is\nresponsible for ensuring this binary exists, with correct permissions\nand pre-configured builders, at a path Docker expects (e.g.\n`~/.docker/cli-plugins`).\n\nDebugging `exec` mode may be more difficult as Pulumi will not be able\nto surface fine-grained errors and warnings. Additionally credentials\nare temporarily written to disk in order to provide them to the\n`docker-buildx` binary." - }, - "exports": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Export" - }, - "description": "Controls where images are persisted after building.\n\nImages are only stored in the local cache unless `exports` are\nexplicitly configured.\n\nExporting to multiple destinations requires a daemon running BuildKit\n0.13 or later.\n\nEquivalent to Docker's `--output` flag." - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Attach arbitrary key/value metadata to the image.\n\nEquivalent to Docker's `--label` flag." - }, - "load": { - "type": "boolean", - "description": "When `true` the build will automatically include a `docker` export.\n\nDefaults to `false`.\n\nEquivalent to Docker's `--load` flag." - }, - "network": { - "$ref": "#/types/docker-build:index:NetworkMode", - "description": "Set the network mode for `RUN` instructions. Defaults to `default`.\n\nFor custom networks, configure your builder with `--driver-opt network=...`.\n\nEquivalent to Docker's `--network` flag.", - "default": "default" - }, - "noCache": { - "type": "boolean", - "description": "Do not import cache manifests when building the image.\n\nEquivalent to Docker's `--no-cache` flag." - }, - "platforms": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Platform" - }, - "description": "Set target platform(s) for the build. Defaults to the host's platform.\n\nEquivalent to Docker's `--platform` flag." - }, - "pull": { - "type": "boolean", - "description": "Always pull referenced images.\n\nEquivalent to Docker's `--pull` flag." - }, - "push": { - "type": "boolean", - "description": "When `true` the build will automatically include a `registry` export.\n\nDefaults to `false`.\n\nEquivalent to Docker's `--push` flag." - }, - "registries": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:Registry" - }, - "description": "Registry credentials. Required if reading or exporting to private\nrepositories.\n\nCredentials are kept in-memory and do not pollute pre-existing\ncredentials on the host.\n\nSimilar to `docker login`." - }, - "secrets": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "A mapping of secret names to their corresponding values.\n\nUnlike the Docker CLI, these can be passed by value and do not need to\nexist on-disk or in environment variables.\n\nBuild arguments and environment variables are persistent in the final\nimage, so you should use this for sensitive values.\n\nSimilar to Docker's `--secret` flag." - }, - "ssh": { - "type": "array", - "items": { - "$ref": "#/types/docker-build:index:SSH" - }, - "description": "SSH agent socket or keys to expose to the build.\n\nEquivalent to Docker's `--ssh` flag." - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Name and optionally a tag (format: `name:tag`).\n\nIf exporting to a registry, the name should include the fully qualified\nregistry address (e.g. `docker.io/pulumi/pulumi:latest`).\n\nEquivalent to Docker's `--tag` flag." - }, - "target": { - "type": "string", - "description": "Set the target build stage(s) to build.\n\nIf not specified all targets will be built by default.\n\nEquivalent to Docker's `--target` flag." - } - }, - "requiredInputs": [ - "push" - ] - }, - "docker-build:index:Index": { - "description": "A wrapper around `docker buildx imagetools create` to create an index\n(or manifest list) referencing one or more existing images.\n\nIn most cases you do not need an `Index` to build a multi-platform\nimage -- specifying multiple platforms on the `Image` will handle this\nfor you automatically.\n\nHowever, as of April 2024, building multi-platform images _with\ncaching_ will only export a cache for one platform at a time (see [this\ndiscussion](https://github.com/docker/buildx/discussions/1382) for more\ndetails).\n\nTherefore this resource can be helpful if you are building\nmulti-platform images with caching: each platform can be built and\ncached separately, and an `Index` can join them all together. An\nexample of this is shown below.\n\nThis resource creates an OCI image index or a Docker manifest list\ndepending on the media types of the source images.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Multi-platform registry caching\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as docker_build from \"@pulumi/docker-build\";\n\nconst amd64 = new docker_build.Image(\"amd64\", {\n cacheFrom: [{\n registry: {\n ref: \"docker.io/pulumi/pulumi:cache-amd64\",\n },\n }],\n cacheTo: [{\n registry: {\n mode: docker_build.CacheMode.Max,\n ref: \"docker.io/pulumi/pulumi:cache-amd64\",\n },\n }],\n context: {\n location: \"app\",\n },\n platforms: [docker_build.Platform.Linux_amd64],\n tags: [\"docker.io/pulumi/pulumi:3.107.0-amd64\"],\n});\nconst arm64 = new docker_build.Image(\"arm64\", {\n cacheFrom: [{\n registry: {\n ref: \"docker.io/pulumi/pulumi:cache-arm64\",\n },\n }],\n cacheTo: [{\n registry: {\n mode: docker_build.CacheMode.Max,\n ref: \"docker.io/pulumi/pulumi:cache-arm64\",\n },\n }],\n context: {\n location: \"app\",\n },\n platforms: [docker_build.Platform.Linux_arm64],\n tags: [\"docker.io/pulumi/pulumi:3.107.0-arm64\"],\n});\nconst index = new docker_build.Index(\"index\", {\n sources: [\n amd64.ref,\n arm64.ref,\n ],\n tag: \"docker.io/pulumi/pulumi:3.107.0\",\n});\nexport const ref = index.ref;\n```\n```python\nimport pulumi\nimport pulumi_docker_build as docker_build\n\namd64 = docker_build.Image(\"amd64\",\n cache_from=[docker_build.CacheFromArgs(\n registry=docker_build.CacheFromRegistryArgs(\n ref=\"docker.io/pulumi/pulumi:cache-amd64\",\n ),\n )],\n cache_to=[docker_build.CacheToArgs(\n registry=docker_build.CacheToRegistryArgs(\n mode=docker_build.CacheMode.MAX,\n ref=\"docker.io/pulumi/pulumi:cache-amd64\",\n ),\n )],\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n platforms=[docker_build.Platform.LINUX_AMD64],\n tags=[\"docker.io/pulumi/pulumi:3.107.0-amd64\"])\narm64 = docker_build.Image(\"arm64\",\n cache_from=[docker_build.CacheFromArgs(\n registry=docker_build.CacheFromRegistryArgs(\n ref=\"docker.io/pulumi/pulumi:cache-arm64\",\n ),\n )],\n cache_to=[docker_build.CacheToArgs(\n registry=docker_build.CacheToRegistryArgs(\n mode=docker_build.CacheMode.MAX,\n ref=\"docker.io/pulumi/pulumi:cache-arm64\",\n ),\n )],\n context=docker_build.BuildContextArgs(\n location=\"app\",\n ),\n platforms=[docker_build.Platform.LINUX_ARM64],\n tags=[\"docker.io/pulumi/pulumi:3.107.0-arm64\"])\nindex = docker_build.Index(\"index\",\n sources=[\n amd64.ref,\n arm64.ref,\n ],\n tag=\"docker.io/pulumi/pulumi:3.107.0\")\npulumi.export(\"ref\", index.ref)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DockerBuild = Pulumi.DockerBuild;\n\nreturn await Deployment.RunAsync(() => \n{\n var amd64 = new DockerBuild.Image(\"amd64\", new()\n {\n CacheFrom = new[]\n {\n new DockerBuild.Inputs.CacheFromArgs\n {\n Registry = new DockerBuild.Inputs.CacheFromRegistryArgs\n {\n Ref = \"docker.io/pulumi/pulumi:cache-amd64\",\n },\n },\n },\n CacheTo = new[]\n {\n new DockerBuild.Inputs.CacheToArgs\n {\n Registry = new DockerBuild.Inputs.CacheToRegistryArgs\n {\n Mode = DockerBuild.CacheMode.Max,\n Ref = \"docker.io/pulumi/pulumi:cache-amd64\",\n },\n },\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Platforms = new[]\n {\n DockerBuild.Platform.Linux_amd64,\n },\n Tags = new[]\n {\n \"docker.io/pulumi/pulumi:3.107.0-amd64\",\n },\n });\n\n var arm64 = new DockerBuild.Image(\"arm64\", new()\n {\n CacheFrom = new[]\n {\n new DockerBuild.Inputs.CacheFromArgs\n {\n Registry = new DockerBuild.Inputs.CacheFromRegistryArgs\n {\n Ref = \"docker.io/pulumi/pulumi:cache-arm64\",\n },\n },\n },\n CacheTo = new[]\n {\n new DockerBuild.Inputs.CacheToArgs\n {\n Registry = new DockerBuild.Inputs.CacheToRegistryArgs\n {\n Mode = DockerBuild.CacheMode.Max,\n Ref = \"docker.io/pulumi/pulumi:cache-arm64\",\n },\n },\n },\n Context = new DockerBuild.Inputs.BuildContextArgs\n {\n Location = \"app\",\n },\n Platforms = new[]\n {\n DockerBuild.Platform.Linux_arm64,\n },\n Tags = new[]\n {\n \"docker.io/pulumi/pulumi:3.107.0-arm64\",\n },\n });\n\n var index = new DockerBuild.Index(\"index\", new()\n {\n Sources = new[]\n {\n amd64.Ref,\n arm64.Ref,\n },\n Tag = \"docker.io/pulumi/pulumi:3.107.0\",\n });\n\n return new Dictionary\n {\n [\"ref\"] = index.Ref,\n };\n});\n\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tamd64, err := dockerbuild.NewImage(ctx, \"amd64\", &dockerbuild.ImageArgs{\n\t\t\tCacheFrom: dockerbuild.CacheFromArray{\n\t\t\t\t&dockerbuild.CacheFromArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheFromRegistryArgs{\n\t\t\t\t\t\tRef: pulumi.String(\"docker.io/pulumi/pulumi:cache-amd64\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCacheTo: dockerbuild.CacheToArray{\n\t\t\t\t&dockerbuild.CacheToArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheToRegistryArgs{\n\t\t\t\t\t\tMode: dockerbuild.CacheModeMax,\n\t\t\t\t\t\tRef: pulumi.String(\"docker.io/pulumi/pulumi:cache-amd64\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPlatforms: docker - build.PlatformArray{\n\t\t\t\tdockerbuild.Platform_Linux_amd64,\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"docker.io/pulumi/pulumi:3.107.0-amd64\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tarm64, err := dockerbuild.NewImage(ctx, \"arm64\", &dockerbuild.ImageArgs{\n\t\t\tCacheFrom: dockerbuild.CacheFromArray{\n\t\t\t\t&dockerbuild.CacheFromArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheFromRegistryArgs{\n\t\t\t\t\t\tRef: pulumi.String(\"docker.io/pulumi/pulumi:cache-arm64\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCacheTo: dockerbuild.CacheToArray{\n\t\t\t\t&dockerbuild.CacheToArgs{\n\t\t\t\t\tRegistry: &dockerbuild.CacheToRegistryArgs{\n\t\t\t\t\t\tMode: dockerbuild.CacheModeMax,\n\t\t\t\t\t\tRef: pulumi.String(\"docker.io/pulumi/pulumi:cache-arm64\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContext: &dockerbuild.BuildContextArgs{\n\t\t\t\tLocation: pulumi.String(\"app\"),\n\t\t\t},\n\t\t\tPlatforms: docker - build.PlatformArray{\n\t\t\t\tdockerbuild.Platform_Linux_arm64,\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"docker.io/pulumi/pulumi:3.107.0-arm64\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tindex, err := dockerbuild.NewIndex(ctx, \"index\", &dockerbuild.IndexArgs{\n\t\t\tSources: pulumi.StringArray{\n\t\t\t\tamd64.Ref,\n\t\t\t\tarm64.Ref,\n\t\t\t},\n\t\t\tTag: pulumi.String(\"docker.io/pulumi/pulumi:3.107.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ref\", index.Ref)\n\t\treturn nil\n\t})\n}\n```\n```yaml\ndescription: Multi-platform registry caching\nname: registry-caching\noutputs:\n ref: ${index.ref}\nresources:\n amd64:\n properties:\n cacheFrom:\n - registry:\n ref: docker.io/pulumi/pulumi:cache-amd64\n cacheTo:\n - registry:\n mode: max\n ref: docker.io/pulumi/pulumi:cache-amd64\n context:\n location: app\n platforms:\n - linux/amd64\n tags:\n - docker.io/pulumi/pulumi:3.107.0-amd64\n type: docker-build:Image\n arm64:\n properties:\n cacheFrom:\n - registry:\n ref: docker.io/pulumi/pulumi:cache-arm64\n cacheTo:\n - registry:\n mode: max\n ref: docker.io/pulumi/pulumi:cache-arm64\n context:\n location: app\n platforms:\n - linux/arm64\n tags:\n - docker.io/pulumi/pulumi:3.107.0-arm64\n type: docker-build:Image\n index:\n properties:\n sources:\n - ${amd64.ref}\n - ${arm64.ref}\n tag: docker.io/pulumi/pulumi:3.107.0\n type: docker-build:Index\nruntime: yaml\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dockerbuild.Image;\nimport com.pulumi.dockerbuild.ImageArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromArgs;\nimport com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToArgs;\nimport com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;\nimport com.pulumi.dockerbuild.inputs.BuildContextArgs;\nimport com.pulumi.dockerbuild.Index;\nimport com.pulumi.dockerbuild.IndexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var amd64 = new Image(\"amd64\", ImageArgs.builder() \n .cacheFrom(CacheFromArgs.builder()\n .registry(CacheFromRegistryArgs.builder()\n .ref(\"docker.io/pulumi/pulumi:cache-amd64\")\n .build())\n .build())\n .cacheTo(CacheToArgs.builder()\n .registry(CacheToRegistryArgs.builder()\n .mode(\"max\")\n .ref(\"docker.io/pulumi/pulumi:cache-amd64\")\n .build())\n .build())\n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .platforms(\"linux/amd64\")\n .tags(\"docker.io/pulumi/pulumi:3.107.0-amd64\")\n .build());\n\n var arm64 = new Image(\"arm64\", ImageArgs.builder() \n .cacheFrom(CacheFromArgs.builder()\n .registry(CacheFromRegistryArgs.builder()\n .ref(\"docker.io/pulumi/pulumi:cache-arm64\")\n .build())\n .build())\n .cacheTo(CacheToArgs.builder()\n .registry(CacheToRegistryArgs.builder()\n .mode(\"max\")\n .ref(\"docker.io/pulumi/pulumi:cache-arm64\")\n .build())\n .build())\n .context(BuildContextArgs.builder()\n .location(\"app\")\n .build())\n .platforms(\"linux/arm64\")\n .tags(\"docker.io/pulumi/pulumi:3.107.0-arm64\")\n .build());\n\n var index = new Index(\"index\", IndexArgs.builder() \n .sources( \n amd64.ref(),\n arm64.ref())\n .tag(\"docker.io/pulumi/pulumi:3.107.0\")\n .build());\n\n ctx.export(\"ref\", index.ref());\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}", - "properties": { - "push": { - "type": "boolean", - "description": "If true, push the index to the target registry.\n\nDefaults to `true`.", - "default": true - }, - "ref": { - "type": "string", - "description": "The pushed tag with digest.\n\nIdentical to the tag if the index was not pushed." - }, - "registry": { - "$ref": "#/types/docker-build:index:Registry", - "description": "Authentication for the registry where the tagged index will be pushed.\n\nCredentials can also be included with the provider's configuration." - }, - "sources": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Existing images to include in the index." - }, - "tag": { - "type": "string", - "description": "The tag to apply to the index." - } - }, - "type": "object", - "required": [ - "ref", - "sources", - "tag" - ], - "inputProperties": { - "push": { - "type": "boolean", - "description": "If true, push the index to the target registry.\n\nDefaults to `true`.", - "default": true - }, - "registry": { - "$ref": "#/types/docker-build:index:Registry", - "description": "Authentication for the registry where the tagged index will be pushed.\n\nCredentials can also be included with the provider's configuration." - }, - "sources": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Existing images to include in the index." - }, - "tag": { - "type": "string", - "description": "The tag to apply to the index." - } - }, - "requiredInputs": [ - "sources", - "tag" - ] - } - } -} diff --git a/provider/doc.go b/provider/doc.go deleted file mode 100644 index 995975c..0000000 --- a/provider/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package provider serves a Docker Buildx Pulumi provider. -package provider diff --git a/provider/internal/auth.go b/provider/internal/auth.go deleted file mode 100644 index 01b56d8..0000000 --- a/provider/internal/auth.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import "github.com/pulumi/pulumi-go-provider/infer" - -// Registry contains credentials for authenticating with a remote registry. -type Registry struct { - Address string `pulumi:"address"` - Password string `pulumi:"password,optional" provider:"secret"` - Username string `pulumi:"username,optional"` -} - -// Annotate sets docstrings on Registry. -func (r *Registry) Annotate(a infer.Annotator) { - a.Describe(&r.Address, `The registry's address (e.g. "docker.io").`) - a.Describe(&r.Username, `Username for the registry.`) - a.Describe(&r.Password, `Password or token for the registry.`) -} diff --git a/provider/internal/builder.go b/provider/internal/builder.go deleted file mode 100644 index 406a1e6..0000000 --- a/provider/internal/builder.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "github.com/pulumi/pulumi-go-provider/infer" -) - -var _ infer.Annotated = (*BuilderConfig)(nil) - -// BuilderConfig configures the builder to use for an image build. -type BuilderConfig struct { - Name string `pulumi:"name,optional"` -} - -// Annotate sets docstrings on BuilderConfig. -func (b *BuilderConfig) Annotate(a infer.Annotator) { - a.Describe(&b.Name, dedent(` - Name of an existing buildx builder to use. - - Only "docker-container", "kubernetes", or "remote" drivers are - supported. The legacy "docker" driver is not supported. - - Equivalent to Docker's "--builder" flag. - `)) -} diff --git a/provider/internal/cache.go b/provider/internal/cache.go deleted file mode 100644 index b89b4d5..0000000 --- a/provider/internal/cache.go +++ /dev/null @@ -1,744 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "errors" - "fmt" - "strings" - - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/buildx/util/buildflags" - - "github.com/pulumi/pulumi-go-provider/infer" -) - -var ( - _ fmt.Stringer = (*CacheFrom)(nil) - _ fmt.Stringer = (*CacheFromAzureBlob)(nil) - _ fmt.Stringer = (*CacheFromGitHubActions)(nil) - _ fmt.Stringer = (*CacheFromLocal)(nil) - _ fmt.Stringer = (*CacheFromRegistry)(nil) - _ fmt.Stringer = (*CacheFromS3)(nil) - _ fmt.Stringer = (*CacheTo)(nil) - _ fmt.Stringer = (*CacheToAzureBlob)(nil) - _ fmt.Stringer = (*CacheToGitHubActions)(nil) - _ fmt.Stringer = (*CacheToInline)(nil) - _ fmt.Stringer = (*CacheToLocal)(nil) - _ fmt.Stringer = (*CacheToRegistry)(nil) - _ fmt.Stringer = (*CacheToS3)(nil) - _ fmt.Stringer = CacheWithCompression{} - _ fmt.Stringer = CacheWithIgnoreError{} - _ fmt.Stringer = CacheWithMode{} - _ fmt.Stringer = CacheWithOCI{} - _ infer.Annotated = (*CacheFrom)(nil) - _ infer.Annotated = (*CacheFromAzureBlob)(nil) - _ infer.Annotated = (*CacheFromGitHubActions)(nil) - _ infer.Annotated = (*CacheFromLocal)(nil) - _ infer.Annotated = (*CacheFromRegistry)(nil) - _ infer.Annotated = (*CacheFromS3)(nil) - _ infer.Annotated = (*CacheTo)(nil) - _ infer.Annotated = (*CacheToInline)(nil) - _ infer.Annotated = (*CacheToLocal)(nil) - _ infer.Annotated = (*CacheWithCompression)(nil) - _ infer.Annotated = (*CacheWithIgnoreError)(nil) - _ infer.Annotated = (*CacheWithMode)(nil) - _ infer.Annotated = (*CacheWithOCI)(nil) - _ infer.Enum[CacheMode] = (*CacheMode)(nil) - _ infer.Enum[CompressionType] = (*CompressionType)(nil) -) - -// CacheFromLocal pulls cache manifests from a local directory. -type CacheFromLocal struct { - Src string `pulumi:"src"` - Digest string `pulumi:"digest,optional"` -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheFromLocal) String() string { - if c == nil { - return "" - } - parts := []string{"type=local"} - if c.Src != "" { - parts = append(parts, "src="+c.Src) - } - if c.Digest != "" { - parts = append(parts, "digest="+c.Digest) - } - return strings.Join(parts, ",") -} - -// Annotate sets docstrings on CacheFromLocal. -func (c *CacheFromLocal) Annotate(a infer.Annotator) { - a.Describe(&c.Src, "Path of the local directory where cache gets imported from.") - a.Describe(&c.Digest, "Digest of manifest to import.") -} - -// CacheFromRegistry pulls cache manifests from a registry ref. -type CacheFromRegistry struct { - Ref string `pulumi:"ref"` -} - -// Annotate sets docstrings on CacheFromRegistry. -func (c *CacheFromRegistry) Annotate(a infer.Annotator) { - a.Describe(&c.Ref, "Fully qualified name of the cache image to import.") -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheFromRegistry) String() string { - if c == nil { - return "" - } - return "type=registry,ref=" + c.Ref -} - -// CacheWithOCI exposes OCI media type options. -type CacheWithOCI struct { - OCI *bool `pulumi:"ociMediaTypes,optional"` - ImageManifest *bool `pulumi:"imageManifest,optional"` -} - -// Annotate sets docstrings on CacheWithOCI. -func (c *CacheWithOCI) Annotate(a infer.Annotator) { - a.Describe(&c.OCI, dedent(` - Whether to use OCI media types in exported manifests. Defaults to - "true". - `)) - a.Describe(&c.ImageManifest, dedent(` - Export cache manifest as an OCI-compatible image manifest instead of a - manifest list. Requires "ociMediaTypes" to also be "true". - - Some registries like AWS ECR will not work with caching if this is - "false". - - Defaults to "false" to match Docker's default behavior. - `)) - - a.SetDefault(&c.OCI, true) - a.SetDefault(&c.ImageManifest, false) -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if unknown. -func (c CacheWithOCI) String() string { - if c.OCI == nil { - return "" - } - parts := []string{fmt.Sprintf("oci-mediatypes=%t", *c.OCI)} - if c.ImageManifest != nil { - parts = append(parts, fmt.Sprintf("image-manifest=%t", *c.ImageManifest)) - } - return strings.Join(parts, ",") -} - -// CacheFromGitHubActions pulls cache manifests from the GitHub actions cache. -type CacheFromGitHubActions struct { - URL string `pulumi:"url,optional"` - Token string `pulumi:"token,optional" provider:"secret"` - Scope string `pulumi:"scope,optional"` -} - -// Annotate sets docstrings on CacheFromGitHubActions. -func (c *CacheFromGitHubActions) Annotate(a infer.Annotator) { - a.SetDefault(&c.URL, "", "ACTIONS_CACHE_URL") - a.SetDefault(&c.Token, "", "ACTIONS_RUNTIME_TOKEN") - a.SetDefault(&c.Scope, "", "buildkit") - - a.Describe(&c.URL, dedent(` - The cache server URL to use for artifacts. - - Defaults to "$ACTIONS_CACHE_URL", although a separate action like - "crazy-max/ghaction-github-runtime" is recommended to expose this - environment variable to your jobs. - `)) - a.Describe(&c.Token, dedent(` - The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to "$ACTIONS_RUNTIME_TOKEN", although a separate action like - "crazy-max/ghaction-github-runtime" is recommended to expose this - environment variable to your jobs. - - `)) - a.Describe(&c.Scope, dedent(` - The scope to use for cache keys. Defaults to "buildkit". - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - `)) -} - -func (c *CacheFromGitHubActions) String() string { - if c == nil { - return "" - } - parts := []string{"type=gha"} - if c.Scope != "" { - parts = append(parts, "scope="+c.Scope) - } - if c.Token != "" { - parts = append(parts, "token="+c.Token) - } - if c.URL != "" { - parts = append(parts, "url="+c.URL) - } - return strings.Join(parts, ",") -} - -// CacheFromAzureBlob pulls cache manifests from Azure -// blob storage. -type CacheFromAzureBlob struct { - Name string `pulumi:"name"` - AccountURL string `pulumi:"accountUrl,optional"` - SecretAccessKey string `pulumi:"secretAccessKey,optional" provider:"secret"` -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheFromAzureBlob) String() string { - if c == nil { - return "" - } - parts := []string{"type=azblob"} - if c.Name != "" { - parts = append(parts, "name="+c.Name) - } - if c.AccountURL != "" { - parts = append(parts, "account_url="+c.AccountURL) - } - if c.SecretAccessKey != "" { - parts = append(parts, "secret_access_key="+c.SecretAccessKey) - } - return strings.Join(parts, ",") -} - -// Annotate sets docstrings on CacheFromAzureBlob. -func (c *CacheFromAzureBlob) Annotate(a infer.Annotator) { - a.Describe(&c.Name, "The name of the cache image.") - a.Describe(&c.AccountURL, "Base URL of the storage account.") - a.Describe(&c.SecretAccessKey, "Blob storage account key.") -} - -// CacheToAzureBlob pushes cache manifests to Azure blob storage. -type CacheToAzureBlob struct { - CacheWithMode - CacheWithIgnoreError - - CacheFromAzureBlob -} - -func (c *CacheToAzureBlob) String() string { - if c == nil { - return "" - } - return join(&c.CacheFromAzureBlob, c.CacheWithMode, c.CacheWithIgnoreError) -} - -// CacheFromS3 pulls cache manifests from S3-compatible APIs. -type CacheFromS3 struct { - Region string `pulumi:"region"` - Bucket string `pulumi:"bucket"` - Name string `pulumi:"name,optional"` - EndpointURL string `pulumi:"endpointUrl,optional"` - BlobsPrefix string `pulumi:"blobsPrefix,optional"` - ManifestsPrefix string `pulumi:"manifestsPrefix,optional"` - UsePathStyle *bool `pulumi:"usePathStyle,optional"` - AccessKeyID string `pulumi:"accessKeyId,optional"` - SecretAccessKey string `pulumi:"secretAccessKey,optional" provider:"secret"` - SessionToken string `pulumi:"sessionToken,optional" provider:"secret"` -} - -// Annotate sets docstrings and defaults on CacheFromS3. -func (c *CacheFromS3) Annotate(a infer.Annotator) { - a.SetDefault(&c.Region, "", "AWS_REGION") - a.SetDefault(&c.AccessKeyID, "", "AWS_ACCESS_KEY_ID") - a.SetDefault(&c.SecretAccessKey, "", "AWS_SECRET_ACCESS_KEY") - a.SetDefault(&c.SessionToken, "", "AWS_SESSION_TOKEN") - - a.Describe(&c.Bucket, dedent(` - Name of the S3 bucket. - `)) - a.Describe(&c.Region, dedent(` - The geographic location of the bucket. Defaults to "$AWS_REGION". - `)) - a.Describe(&c.AccessKeyID, dedent(` - Defaults to "$AWS_ACCESS_KEY_ID". - `)) - a.Describe(&c.SecretAccessKey, dedent(` - Defaults to "$AWS_SECRET_ACCESS_KEY". - `)) - a.Describe(&c.SessionToken, dedent(` - Defaults to "$AWS_SESSION_TOKEN". - `)) - a.Describe(&c.BlobsPrefix, dedent(` - Prefix to prepend to blob filenames. - `)) - a.Describe(&c.EndpointURL, dedent(` - Endpoint of the S3 bucket. - `)) - a.Describe(&c.ManifestsPrefix, dedent(` - Prefix to prepend on manifest filenames. - `)) - a.Describe(&c.Name, dedent(` - Name of the cache image. - `)) - a.Describe(&c.UsePathStyle, dedent(` - Uses "bucket" in the URL instead of hostname when "true". - `)) -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheFromS3) String() string { - if c == nil { - return "" - } - parts := []string{"type=s3"} - if c.Bucket != "" { - parts = append(parts, "bucket="+c.Bucket) - } - if c.Name != "" { - parts = append(parts, "name="+c.Name) - } - if c.EndpointURL != "" { - parts = append(parts, "endpoint_url="+c.EndpointURL) - } - if c.BlobsPrefix != "" { - parts = append(parts, "blobs_prefix="+c.BlobsPrefix) - } - if c.ManifestsPrefix != "" { - parts = append(parts, "manifests_prefix="+c.ManifestsPrefix) - } - if c.UsePathStyle != nil { - parts = append(parts, fmt.Sprintf("use_path_type=%t", *c.UsePathStyle)) - } - if c.AccessKeyID != "" { - parts = append(parts, "access_key_id="+c.AccessKeyID) - } - if c.SecretAccessKey != "" { - parts = append(parts, "secret_access_key="+c.SecretAccessKey) - } - if c.SessionToken != "" { - parts = append(parts, "session_token="+c.SessionToken) - } - - return strings.Join(parts, ",") -} - -// CacheWithMode is a cache that can configure its mode. -type CacheWithMode struct { - Mode *CacheMode `pulumi:"mode,optional"` -} - -// Annotate sets docstrings and defaults on CacheWithMode. -func (c *CacheWithMode) Annotate(a infer.Annotator) { - a.SetDefault(&c.Mode, Min) - a.Describe(&c.Mode, dedent(` - The cache mode to use. Defaults to "min". - `)) -} - -func (c CacheWithMode) String() string { - if c.Mode == nil { - return "" - } - return fmt.Sprintf("mode=%s", *c.Mode) -} - -// CacheWithIgnoreError exposes an option to ignore errors during caching. -type CacheWithIgnoreError struct { - IgnoreError *bool `pulumi:"ignoreError,optional"` -} - -// Annotate sets docstrings and defaults on CacheWithIgnoreError. -func (c *CacheWithIgnoreError) Annotate(a infer.Annotator) { - a.SetDefault(&c.IgnoreError, false) - a.Describe(&c.IgnoreError, "Ignore errors caused by failed cache exports.") -} - -func (c CacheWithIgnoreError) String() string { - if c.IgnoreError == nil { - return "" - } - return fmt.Sprintf("ignore-error=%t", *c.IgnoreError) -} - -// CacheToS3 pushes cache manifests to an S3-compatible API. -type CacheToS3 struct { - CacheWithMode - CacheWithIgnoreError - - CacheFromS3 -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheToS3) String() string { - if c == nil { - return "" - } - return join(&c.CacheFromS3, c.CacheWithMode, c.CacheWithIgnoreError) -} - -// Raw is a CLI-encoded cache entry appropriate for passing directly to the -// CLI. Useful if the Docker backend supports cache types not captured by our -// API, or if the user just prefers "type=..." inputs. -type Raw string - -// String return the raw string as-is. This can be empty during previews where -// the user has provided a value but it is unknown. -func (c Raw) String() string { - return string(c) -} - -// CacheFrom is a "union" type for all of our available `--cache-from` options. -type CacheFrom struct { - Local *CacheFromLocal `pulumi:"local,optional"` - Registry *CacheFromRegistry `pulumi:"registry,optional"` - GHA *CacheFromGitHubActions `pulumi:"gha,optional"` - AZBlob *CacheFromAzureBlob `pulumi:"azblob,optional"` - S3 *CacheFromS3 `pulumi:"s3,optional"` - Raw Raw `pulumi:"raw,optional"` - - Disabled bool `pulumi:"disabled,optional"` -} - -// Annotate sets docstrings and defaults on CacheFrom. -func (c *CacheFrom) Annotate(a infer.Annotator) { - a.Describe(&c.Local, dedent(` - A simple backend which caches images on your local filesystem. - `)) - a.Describe(&c.Registry, dedent(` - Upload build caches to remote registries. - `)) - a.Describe(&c.GHA, dedent(` - Recommended for use with GitHub Actions workflows. - - An action like "crazy-max/ghaction-github-runtime" is recommended to - expose appropriate credentials to your GitHub workflow. - `)) - a.Describe(&c.AZBlob, dedent(` - Upload build caches to Azure's blob storage service. - `)) - a.Describe(&c.S3, dedent(` - Upload build caches to AWS S3 or an S3-compatible services such as - MinIO. - `)) - a.Describe(&c.Raw, dedent(` - A raw string as you would provide it to the Docker CLI (e.g., - "type=inline"). - `)) - - a.Describe(&c.Disabled, dedent(` - When "true" this entry will be excluded. Defaults to "false". - `)) -} - -// String returns a CLI-encoded value for this `--cache-from` entry, or an -// empty string if disabled. `validate` should be called to ensure only one -// entry was set. -func (c CacheFrom) String() string { - if c.Disabled { - return "" - } - return join(c.Local, c.Registry, c.GHA, c.AZBlob, c.S3, c.Raw) -} - -func (c CacheFrom) validate(preview bool) (*controllerapi.CacheOptionsEntry, error) { - if strings.Count(c.String(), "type=") > 1 { - return nil, errors.New("cacheFrom should only specify one cache type") - } - parsed, err := buildflags.ParseCacheEntry([]string{c.String()}) - if err != nil { - return nil, err - } - if len(parsed) == 0 { - // This can happen for example if we have a GHA cache but no GitHub - // environment variables set. - // Shouldn't happen... - return nil, nil - } - return parsed[0], nil -} - -// CacheToInline embeds cache information directly into an image. -type CacheToInline struct{} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if unknown. -func (c *CacheToInline) String() string { - if c == nil { - return "" - } - return "type=inline" -} - -// Annotate sets docstrings on CacheToInline. -func (c *CacheToInline) Annotate(a infer.Annotator) { - a.Describe(&c, dedent(` - Include an inline cache with the exported image. - `)) -} - -// CacheToLocal writes cache manifests to a local directory. -type CacheToLocal struct { - CacheWithCompression - CacheWithIgnoreError - CacheWithMode - - Dest string `pulumi:"dest"` -} - -// Annotate sets docstrings on CacheToLocal. -func (c *CacheToLocal) Annotate(a infer.Annotator) { - a.Describe(&c.Dest, dedent(` - Path of the local directory to export the cache. - `)) -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheToLocal) String() string { - if c == nil { - return "" - } - return join( - Raw("type=local,dest="+c.Dest), - c.CacheWithCompression, - c.CacheWithIgnoreError, - ) -} - -// CacheToRegistry pushes cache manifests to a remote registry. -type CacheToRegistry struct { - CacheWithMode - CacheWithIgnoreError - CacheWithOCI - CacheWithCompression - - CacheFromRegistry -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheToRegistry) String() string { - if c == nil { - return "" - } - return join( - &c.CacheFromRegistry, - c.CacheWithMode, - c.CacheWithIgnoreError, - c.CacheWithOCI, - c.CacheWithCompression, - ) -} - -// CacheWithCompression is a cache with options to configure compression -// settings. -type CacheWithCompression struct { - Compression *CompressionType `pulumi:"compression,optional"` - CompressionLevel int `pulumi:"compressionLevel,optional"` - ForceCompression *bool `pulumi:"forceCompression,optional"` -} - -// Annotate sets docstrings and defaults on CacheWithCompression. -func (c *CacheWithCompression) Annotate(a infer.Annotator) { - a.SetDefault(&c.Compression, Gzip) - a.SetDefault(&c.CompressionLevel, 0) - a.SetDefault(&c.ForceCompression, false) - - a.Describe(&c.Compression, "The compression type to use.") - a.Describe(&c.CompressionLevel, "Compression level from 0 to 22.") - a.Describe(&c.ForceCompression, "Forcefully apply compression.") -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c CacheWithCompression) String() string { - if c.CompressionLevel == 0 { - return "" - } - parts := []string{} - if c.Compression != nil { - parts = append(parts, fmt.Sprintf("compression=%s", *c.Compression)) - } - if c.CompressionLevel > 0 { - cl := c.CompressionLevel - if cl > 22 { - cl = 22 - } - parts = append(parts, fmt.Sprintf("compression-level=%d", cl)) - } - if c.ForceCompression != nil { - parts = append(parts, fmt.Sprintf("force-compression=%t", *c.ForceCompression)) - } - return strings.Join(parts, ",") -} - -// CacheToGitHubActions pushes cache manifests to the GitHub Actions cache -// backend. -type CacheToGitHubActions struct { - CacheWithMode - CacheWithIgnoreError - - CacheFromGitHubActions -} - -// String returns the CLI-encoded value of these cache options, or an empty -// string if the receiver is nil. -func (c *CacheToGitHubActions) String() string { - if c == nil { - return "" - } - return join(&c.CacheFromGitHubActions, c.CacheWithMode, c.CacheWithIgnoreError) -} - -// CacheTo is a "union" type for all of our available `--cache-to` options. -type CacheTo struct { - Inline *CacheToInline `pulumi:"inline,optional"` - Local *CacheToLocal `pulumi:"local,optional"` - Registry *CacheToRegistry `pulumi:"registry,optional"` - GHA *CacheToGitHubActions `pulumi:"gha,optional"` - AZBlob *CacheToAzureBlob `pulumi:"azblob,optional"` - S3 *CacheToS3 `pulumi:"s3,optional"` - Raw Raw `pulumi:"raw,optional"` - - Disabled bool `pulumi:"disabled,optional"` -} - -// Annotate sets docstrings and defaults on CacheTo. -func (c *CacheTo) Annotate(a infer.Annotator) { - a.Describe(&c.Inline, dedent(` - The inline cache storage backend is the simplest implementation to get - started with, but it does not handle multi-stage builds. Consider the - "registry" cache backend instead. - `)) - a.Describe(&c.Local, dedent(` - A simple backend which caches imagines on your local filesystem. - `)) - a.Describe(&c.Registry, dedent(` - Push caches to remote registries. Incompatible with the "docker" build - driver. - `)) - a.Describe(&c.GHA, dedent(` - Recommended for use with GitHub Actions workflows. - - An action like "crazy-max/ghaction-github-runtime" is recommended to - expose appropriate credentials to your GitHub workflow. - `)) - a.Describe(&c.AZBlob, dedent(` - Push cache to Azure's blob storage service. - `)) - a.Describe(&c.S3, dedent(` - Push cache to AWS S3 or S3-compatible services such as MinIO. - `)) - a.Describe(&c.Raw, dedent(` - A raw string as you would provide it to the Docker CLI (e.g., - "type=inline")`, - )) - - a.Describe(&c.Disabled, dedent(` - When "true" this entry will be excluded. Defaults to "false". - `)) -} - -// String returns a CLI-encoded value for this `--cache-to` entry, or an -// empty string if disabled. `validate` should be called to ensure only one -// entry was set. -func (c CacheTo) String() string { - if c.Disabled { - return "" - } - return join(c.Inline, c.Local, c.Registry, c.GHA, c.AZBlob, c.S3, c.Raw) -} - -func (c CacheTo) validate(preview bool) (*controllerapi.CacheOptionsEntry, error) { - if strings.Count(c.String(), "type=") > 1 { - return nil, errors.New("cacheTo should only specify one cache type") - } - parsed, err := buildflags.ParseCacheEntry([]string{c.String()}) - if err != nil { - return nil, err - } - if len(parsed) == 0 { - // This can happen for example if we have a GHA cache but no GitHub - // environment variables set. - // Shouldn't happen... - return nil, nil - } - return parsed[0], nil -} - -// CacheMode controls the complexity of exported cache manifests. -type CacheMode string - -const ( - Min CacheMode = "min" // Min cache mode. - Max CacheMode = "max" // Max cache mode. -) - -// Values returns all valid CacheMode values for SDK generation. -func (CacheMode) Values() []infer.EnumValue[CacheMode] { - return []infer.EnumValue[CacheMode]{ - { - Value: Min, - Description: "Only layers that are exported into the resulting image are cached.", - }, - { - Value: Max, - Description: "All layers are cached, even those of intermediate steps.", - }, - } -} - -// CompressionType is the algorithm used for compressing blobs. -type CompressionType string - -const ( - Gzip CompressionType = "gzip" // Gzip compression. - Estargz CompressionType = "estargz" // Estargz compression. - Zstd CompressionType = "zstd" // Zstd compression. -) - -// Values returns all valid CompressionType values for SDK generation. -func (CompressionType) Values() []infer.EnumValue[CompressionType] { - return []infer.EnumValue[CompressionType]{ - {Value: Gzip, Description: "Use `gzip` for compression."}, - {Value: Estargz, Description: "Use `estargz` for compression."}, - {Value: Zstd, Description: "Use `zstd` for compression."}, - } -} - -type joiner struct{ sep string } - -func (j joiner) join(ss ...fmt.Stringer) string { - parts := []string{} - for _, s := range ss { - p := s.String() - if p == "" { - continue - } - parts = append(parts, p) - } - return strings.Join(parts, j.sep) -} - -func join(ss ...fmt.Stringer) string { - return joiner{","}.join(ss...) -} diff --git a/provider/internal/cache_test.go b/provider/internal/cache_test.go deleted file mode 100644 index ad5dc79..0000000 --- a/provider/internal/cache_test.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "fmt" - "testing" - - "github.com/docker/buildx/util/buildflags" - "github.com/stretchr/testify/assert" - - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func TestCacheString(t *testing.T) { - t.Parallel() - gzip := Gzip - - tests := []struct { - name string - given fmt.Stringer - want string - }{ - { - name: "s3", - given: CacheTo{S3: &CacheToS3{ - CacheFromS3: CacheFromS3{ - Region: "us-west-2", - Bucket: "bucket-foo", - Name: "myname", - EndpointURL: "https://some.endpoint", - BlobsPrefix: "blob-prefix", - ManifestsPrefix: "manifest-prefix", - UsePathStyle: pulumi.BoolRef(true), - AccessKeyID: "access-key-id", - SecretAccessKey: "secret-key", - SessionToken: "session", - }, - }}, - //nolint:lll // Taken from AWS reference docs. - want: "type=s3,bucket=bucket-foo,name=myname,endpoint_url=https://some.endpoint,blobs_prefix=blob-prefix,manifests_prefix=manifest-prefix,use_path_type=true,access_key_id=access-key-id,secret_access_key=secret-key,session_token=session", - }, - { - name: "gha", - given: CacheTo{GHA: &CacheToGitHubActions{}}, - want: "type=gha", - }, - { - name: "from-local", - given: CacheFrom{Local: &CacheFromLocal{Src: "/foo/bar"}}, - want: "type=local,src=/foo/bar", - }, - { - name: "to-local", - given: CacheTo{Local: &CacheToLocal{Dest: "/foo/bar"}}, - want: "type=local,dest=/foo/bar", - }, - { - name: "inline", - given: CacheTo{Inline: &CacheToInline{}}, - want: "type=inline", - }, - { - name: "raw", - given: CacheTo{Raw: Raw("type=gha")}, - want: "type=gha", - }, - { - name: "compression", - given: CacheTo{Local: &CacheToLocal{ - Dest: "/foo", - CacheWithCompression: CacheWithCompression{ - Compression: &gzip, - CompressionLevel: 100, - ForceCompression: pulumi.BoolRef(true), - }, - }}, - want: "type=local,dest=/foo,compression=gzip,compression-level=22,force-compression=true", - }, - { - name: "ignore-error", - given: CacheTo{ - AZBlob: &CacheToAzureBlob{ - CacheWithIgnoreError: CacheWithIgnoreError{pulumi.BoolRef(true)}, - }, - }, - want: "type=azblob,ignore-error=true", - }, - { - name: "oci", - given: CacheTo{ - Registry: &CacheToRegistry{ - CacheFromRegistry: CacheFromRegistry{Ref: "docker.io/foo/bar:baz"}, - CacheWithOCI: CacheWithOCI{ - OCI: pulumi.BoolRef(true), - ImageManifest: pulumi.BoolRef(true), - }, - }, - }, - want: "type=registry,ref=docker.io/foo/bar:baz,oci-mediatypes=true,image-manifest=true", - }, - { - name: "disabled-to", - given: CacheTo{ - Raw: Raw("type=gha"), - Disabled: true, - }, - want: "", - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - actual := tt.given.String() - assert.Equal(t, tt.want, actual) - - if tt.want != "" { - // Our output should be parsable by Docker. - _, err := buildflags.ParseCacheEntry([]string{actual}) - assert.NoError(t, err) - } - }) - } -} diff --git a/provider/internal/cli.go b/provider/internal/cli.go deleted file mode 100644 index a282e62..0000000 --- a/provider/internal/cli.go +++ /dev/null @@ -1,420 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:generate go run go.uber.org/mock/mockgen -typed -package internal -source cli.go -destination mockcli_test.go --self_package github.com/pulumi/pulumi-docker-build/provider/internal - -package internal - -import ( - "bufio" - "bytes" - "context" - "encoding/json" - "errors" - "fmt" - "io" - "os" - "path/filepath" - "strings" - - "github.com/docker/buildx/commands" - "github.com/docker/cli/cli-plugins/manager" - "github.com/docker/cli/cli/command" - "github.com/docker/cli/cli/config/credentials" - cfgtypes "github.com/docker/cli/cli/config/types" - "github.com/docker/cli/cli/streams" - "github.com/moby/buildkit/client" - cp "github.com/otiai10/copy" - "github.com/regclient/regclient" - "github.com/regclient/regclient/config" - "github.com/sirupsen/logrus" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -// cli wraps a DockerCLI instance with scoped auth credentials. It satisfies -// the Cli interface so it can be used with Docker's cobra.Commands directly. -// -// It buffers stdout/stderr, and layers temporary auth configs on top of the -// host's existing auth. -type cli struct { - command.Cli - - auths map[string]cfgtypes.AuthConfig - host *host - - in string // stdin - r, w *os.File // stdout - err bytes.Buffer // stderr - dumplogs bool // if true then tail() will re-log status messages - done chan struct{} // signaled when all logs have been forwarded to the engine. -} - -// Cli wraps the Docker interface for mock generation. -type Cli interface { - command.Cli -} - -// wrap creates a new cli client with auth configs layered on top of our host's -// auth. Repeated auth for the same host will take precedence over earlier -// credentials. -func wrap(host *host, registries ...Registry) (*cli, error) { - // We need to create a new DockerCLI instance because we don't want the - // auth changes we make to the ConfigFile to leak to the host. - docker, err := newDockerCLI(host.config) - if err != nil { - return nil, err - } - - auths := map[string]cfgtypes.AuthConfig{} - for k, v := range host.auths { - if k != config.DockerRegistryAuth { - k = credentials.ConvertToHostname(k) - } - auths[k] = cfgtypes.AuthConfig{ - ServerAddress: v.ServerAddress, - Username: v.Username, - Password: v.Password, - } - } - - for _, r := range registries { - // HostNewName takes care of DockerHub's special-casing for us. - h := config.HostNewName(credentials.ConvertToHostname(r.Address)) - key := h.CredHost - if key == "" { - key = h.Hostname - } - - auths[key] = cfgtypes.AuthConfig{ - ServerAddress: h.Hostname, - Username: r.Username, - Password: r.Password, - } - } - - // Override our config's auth and disable any credential helpers. Auth - // lookups will now only return whatever we have in memory. - cfg := docker.ConfigFile() - cfg.AuthConfigs = auths - cfg.CredentialHelpers = nil - cfg.CredentialsStore = "" - - r, w, err := os.Pipe() - if err != nil { - return nil, err - } - - wrapped := &cli{ - Cli: docker, - host: host, - auths: auths, - r: r, - w: w, - } - - return wrapped, nil -} - -func (c *cli) In() *streams.In { - return streams.NewIn(io.NopCloser(strings.NewReader(c.in))) -} - -func (c *cli) Out() *streams.Out { - return streams.NewOut(c.w) -} - -func (c *cli) Err() *streams.Out { - return streams.NewOut(&c.err) -} - -// rc returns a registry client with matching auth. -func (c *cli) rc() *regclient.RegClient { - hosts := []config.Host{} - for k, v := range c.auths { - h := config.HostNewName(k) - h.User = v.Username - h.Pass = v.Password - hosts = append(hosts, *h) - } - return regclient.New( - regclient.WithConfigHost(hosts...), - ) -} - -// tail is meant to be called as a goroutine and will pipe output from the CLI -// back to the Pulumi engine. Requires a corresponding call to close. -func (c *cli) tail(ctx context.Context) { - c.done = make(chan struct{}, 1) - defer func() { - c.done <- struct{}{} - if err := recover(); err != nil { - fmt.Fprintf(os.Stderr, "recovered: %s\n", err) - } - }() - - b := bytes.Buffer{} - - s := bufio.NewScanner(c.r) - for s.Scan() { - text := s.Text() - provider.GetLogger(ctx).InfoStatus(text) - _, _ = b.WriteString(text + "\n") - } - provider.GetLogger(ctx).InfoStatus("") // clear confusing "DONE" statements. - - if c.dumplogs { - // Persist the full Docker output on error for easier debugging. - if b.Len() > 0 { - provider.GetLogger(ctx).Info(b.String()) - } - if c.err.Len() > 0 { - provider.GetLogger(ctx).Error(c.err.String()) - } - } -} - -// close flushes any outstanding logs and cleans up resources. -func (c *cli) Close() error { - err := errors.Join(c.w.Close(), c.r.Close()) - if c.done != nil { - <-c.done - } - return err -} - -// execBuild performs a build by os.Exec'ing the docker-buildx binary. -// Credentials are communicated to docker-buildx via a temporary directory. -// Secrets are communicated via dynamic environment variables. -func (c *cli) execBuild(b Build) (*client.SolveResponse, error) { - // Setup a temporary directory for auth, and clean it up when we're done. - tmp, err := os.MkdirTemp("", "pulumi-docker-") - if err != nil { - return nil, err - } - defer contract.IgnoreError(os.RemoveAll(tmp)) - - opts := b.BuildOptions() - - builder, err := c.host.builderFor(b) - if err != nil { - return nil, err - } - - // Docker expects a "$DOCKER_CONFIG/contexts" directory in addition to - // "$DOCKER_CONFIG/config.json", so we attempt to copy this from the host - // to our temporary directory. This doesn't always exist, so we ignore errors. - hostConfigDir := filepath.Dir(c.ConfigFile().Filename) - _ = cp.Copy( - filepath.Join(hostConfigDir, "contexts"), - filepath.Join(tmp, "contexts"), - ) - - // Save our temporary credentials to $tmp/config.json. - tmpCfg := filepath.Join(tmp, filepath.Base(c.ConfigFile().Filename)) - c.ConfigFile().Filename = tmpCfg - err = c.ConfigFile().Save() - if err != nil { - return nil, err - } - - // We will spawn docker-buildx with DOCKER_CONFIG set to our temporary - // directory for auth, but BUILDX_CONFIG will point to the host. There's a - // bunch of builder state in there that we want to preserve. - env := []string{ - "DOCKER_CONFIG=" + tmp, - "BUILDX_CONFIG=" + filepath.Join(hostConfigDir, "buildx"), - } - - // We need to write to this file in order to recover information about the - // build, like the digest. - metadata := filepath.Clean(filepath.Join(tmp, "metadata.json")) - args := []string{ - "buildx", - "build", - "--progress", "plain", - "--metadata-file", metadata, - "--builder", builder.name, - } - - // TODO: --allow - // TODO: --annotation - // TODO: --attest - // TODO: --cgroup-parent - - for k, v := range opts.BuildArgs { - args = append(args, "--build-arg", fmt.Sprintf("%s=%s", k, v)) - } - if opts.Builder != "" { - args = append(args, "--builder", opts.Builder) - } - for _, c := range opts.CacheFrom { - args = append(args, "--cache-from", attrcsv(c.Type, c.Attrs)) - } - for _, c := range opts.CacheTo { - args = append(args, "--cache-to", attrcsv(c.Type, c.Attrs)) - } - if opts.ExportLoad { - args = append(args, "--load") - } - if opts.ExportPush { - args = append(args, "--push") - } - for _, e := range opts.Exports { - args = append(args, "--output", attrcsv(e.Type, e.Attrs)) - } - for _, h := range opts.ExtraHosts { - args = append(args, "--add-host", h) - } - for k, v := range opts.NamedContexts { - args = append(args, "--build-context", fmt.Sprintf("%s=%s", k, v)) - } - for k, v := range opts.Labels { - args = append(args, "--label", fmt.Sprintf("%s=%s", k, v)) - } - if opts.NetworkMode != "" { - args = append(args, "--network", opts.NetworkMode) - } - if opts.NoCache { - args = append(args, "--no-cache") - } - for _, p := range opts.Platforms { - args = append(args, "--platform", p) - } - if opts.Pull { - args = append(args, "--pull") - } - for _, ssh := range opts.SSH { - s := ssh.ID - if len(ssh.Paths) > 0 { - s += "=" + strings.Join(ssh.Paths, ",") - } - args = append(args, "--ssh", s) - } - for _, t := range opts.Tags { - args = append(args, "--tag", t) - } - if opts.Target != "" { - args = append(args, "--target", opts.Target) - } - if opts.DockerfileName != "" { - args = append(args, "-f", opts.DockerfileName) - } - if in := b.Inline(); in != "" { - c.in = in - args = append(args, "-f", "-") - } - if opts.ContextPath != "" { - args = append(args, opts.ContextPath) - } - - // We pass secrets by value via dynamic PULUMI_DOCKER_* environment - // variables. - for _, s := range opts.Secrets { - envvar, err := resource.NewUniqueHex("PULUMI_DOCKER_", 0, 0) - if err != nil { - return nil, err - } - // We abuse the pb.Secret proto by stuffing the secret's value in - // XXX_unrecognized. We never serialize this proto so this is tolerable. - env = append(env, fmt.Sprintf("%s=%s", envvar, s.XXX_unrecognized)) - args = append(args, "--secret", fmt.Sprintf("id=%s,env=%s", s.ID, envvar)) - } - - // Invoke docker-buildx. - err = c.exec(args, env) - if err != nil { - return nil, err - } - - // Read the metadata file and transform it back into the map[string]string - // structure originally returned by the exporter. - _, err = os.Stat(metadata) - if err != nil { - return nil, fmt.Errorf("missing metadata: %w", err) - } - out, err := os.ReadFile(metadata) - if err != nil { - return nil, err - } - var raw map[string]any - err = json.Unmarshal(out, &raw) - if err != nil { - return nil, err - } - resp := map[string]string{} - for k, v := range raw { - switch vv := v.(type) { - case string: - resp[k] = vv - default: - out, err := json.Marshal(v) - if err != nil { - continue - } - resp[k] = string(out) - } - } - - return &client.SolveResponse{ExporterResponse: resp}, nil -} - -// exec invokes a Docker plugin binary. The first argument should be the name -// of the plugin's subcommand, e.g. "buildx". -func (c *cli) exec(args, extraEnv []string) error { - if len(args) == 0 { - return errors.New("args must be non-empty") - } - name := args[0] - - root := commands.NewRootCmd(name, false, c) - plug, err := manager.GetPlugin(name, c, root) - if err != nil { - return err - } - if plug.Err != nil { - return plug.Err - } - - defer contract.IgnoreClose(c.w) - - cmd, err := manager.PluginRunCommand(c, name, root) - if err != nil { - return err - } - cmd.Args = append([]string{cmd.Args[0]}, args...) - cmd.Stderr = c.Err() - cmd.Stdout = c.Out() - cmd.Stdin = c.In() - - cmd.Env = append(cmd.Env, extraEnv...) - - return cmd.Run() -} - -// attrcsv transforms key/values into a CSV: key1=value1,key2=value2,... -func attrcsv(typ string, m map[string]string) string { - s := []string{"type=" + typ} - for k, v := range m { - s = append(s, fmt.Sprintf("%s=%s", k, v)) - } - return strings.Join(s, ",") -} - -func init() { - // Disable the CLI's tendency to log randomly to stdout. - logrus.SetOutput(io.Discard) -} diff --git a/provider/internal/cli_test.go b/provider/internal/cli_test.go deleted file mode 100644 index 1ebe642..0000000 --- a/provider/internal/cli_test.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "io" - "testing" - - "github.com/docker/cli/cli/config/types" - "github.com/regclient/regclient/config" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestExec(t *testing.T) { - t.Parallel() - - h, err := newHost(nil) - require.NoError(t, err) - cli, err := wrap(h) - require.NoError(t, err) - - err = cli.exec([]string{"buildx", "version"}, nil) - assert.NoError(t, err) - - out, err := io.ReadAll(cli.r) - require.NoError(t, err) - assert.Contains(t, string(out), "github.com/docker/buildx") -} - -func TestWrappedAuth(t *testing.T) { - t.Parallel() - ecr := "https://1234.dkr.ecr.us-west-2.amazonaws.com" - - realhost, err := newHost(nil) - require.NoError(t, err) - - h := &host{ - auths: map[string]types.AuthConfig{ - ecr: { - Username: "host-aws-user", - Password: "host-aws-password", - ServerAddress: ecr, - }, - "https://misc": { // Legacy config includes http/https scheme. - Username: "host-misc-user", - Password: "host-misc-password", - ServerAddress: "misc", - }, - }, - } - - registries := []Registry{ - { - Address: "1234.dkr.ecr.us-west-2.amazonaws.com", - Username: "resource-aws-user", - Password: "resource-aws-password", - }, - { - Address: "docker.io", - Username: "resource-dockerhub-user", - Password: "resource-dockerhub-password", - }, - } - - _, err = wrap(h, registries...) - require.NoError(t, err) - - cli, err := wrap(h, registries...) - require.NoError(t, err) - - expected := map[string]types.AuthConfig{ - "1234.dkr.ecr.us-west-2.amazonaws.com": { - Username: "resource-aws-user", - Password: "resource-aws-password", - 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. - - // Assert that our on-disk host's auth is untouched. - realhostRefreshed, err := newHost(nil) - require.NoError(t, err) - assert.Equal(t, realhost.auths, realhostRefreshed.auths) -} diff --git a/provider/internal/client.go b/provider/internal/client.go deleted file mode 100644 index 8094a16..0000000 --- a/provider/internal/client.go +++ /dev/null @@ -1,366 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:generate go run go.uber.org/mock/mockgen -typed -package internal -source client.go -destination mockclient_test.go --self_package github.com/pulumi/pulumi-docker-build/provider/internal - -package internal - -import ( - "bytes" - "context" - "errors" - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/distribution/reference" - buildx "github.com/docker/buildx/build" - "github.com/docker/buildx/commands" - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/buildx/util/dockerutil" - "github.com/docker/buildx/util/platformutil" - "github.com/docker/buildx/util/progress" - "github.com/docker/cli/cli/command" - "github.com/docker/cli/cli/flags" - "github.com/docker/docker/api/types/image" - "github.com/moby/buildkit/client" - "github.com/moby/buildkit/session" - "github.com/moby/buildkit/session/auth/authprovider" - "github.com/moby/buildkit/util/progress/progressui" - "github.com/regclient/regclient/types/descriptor" - "github.com/regclient/regclient/types/errs" - "github.com/regclient/regclient/types/manifest" - "github.com/regclient/regclient/types/ref" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -// Client handles all our Docker API calls. -type Client interface { - Build(ctx context.Context, b Build) (*client.SolveResponse, error) - BuildKitEnabled() (bool, error) - Inspect(ctx context.Context, id string) ([]descriptor.Descriptor, error) - Delete(ctx context.Context, id string) error - - ManifestCreate(ctx context.Context, push bool, target string, refs ...string) error - ManifestInspect(ctx context.Context, target string) (string, error) - ManifestDelete(ctx context.Context, target string) error -} - -// Build encapsulates all of the user-provider build parameters and options. -type Build interface { - BuildOptions() controllerapi.BuildOptions - Inline() string - ShouldExec() bool - Secrets() session.Attachable -} - -var _ Client = (*cli)(nil) - -func newDockerCLI(config *Config) (*command.DockerCli, error) { - cli, err := command.NewDockerCli( - command.WithDefaultContextStoreConfig(), - command.WithContentTrustFromEnv(), - ) - if err != nil { - return nil, err - } - - opts := flags.NewClientOptions() - if config != nil && config.Host != "" { - opts.Hosts = append(opts.Hosts, config.Host) - } - err = cli.Initialize(opts) - if err != nil { - return nil, err - } - - // TODO: Log some version information for debugging. - - return cli, nil -} - -// Build performs a BuildKit build. Returns a map of target names (or one name, -// "default", if no targets were specified) to SolveResponses, which capture -// the build's digest and tags (if any). -func (c *cli) Build( - ctx context.Context, - build Build, -) (*client.SolveResponse, error) { - opts := build.BuildOptions() - - go c.tail(ctx) - defer contract.IgnoreClose(c) - - if build.ShouldExec() { - return c.execBuild(build) - } - - b, err := c.host.builderFor(build) - if err != nil { - return nil, err - } - printer, err := progress.NewPrinter(ctx, c.w, - progressui.PlainMode, - progress.WithDesc( - fmt.Sprintf("building with %q instance using %s driver", b.name, b.driver), - fmt.Sprintf("%s:%s", b.driver, b.name), - ), - ) - if err != nil { - return nil, fmt.Errorf("creating printer: %w", err) - } - defer func() { - // Log any warnings when we're done. - _ = printer.Wait() - for _, w := range printer.Warnings() { - b := &bytes.Buffer{} - _, _ = b.Write(w.Short) - for _, d := range w.Detail { - _ = b.WriteByte('\n') - _, _ = b.Write(d) - } - provider.GetLogger(ctx).Warning(b.String()) - } - }() - - cacheFrom := []client.CacheOptionsEntry{} - for _, c := range opts.CacheFrom { - if c == nil { - continue - } - cacheFrom = append(cacheFrom, client.CacheOptionsEntry{ - Type: c.Type, - Attrs: c.Attrs, - }) - } - cacheTo := []client.CacheOptionsEntry{} - for _, c := range opts.CacheTo { - if c == nil { - continue - } - cacheTo = append(cacheTo, client.CacheOptionsEntry{ - Type: c.Type, - Attrs: c.Attrs, - }) - } - exports := []client.ExportEntry{} - for _, e := range opts.Exports { - if e == nil { - continue - } - exports = append(exports, client.ExportEntry{ - Type: e.Type, - Attrs: e.Attrs, - OutputDir: e.Destination, - }) - } - platforms, _ := platformutil.Parse(opts.Platforms) - platforms = platformutil.Dedupe(platforms) - - namedContexts := map[string]buildx.NamedContext{} - for k, v := range opts.NamedContexts { - ref, err := reference.ParseNormalizedNamed(k) - if err != nil { - return nil, err - } - name := strings.TrimSuffix(reference.FamiliarString(ref), ":latest") - namedContexts[name] = buildx.NamedContext{Path: v} - } - - ssh, err := controllerapi.CreateSSH(opts.SSH) - if err != nil { - return nil, err - } - - target := opts.Target - if target == "" { - target = "default" - } - payload := map[string]buildx.Options{ - target: { - Inputs: buildx.Inputs{ - ContextPath: opts.ContextPath, - DockerfilePath: opts.DockerfileName, - DockerfileInline: build.Inline(), - NamedContexts: namedContexts, - InStream: strings.NewReader(""), - }, - // Disable default provenance for now. Docker's `manifest create` - // doesn't handle manifests with provenance included; more reason - // to use imagetools instead. - Attests: map[string]*string{"provenance": nil}, - BuildArgs: opts.BuildArgs, - CacheFrom: cacheFrom, - CacheTo: cacheTo, - Exports: exports, - ExtraHosts: opts.ExtraHosts, - NetworkMode: opts.NetworkMode, - NoCache: opts.NoCache, - Labels: opts.Labels, - Platforms: platforms, - Pull: opts.Pull, - Tags: opts.Tags, - Target: opts.Target, - - Session: []session.Attachable{ - ssh, - authprovider.NewDockerAuthProvider(c.ConfigFile(), nil), - build.Secrets(), - }, - }, - } - - // Perform the build. - results, err := buildx.Build( - ctx, - b.nodes, - payload, - dockerutil.NewClient(c), - filepath.Dir(c.ConfigFile().Filename), - printer, - ) - if err != nil { - c.dumplogs = true - return nil, err - } - - return results[target], err -} - -// BuildKitEnabled returns true if the client supports buildkit. -func (c *cli) BuildKitEnabled() (bool, error) { - return c.Cli.BuildKitEnabled() -} - -func (c *cli) ManifestCreate(ctx context.Context, push bool, target string, refs ...string) error { - go c.tail(ctx) - defer contract.IgnoreClose(c) - - args := []string{ - // "buildx", - "imagetools", - "create", - "--progress=plain", - "--tag", target, - } - - if !push { - args = append(args, "--dry-run") - } - - args = append(args, refs...) - - cmd := commands.NewRootCmd(os.Args[0], false, c) - - cmd.SetArgs(args) - cmd.SetErr(c.Err()) - cmd.SetOut(c.Out()) - - provider.GetLogger(ctx).Debug(fmt.Sprint("creating manifest with args", args)) - return cmd.ExecuteContext(ctx) -} - -func (c *cli) ManifestInspect(ctx context.Context, target string) (string, error) { - rc := c.rc() - - ref, err := ref.New(target) - if err != nil { - return "", err - } - - m, err := rc.ManifestHead(ctx, ref) - if err != nil { - return "", fmt.Errorf("fetching %q: %w", ref, err) - } - - return string(m.GetDescriptor().Digest), nil -} - -func (c *cli) ManifestDelete(ctx context.Context, target string) error { - rc := c.rc() - - ref, err := ref.New(target) - if err != nil { - return err - } - - err = rc.ManifestDelete(ctx, ref) - if errors.Is(err, errs.ErrHTTPStatus) { - provider.GetLogger(ctx).Warning("this registry does not support deletions") - return nil - } - if err != nil { - return err - } - - return nil -} - -// Inspect inspects an image. -func (c *cli) Inspect(ctx context.Context, r string) ([]descriptor.Descriptor, error) { - ref, err := ref.New(r) - if err != nil { - return nil, err - } - rc := c.rc() - - m, err := rc.ManifestGet(ctx, ref) - if err != nil { - return nil, err - } - - if mi, ok := m.(manifest.Indexer); ok { - return mi.GetManifestList() - } - - return []descriptor.Descriptor{m.GetDescriptor()}, nil -} - -// Delete attempts to delete an image with the given ref. Many registries don't -// support the DELETE API yet, so this operation is not guaranteed to work. -func (c *cli) Delete(ctx context.Context, r string) error { - // Attempt to delete the ref locally if it exists. - _, _ = c.Client().ImageRemove(ctx, r, image.RemoveOptions{ - Force: true, // Needed in case the image has multiple tags. - }) - - // Attempt to delete the ref remotely if it was pushed -- requires a - // digest. - ref, err := ref.New(r) - if err != nil || ref.Digest == "" { - return nil - } - - rc := c.rc() - - // TODO: Multi-platform manifests are left dangling on ECR. - - _ = rc.ManifestDelete(ctx, ref) - - return nil -} - -func normalizeReference(ref string) (reference.Named, error) { - namedRef, err := reference.ParseNormalizedNamed(ref) - if err != nil { - return nil, err - } - if _, isDigested := namedRef.(reference.Canonical); !isDigested { - return reference.TagNameOnly(namedRef), nil - } - return namedRef, nil -} diff --git a/provider/internal/client_test.go b/provider/internal/client_test.go deleted file mode 100644 index c7f5c93..0000000 --- a/provider/internal/client_test.go +++ /dev/null @@ -1,455 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "bytes" - "context" - "io" - "log/slog" - "os" - "path/filepath" - "testing" - - "github.com/docker/docker/api/types/registry" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestAuth(t *testing.T) { - t.Parallel() - user := "pulumibot" - if u := os.Getenv("DOCKER_HUB_USER"); u != "" { - user = u - } - password := os.Getenv("DOCKER_HUB_PASSWORD") - address := "docker.io" - - cli := testcli(t, true, Registry{ - Address: address, - Username: user, - Password: password, - }) - - _, err := cli.Client(). - RegistryLogin(context.Background(), registry.AuthConfig{ServerAddress: address}) - assert.NoError(t, err) -} - -func TestCustomHost(t *testing.T) { - socket := "unix:///foo/bar.sock" - - //nolint:paralleltest // not compatible with Setenv - t.Run("env", func(t *testing.T) { - t.Setenv("DOCKER_HOST", socket) - - h, err := newHost(nil) - require.NoError(t, err) - cli, err := wrap(h) - require.NoError(t, err) - - assert.Equal(t, socket, cli.Client().DaemonHost()) - assert.Equal(t, socket, cli.DockerEndpoint().Host) - }) - - t.Run("config", func(t *testing.T) { - t.Parallel() - h, err := newHost(&Config{Host: socket}) - require.NoError(t, err) - cli, err := wrap(h) - require.NoError(t, err) - - assert.Equal(t, socket, cli.Client().DaemonHost()) - assert.Equal(t, socket, cli.DockerEndpoint().Host) - }) -} - -func TestBuild(t *testing.T) { - t.Parallel() - - tmpdir := t.TempDir() - Max := Max - - exampleContext := &BuildContext{Context: Context{Location: "../../examples/app"}} - - tests := []struct { - name string - skip bool - args ImageArgs - - auths []Registry - }{ - { - name: "multiPlatform", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.multiPlatform", - }, - Platforms: []Platform{"plan9/amd64", "plan9/arm64"}, - }, - }, - { - name: "registryPush", - skip: os.Getenv("DOCKER_HUB_PASSWORD") == "", - args: ImageArgs{ - Context: exampleContext, - Tags: []string{"docker.io/pulumibot/buildkit-e2e:unit"}, - Push: true, - }, - auths: []Registry{{ - Address: "docker.io", - Username: "pulumibot", - Password: os.Getenv("DOCKER_HUB_PASSWORD"), - }}, - }, - { - name: "cached", - args: ImageArgs{ - Context: exampleContext, - Tags: []string{"cached"}, - CacheTo: []CacheTo{{Local: &CacheToLocal{ - Dest: filepath.Join(tmpdir, "cache"), - CacheWithMode: CacheWithMode{Mode: &Max}, - }}}, - CacheFrom: []CacheFrom{{Local: &CacheFromLocal{ - Src: filepath.Join(tmpdir, "cache"), - }}}, - }, - }, - { - name: "buildArgs", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.buildArgs", - }, - BuildArgs: map[string]string{ - "SET_ME_TO_TRUE": "true", - }, - }, - }, - { - name: "extraHosts", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.extraHosts", - }, - AddHosts: []string{ - "metadata.google.internal:169.254.169.254", - }, - }, - }, - { - name: "sshMount", - skip: os.Getenv("SSH_AUTH_SOCK") == "", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.sshMount", - }, - SSH: []SSH{{ID: "default"}}, - }, - }, - { - name: "secrets", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.secrets", - }, - Secrets: map[string]string{ - "password": "hunter2", - }, - NoCache: true, - }, - }, - { - name: "labels", - args: ImageArgs{ - Context: exampleContext, - Labels: map[string]string{ - "description": "foo", - }, - }, - }, - { - name: "target", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.target", - }, - Target: "build-me", - }, - }, - { - name: "namedContext", - args: ImageArgs{ - Context: &BuildContext{ - Context: Context{ - Location: "../../examples/app", - }, - Named: NamedContexts{ - "golang:latest": Context{ - Location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - }, - }, - }, - Dockerfile: &Dockerfile{ - Location: "../../examples/app/Dockerfile.namedContexts", - }, - }, - }, - { - name: "remoteContext", - args: ImageArgs{ - Context: &BuildContext{ - Context: Context{ - Location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }, - }, - }, - }, - { - name: "remoteContextWithInline", - args: ImageArgs{ - Context: &BuildContext{ - Context: Context{ - Location: "https://github.com/docker-library/hello-world.git", - }, - }, - Dockerfile: &Dockerfile{ - Inline: dedent(` - FROM busybox - COPY hello.c ./ - `), - }, - }, - }, - { - name: "inline", - args: ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Inline: dedent(` - FROM alpine - RUN echo 👍 - `), - }, - }, - }, - { - name: "dockerLoad", - args: ImageArgs{ - Context: exampleContext, - Load: true, - }, - }, - } - - // Add an exec: true version for all of our test cases. - for _, tt := range tests { - tt := tt - tt.name = "exec-" + tt.name - tt.args.Exec = true - tmpdir := filepath.Join(t.TempDir(), "exec") - for _, c := range tt.args.CacheTo { - if c.Local != nil { - c.Local.Dest = tmpdir - } - } - for _, c := range tt.args.CacheFrom { - if c.Local != nil { - c.Local.Src = tmpdir - } - } - tests = append(tests, tt) - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - if tt.skip { - t.Skip() - } - ctx := context.Background() - cli := testcli(t, true, tt.auths...) - - build, err := tt.args.toBuild(ctx, false) - require.NoError(t, err) - - _, err = cli.Build(ctx, build) - assert.NoError(t, err, cli.err.String()) - }) - } -} - -func TestBuildkitEnabled(t *testing.T) { - t.Parallel() - cli := testcli(t, false) - ok, err := cli.BuildKitEnabled() - assert.NoError(t, err) - assert.True(t, ok) -} - -func TestInspect(t *testing.T) { - t.Parallel() - cli := testcli(t, false) - descriptors, err := cli.Inspect(context.Background(), "pulumibot/myapp:buildx") - require.NoError(t, err) - assert.Equal( - t, - "application/vnd.docker.distribution.manifest.v2+json", - descriptors[0].MediaType, - ) -} - -func TestNormalizeReference(t *testing.T) { - t.Parallel() - tests := []struct { - ref string - want string - wantErr string - }{ - { - ref: "foo", - want: "docker.io/library/foo:latest", - }, - { - ref: "pulumi/pulumi:v3.100.0", - want: "docker.io/pulumi/pulumi:v3.100.0", - }, - { - ref: "invalid:ref:format", - wantErr: "invalid reference format", - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.ref, func(t *testing.T) { - t.Parallel() - ref, err := normalizeReference(tt.ref) - if err != nil { - assert.ErrorContains(t, err, tt.wantErr) - } else { - assert.Equal(t, ref.String(), tt.want) - } - }) - } -} - -//nolint:paralleltest // Overrides default logger. -func TestBuildError(t *testing.T) { - if os.Getenv("CI") != "" { - t.Skip("flaky on CI for some reason") - } - - l := slog.Default() - defer slog.SetDefault(l) - - // Override go-provider's default logger to capture and tee to stdout. - logger := &bytes.Buffer{} - slog.SetDefault( - slog.New( - slog.NewTextHandler(io.MultiWriter(logger, os.Stdout), nil), - ), - ) - - exampleContext := &BuildContext{Context: Context{Location: "../../examples/app"}} - - args := ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Inline: "FROM alpine\nRUN echo hello\nRUN badcmd", - }, - } - - ctx := context.Background() - cli := testcli(t, true) - - build, err := args.toBuild(ctx, false) - require.NoError(t, err) - - _, err = cli.Build(ctx, build) - assert.Error(t, err) - - want := []string{ - `RUN echo hello`, - `/bin/sh: badcmd: not found`, - } - - for _, want := range want { - assert.Contains(t, logger.String(), want) - } - assert.ErrorContains(t, err, - `process "/bin/sh -c badcmd" did not complete successfully: exit code: 127`, - ) -} - -func TestBuildExecError(t *testing.T) { - t.Parallel() - - exampleContext := &BuildContext{Context: Context{Location: "../../examples/app"}} - - args := ImageArgs{ - Context: exampleContext, - Dockerfile: &Dockerfile{ - Inline: "FROM alpine\nRUN echo hello\nRUN badcmd", - }, - Exec: true, - } - - ctx := context.Background() - cli := testcli(t, true) - - build, err := args.toBuild(ctx, false) - require.NoError(t, err) - - _, err = cli.Build(ctx, build) - assert.Error(t, err) - - want := []string{ - `RUN echo hello`, - `/bin/sh: badcmd: not found`, - `process "/bin/sh -c badcmd" did not complete successfully: exit code: 127`, - } - - for _, want := range want { - assert.Contains(t, cli.err.String(), want) - } -} - -// testcli returns a new standalone CLI instance. Set ping to true if a live -// daemon is required -- the test will be skipped if the daemon is not available. -func testcli(t *testing.T, ping bool, auths ...Registry) *cli { - h, err := newHost(nil) - require.NoError(t, err) - - cli, err := wrap(h, auths...) - require.NoError(t, err) - - if ping { - _, err := cli.Client().Ping(context.Background()) - if err != nil { - t.Skip(err) - } - } - - return cli -} diff --git a/provider/internal/context.go b/provider/internal/context.go deleted file mode 100644 index fc00765..0000000 --- a/provider/internal/context.go +++ /dev/null @@ -1,357 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "crypto/sha256" - "encoding/hex" - "errors" - "fmt" - "hash" - "io" - gofs "io/fs" - "os" - "path" - "path/filepath" - "slices" - "syscall" - - buildx "github.com/docker/buildx/build" - "github.com/moby/patternmatcher/ignorefile" - "github.com/spf13/afero" - "github.com/tonistiigi/fsutil" - "golang.org/x/exp/maps" - - "github.com/pulumi/pulumi-go-provider/infer" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -var ( - _ infer.Annotated = (*Context)(nil) - _ infer.Annotated = (*BuildContext)(nil) -) - -// Context represents Docker's `PATH | URL | -` context argument. Inline -// context isn't supported yet. -type Context struct { - Location string `pulumi:"location"` // Location is a local directory or URL. -} - -// BuildContext represents Docker's named and unamed contexts. -type BuildContext struct { - Context - Named NamedContexts `pulumi:"named,optional"` -} - -func (bc *BuildContext) namedMap() map[string]string { - if bc == nil { - return nil - } - return bc.Named.Map() -} - -// NamedContexts correspond to Docker's `--build-context name=path` options. -// The path can be local or a remote URL. -type NamedContexts map[string]Context - -// Map returns NamedContexts as a simple map. -func (nc NamedContexts) Map() map[string]string { - m := map[string]string{} - for k, v := range nc { - m[k] = v.Location - } - return m -} - -// Annotate sets docstrings on Context. -func (c *Context) Annotate(a infer.Annotator) { - a.Describe(&c.Location, dedent(` - Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (".", "./app", - "/app", etc.). - * A remote URL of a Git repository, tarball, or plain text file - ("https://github.com/user/myrepo.git", "http://server/context.tar.gz", - etc.). - `)) -} - -// validate returns a non-nil CheckError if the Context is invalid. The -// returned Dockerfile may have defaults set to match Docker's default -// handling. The returned Dockerfile should be validated separately. Non-nil -// values are returned even in the case of errors to allow additional -// validation to be performed. -func (bc *BuildContext) validate(preview bool, d *Dockerfile) (*Dockerfile, *Context, error) { - if d == nil { - d = &Dockerfile{} - } - c := &Context{} - if bc != nil { - c = &bc.Context - } - - if c.Location == "" && preview { - // The field is required so we normally wouldn't need to check if it - // exists, but during previews it can still be empty if the value is - // unknown. This isn't an error, but it does prevent us from performing - // a build later. - return d, c, nil - } - // If this isn't a preview but our location still isn't set, default it to - // the current directory. - if c.Location == "" { - c.Location = "." - } - - if buildx.IsRemoteURL(c.Location) { - // We assume remote URLs are always valid. - return d, c, nil - } - - abs, err := filepath.Abs(c.Location) - if err != nil { - return d, c, newCheckFailure(err, "context.location") - } - - if d.Location == "" && d.Inline == "" { - // If a Dockerfile wasn't provided and our context is on-disk, then - // set our Dockerfile to a default of /Dockerfile. - d.Location = filepath.Join(c.Location, "Dockerfile") - } - - if isLocalDir(afero.NewOsFs(), abs) { - // Our context exists -- nothing else to check. - return d, c, nil - } - - if c.Location != "-" { - return d, c, newCheckFailure( - fmt.Errorf("%q: not a valid directory or URL", c.Location), - "context.location", - ) - } - - return d, c, nil -} - -// Annotate sets docstrings on BuildContext. -func (bc *BuildContext) Annotate(a infer.Annotator) { - a.Describe(&bc.Named, dedent(` - Additional build contexts to use. - - These contexts are accessed with "FROM name" or "--from=name" - statements when using Dockerfile 1.4+ syntax. - - Values can be local paths, HTTP URLs, or "docker-image://" images. - `)) -} - -// hashFile hashes a file's contents and accumulates it into the provider Hash. -func hashFile( - h hash.Hash, - fs fsutil.FS, - relativePath string, - fileMode gofs.FileMode, -) error { - if fileMode.IsDir() { - return nil - } - if !(fileMode.IsRegular() || fileMode.Type() == os.ModeSymlink) { - return nil - } - - f, err := fs.Open(relativePath) - if err != nil { - return fmt.Errorf("could not open %q: %w", relativePath, err) - } - defer contract.IgnoreClose(f) - - _, err = io.Copy(h, f) - if errors.Is(err, syscall.EISDIR) { - // Ignore symlinks to directories. - return nil - } - if err != nil { - return fmt.Errorf("could not copy %q to hash: %w", relativePath, err) - } - - h.Write([]byte(filepath.ToSlash(path.Clean(relativePath)))) - h.Write([]byte(fileMode.String())) - - return nil -} - -// hashBuildContext accumulates hashes for files in a directory. If the file is -// a symlink, the location it points to is hashed. If it is a regular file, we -// hash the contents of the file. In order to detect file renames and mode -// changes, we also write to the accumulator a relative name and file mode. -func hashBuildContext( - contextPath, dockerfilePath string, - namedContexts map[string]string, -) (string, error) { - h := sha256.New() - fs := afero.NewOsFs() - - // Grab .dockerignore if our context and/or Dockerfile is on-disk. - excludes := []string{} - if isLocalDir(fs, contextPath) || isLocalFile(fs, dockerfilePath) { - e, err := getIgnorePatterns(fs, dockerfilePath, contextPath) - if err != nil { - return "", err - } - excludes = e - } - - if isLocalFile(fs, dockerfilePath) { - err := hashDockerfile(h, dockerfilePath) - if err != nil { - return "", nil - } - } - - if isLocalDir(fs, contextPath) { - // Hash our context if it's on-disk. - fs, err := rootFS(contextPath, excludes) - if err != nil { - return "", err - } - if _, err := hashPath(h, fs); err != nil { - return "", err - } - } - - // Hash any local named contexts. Sort keys for stable iteration order. - keys := maps.Keys(namedContexts) - slices.Sort(keys) - for _, key := range keys { - namedContext := namedContexts[key] - if isLocalDir(fs, namedContext) { - fs, err := rootFS(namedContext, excludes) - if err != nil { - return "", err - } - if _, err := hashPath(h, fs); err != nil { - return "", err - } - } - } - - return hex.EncodeToString(h.Sum(nil)), nil -} - -// hashPath hashes all paths within the provided FS. -func hashPath(h hash.Hash, fs fsutil.FS) (string, error) { - err := fs.Walk( - context.Background(), - "/", - func(filePath string, dir gofs.DirEntry, err error) error { - if err != nil { - return err - } - if dir.IsDir() { - return nil - } - // fsutil.Walk makes filePath relative to the root, we join it back to get an absolute path to - // the file to hash. - fi, err := dir.Info() - if err != nil { - return err - } - return hashFile(h, fs, filePath, fi.Mode()) - }, - ) - if err != nil { - return "", fmt.Errorf("unable to hash build context: %w", err) - } - // create a hash of the entire input of the hash accumulator - return hex.EncodeToString(h.Sum(nil)), nil -} - -// hashDockerfile hashes the contents of a Dockerfile. -func hashDockerfile(h hash.Hash, path string) error { - // The Dockerfile might be capture by .dockerignore, so we explicitly hash - // its content (but not filename -- to match Docker) in order to detect - // changes in it. - df, err := os.ReadFile(filepath.Clean(path)) - if err != nil { - return fmt.Errorf("error reading dockerfile %q: %w", path, err) - } - _, err = h.Write(df) - if err != nil { - return fmt.Errorf("error hashing dockerfile %q: %w", path, err) - } - return nil -} - -// getIgnorePatterns returns all patterns to ignore when constructing a build -// context for the given Dockerfile, if any such patterns exist. -// -// Precedence is given to Dockerfile-specific ignore-files as per -// https://docs.docker.com/build/building/context/#filename-and-location. -func getIgnorePatterns(fs afero.Fs, dockerfilePath, contextRoot string) ([]string, error) { - paths := []string{ - // Prefer .dockerignore if it's present. - dockerfilePath + ".dockerignore", - } - - if isLocalDir(fs, contextRoot) { - // Otherwise fall back to the ignore-file at the root of our build context. - paths = append(paths, filepath.Join(contextRoot, ".dockerignore")) - } - - // Attempt to parse our candidate ignore-files, skipping any that don't - // exist. - for _, p := range paths { - f, err := fs.Open(p) - if errors.Is(err, afero.ErrFileNotFound) { - continue - } - if err != nil { - return nil, fmt.Errorf("reading %q: %w", p, err) - } - - ignorePatterns, err := ignorefile.ReadAll(f) - if err != nil { - contract.IgnoreClose(f) - return nil, fmt.Errorf("unable to parse %q: %w", p, err) - } - contract.IgnoreClose(f) - return ignorePatterns, nil - } - - return nil, nil -} - -func isLocalDir(fs afero.Fs, path string) bool { - stat, err := fs.Stat(path) - return err == nil && stat.IsDir() -} - -func isLocalFile(fs afero.Fs, path string) bool { - stat, err := fs.Stat(path) - return err == nil && !stat.IsDir() -} - -// rootFS returns a new fsutil.FS scoped to the given root and with the given -// exclusions. -func rootFS(root string, excludes []string) (fsutil.FS, error) { - fs, err := fsutil.NewFS(root) - if err != nil { - return nil, err - } - return fsutil.NewFilterFS(fs, &fsutil.FilterOpt{ExcludePatterns: excludes}) -} diff --git a/provider/internal/context_test.go b/provider/internal/context_test.go deleted file mode 100644 index 5157bfe..0000000 --- a/provider/internal/context_test.go +++ /dev/null @@ -1,426 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "bufio" - "os" - "path/filepath" - "strings" - "syscall" - "testing" - - "github.com/spf13/afero" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -var _dockerfile = "Dockerfile" - -func TestValidateContext(t *testing.T) { - t.Parallel() - tests := []struct { - name string - c *BuildContext - givenD Dockerfile - preview bool - - wantD *Dockerfile - wantC *Context - wantErr string - }{ - { - name: "relative", - c: &BuildContext{Context: Context{ - Location: "../internal/../internal/testdata/noop", - }}, - wantD: &Dockerfile{ - Location: "../internal/testdata/noop/Dockerfile", - }, - }, - { - name: "missing directory", - c: &BuildContext{Context: Context{ - Location: "/does/not/exist/", - }}, - wantErr: "not a valid directory", - }, - { - name: "missing default Dockerfile", - c: &BuildContext{Context: Context{ - Location: "testdata", - }}, - wantD: &Dockerfile{Location: "testdata/Dockerfile"}, - }, - { - name: "with explicit Dockerfile", - c: &BuildContext{Context: Context{ - Location: "testdata", - }}, - givenD: Dockerfile{ - Location: "testdata/Dockerfile.invalid", - }, - }, - { - name: "default location", - c: &BuildContext{Context: Context{}}, - wantD: &Dockerfile{Location: "Dockerfile"}, - }, - { - name: "remote context doesn't default to local Dockerfile", - c: &BuildContext{Context: Context{ - Location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }}, - wantD: &Dockerfile{}, - }, - { - name: "preview", - c: &BuildContext{Context: Context{}}, - preview: true, - }, - { - name: "missing context defaults to current directory", - c: nil, - wantC: &Context{Location: "."}, - wantD: &Dockerfile{Location: "Dockerfile"}, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - d, c, err := tt.c.validate(tt.preview, &tt.givenD) - - if tt.wantErr == "" { - assert.NoError(t, err) - } else { - assert.ErrorContains(t, err, tt.wantErr) - } - - if tt.wantD != nil { - assert.Equal(t, tt.wantD.Location, d.Location) - assert.Equal(t, tt.wantD.Inline, d.Inline) - } - if tt.wantC != nil { - assert.Equal(t, tt.wantC.Location, c.Location) - } - }) - } -} - -func TestHashIgnoresFile(t *testing.T) { - t.Parallel() - - step1Dir := "./testdata/ignores/basedir" - baseResult, err := hashBuildContext(step1Dir, filepath.Join(step1Dir, _dockerfile), nil) - require.NoError(t, err) - - step2Dir := "./testdata/ignores/basedir-with-ignored-files" - result, err := hashBuildContext(step2Dir, filepath.Join(step2Dir, _dockerfile), nil) - require.NoError(t, err) - - assert.Equal(t, result, baseResult) -} - -// Tests that we handle .dockerignore exclusions such as "!foo/*/bar". -// -// See: -// - https://github.com/moby/moby/issues/30018 -// - https://github.com/moby/moby/issues/45608 -// -// Buildkit handles these correctly (according to spec), Docker's classic builder does not. -func TestHashIgnoresWildcards(t *testing.T) { - t.Parallel() - baselineDir := "testdata/ignores-wildcard/basedir" - baselineResult, err := hashBuildContext( - baselineDir, - filepath.Join(baselineDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - modIgnoredDir := "testdata/ignores-wildcard/basedir-modified-ignored-file" - modIgnoredResult, err := hashBuildContext( - modIgnoredDir, - filepath.Join(modIgnoredDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - modIncludedDir := "testdata/ignores-wildcard/basedir-modified-included-file" - modIncludedResult, err := hashBuildContext( - modIncludedDir, - filepath.Join(modIncludedDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - assert.Equal( - t, - baselineResult, - modIgnoredResult, - "hash should not change when modifying ignored files", - ) - assert.NotEqual(t, baselineResult, modIncludedResult, - "hash should change when modifying included (via wildcard ignore exclusion) files") -} - -func BenchmarkHashBuildContext(b *testing.B) { - dir := "testdata/ignores-wildcard/basedir-modified-ignored-file" - for n := 0; n < b.N; n++ { - _, err := hashBuildContext(dir, filepath.Join(dir, _dockerfile), nil) - require.NoError(b, err) - - } -} - -// Tests that we handle .dockerignore exclusions such as "!foo/*/bar", as above, when using a -// relative context path. -// -//nolint:paralleltest // Incompatible with os.Chdir. -func TestHashIgnoresWildcardsRelative(t *testing.T) { - err := os.Chdir("testdata") - require.NoError(t, err) - defer func() { - err = os.Chdir("..") - require.NoError(t, err) - }() - - baselineDir := "../testdata/ignores-wildcard/basedir" - baselineResult, err := hashBuildContext( - baselineDir, - filepath.Join(baselineDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - modIgnoredDir := "../testdata/ignores-wildcard/basedir-modified-ignored-file" - modIgnoredResult, err := hashBuildContext( - modIgnoredDir, - filepath.Join(modIgnoredDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - modIncludedDir := "../testdata/ignores-wildcard/basedir-modified-included-file" - modIncludedResult, err := hashBuildContext( - modIncludedDir, - filepath.Join(modIncludedDir, _dockerfile), - nil, - ) - require.NoError(t, err) - - assert.Equal( - t, - baselineResult, - modIgnoredResult, - "hash should not change when modifying ignored files", - ) - assert.NotEqual(t, baselineResult, modIncludedResult, - "hash should change when modifying included (via wildcard ignore exclusion) files") -} - -func TestHashIgnoresDockerfileOutsideDirMove(t *testing.T) { - t.Parallel() - appDir := "./testdata/dockerfile-location-irrelevant/app" - baseResult, err := hashBuildContext( - appDir, - "./testdata/dockerfile-location-irrelevant/step1.Dockerfile", - nil, - ) - require.NoError(t, err) - - result, err := hashBuildContext( - appDir, - "./testdata/dockerfile-location-irrelevant/step2.Dockerfile", - nil, - ) - require.NoError(t, err) - - assert.Equal(t, result, baseResult) -} - -func TestHashRenamingMatters(t *testing.T) { - t.Parallel() - step1Dir := "./testdata/filemode-matters/step1" - baseResult, err := hashBuildContext(step1Dir, filepath.Join(step1Dir, _dockerfile), nil) - require.NoError(t, err) - - step2Dir := "./testdata/renaming-matters/step2" - result, err := hashBuildContext(step2Dir, filepath.Join(step2Dir, _dockerfile), nil) - require.NoError(t, err) - - assert.NotEqual(t, result, baseResult) -} - -func TestHashFilemodeMatters(t *testing.T) { - t.Parallel() - step1Dir := "./testdata/filemode-matters/step1" - baseResult, err := hashBuildContext(step1Dir, filepath.Join(step1Dir, _dockerfile), nil) - require.NoError(t, err) - - step2Dir := "./testdata/filemode-matters/step2-chmod-x" - result, err := hashBuildContext(step2Dir, filepath.Join(step2Dir, _dockerfile), nil) - require.NoError(t, err) - - assert.NotEqual(t, result, baseResult) -} - -func TestHashDeepSymlinks(t *testing.T) { - t.Parallel() - dir := "./testdata/symlinks" - _, err := hashBuildContext(dir, filepath.Join(dir, "Dockerfile"), nil) - assert.NoError(t, err) -} - -func TestIgnoreIrregularFiles(t *testing.T) { - t.Parallel() - dir := t.TempDir() - - // Create a Dockerfile - dockerfile := filepath.Join(dir, "Dockerfile") - err := os.WriteFile(dockerfile, []byte{}, 0o600) - require.NoError(t, err) - - // Create a pipe which should be ignored. (We will time out trying to read - // it if it's not.) - pipe := filepath.Join(dir, "pipe") - err = syscall.Mkfifo(pipe, 0o666) - require.NoError(t, err) - // Confirm it's irregular. - fi, err := os.Stat(pipe) - require.NoError(t, err) - assert.False(t, fi.Mode().IsRegular()) - - _, err = hashBuildContext(dir, dockerfile, nil) - assert.NoError(t, err) -} - -func TestHashUnignoredDirs(t *testing.T) { - t.Parallel() - step1Dir := "./testdata/unignores/basedir" - baseResult, err := hashBuildContext(step1Dir, filepath.Join(step1Dir, _dockerfile), nil) - require.NoError(t, err) - - step2Dir := "./testdata/unignores/basedir-with-unignored-files" - unignoreResult, err := hashBuildContext(step2Dir, filepath.Join(step2Dir, _dockerfile), nil) - require.NoError(t, err) - - assert.Equal(t, baseResult, unignoreResult) -} - -func TestDockerIgnore(t *testing.T) { - t.Parallel() - tests := []struct { - name string - - dockerfile string - context string - fs map[string]string - - want []string - wantErr error - }{ - { - name: "Dockerfile with root dockerignore", - dockerfile: "./foo/Dockerfile", - fs: map[string]string{ - ".dockerignore": "rootignore", - }, - want: []string{"rootignore"}, - }, - { - name: "Dockerfile with root dockerignore and custom dockerignore", - dockerfile: "./foo/Dockerfile", - fs: map[string]string{ - "foo/Dockerfile.dockerignore": "customignore", - ".dockerignore": "rootignore", - }, - want: []string{"customignore"}, - }, - { - name: "Dockerfile with root dockerignore and relative context", - dockerfile: "./foo/Dockerfile", - context: "../", - fs: map[string]string{ - "../.dockerignore": "rootignore", - }, - want: []string{"rootignore"}, - }, - { - name: "Dockerfile without root dockerignore", - dockerfile: "./foo/Dockerfile", - want: nil, - }, - { - name: "Dockerfile with invalid root dockerignore", - dockerfile: "./foo/Dockerfile", - fs: map[string]string{ - ".dockerignore": strings.Repeat("*", bufio.MaxScanTokenSize), - }, - wantErr: bufio.ErrTooLong, - }, - { - name: "custom.Dockerfile without custom dockerignore and without root dockerignore", - dockerfile: "./foo/custom.Dockerfile", - want: nil, - }, - { - name: "custom.Dockerfile with custom dockerignore and without root dockerignore", - dockerfile: "./foo/custom.Dockerfile", - fs: map[string]string{ - "foo/custom.Dockerfile.dockerignore": "customignore", - }, - want: []string{"customignore"}, - }, - { - name: "custom.Dockerfile with custom dockerignore and with root dockerignore", - dockerfile: "foo/custom.Dockerfile", - fs: map[string]string{ - "foo/custom.Dockerfile.dockerignore": "customignore", - ".dockerignore": "rootignore", - }, - want: []string{"customignore"}, - }, - { - name: "custom.Dockerfile without custom dockerignore and with root dockerignore", - dockerfile: "foo/custom.Dockerfile", - fs: map[string]string{ - ".dockerignore": "rootignore", - }, - want: []string{"rootignore"}, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - fs := afero.NewMemMapFs() - for fname, fdata := range tt.fs { - f, err := fs.Create(fname) - require.NoError(t, err) - _, err = f.WriteString(fdata) - require.NoError(t, err) - } - actual, err := getIgnorePatterns(fs, tt.dockerfile, tt.context) - - assert.ErrorIs(t, err, tt.wantErr) - assert.Equal(t, tt.want, actual) - }) - } -} diff --git a/provider/internal/coverage.out b/provider/internal/coverage.out deleted file mode 100644 index dddbc6f..0000000 --- a/provider/internal/coverage.out +++ /dev/null @@ -1,870 +0,0 @@ -mode: set -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:34.47,36.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:38.65,40.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:40.9,42.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:43.2,44.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:44.9,46.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:47.2,48.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:48.9,50.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:51.2,51.46 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:51.46,53.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:54.2,55.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:60.3,62.27 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:62.27,64.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:68.2,68.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:68.13,70.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:72.2,73.62 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:73.62,75.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:77.2,81.59 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:81.59,83.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:83.16,85.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:87.3,88.23 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:88.23,90.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:92.3,92.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:95.2,95.66 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:98.69,99.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:100.17,101.42 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:102.27,103.38 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:104.15,105.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:106.10,107.61 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:111.66,118.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:123.36,127.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:127.16,129.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:131.2,134.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:134.9,136.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:138.2,141.19 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:141.19,144.3 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:146.2,146.78 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:146.78,150.3 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:152.2,152.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:152.24,154.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:154.17,156.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:157.3,157.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:157.23,160.4 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:161.3,161.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:166.2,166.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:166.21,168.46 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:168.46,171.4 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:174.2,174.16 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:178.102,185.18 4 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:185.18,186.31 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:186.31,188.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:189.3,189.21 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:193.2,193.27 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:193.27,196.17 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:196.17,198.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:198.9,198.22 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:198.22,199.36 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:199.36,200.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:202.4,202.67 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:202.67,203.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:205.4,205.19 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/deprecated/configencoding.go:209.2,209.20 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/auth.go:11.53,15.2 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/builder.go:13.53,22.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:33.46,36.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:39.54,46.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:46.16,48.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:49.2,56.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:60.44,76.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/buildx.go:79.69,84.2 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:39.42,40.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:40.14,42.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:43.2,44.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:44.17,46.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:47.2,47.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:47.20,49.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:50.2,50.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:53.54,56.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:62.57,64.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:66.45,67.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:67.14,69.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:70.2,70.51 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:78.52,92.2 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:94.39,95.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:95.18,97.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:98.2,99.28 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:99.28,101.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:102.2,102.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:111.62,138.2 6 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:140.50,141.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:141.14,143.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:144.2,145.19 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:145.19,147.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:148.2,148.19 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:148.19,150.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:151.2,151.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:151.17,153.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:154.2,154.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:163.46,164.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:164.14,166.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:167.2,168.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:168.18,170.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:171.2,171.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:171.24,173.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:174.2,174.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:174.29,176.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:177.2,177.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:180.58,184.2 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:193.44,194.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:194.14,196.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:197.2,197.77 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:213.51,249.2 14 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:251.39,252.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:252.14,254.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:255.2,256.20 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:256.20,258.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:259.2,259.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:259.18,261.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:262.2,262.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:262.25,264.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:265.2,265.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:265.25,267.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:268.2,268.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:268.29,270.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:271.2,271.27 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:271.27,273.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:274.2,274.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:274.25,276.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:277.2,277.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:277.29,279.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:280.2,280.26 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:280.26,282.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:284.2,284.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:291.53,296.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:298.40,299.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:299.18,301.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:302.2,302.39 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:309.60,312.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:314.47,315.26 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:315.26,317.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:318.2,318.55 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:328.37,329.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:329.14,331.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:332.2,332.70 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:337.30,339.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:352.54,380.2 7 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:382.41,383.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:383.16,385.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:386.2,386.64 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:391.41,392.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:392.14,394.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:395.2,395.22 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:406.52,410.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:412.40,413.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:413.14,415.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:416.2,420.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:432.43,433.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:433.14,435.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:436.2,442.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:451.60,459.2 6 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:461.47,462.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:462.29,464.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:465.2,466.25 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:466.25,468.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:469.2,469.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:469.28,471.14 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:471.14,473.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:474.3,474.65 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:476.2,476.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:476.31,478.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:479.2,479.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:489.48,490.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:490.14,492.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:493.2,493.81 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:508.52,541.2 8 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:543.39,544.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:544.16,546.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:547.2,547.74 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:557.56,568.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:578.68,584.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:588.49,590.23 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:590.23,592.14 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:592.14,593.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:595.3,595.27 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:597.2,597.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cache.go:600.38,602.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:31.62,33.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:33.16,35.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:55.2,56.28 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:56.28,58.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:60.2,60.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:60.31,67.3 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:80.2,100.16 6 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:100.16,102.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:104.2,114.21 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:177.32,179.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:181.34,183.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:185.31,187.2 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:190.41,192.28 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:192.28,197.3 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:198.2,200.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:205.42,207.15 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:207.15,209.35 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:209.35,211.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:214.2,215.15 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:215.15,217.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:218.2,218.30 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:222.29,225.19 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:225.19,227.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:228.2,228.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:231.76,235.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:235.16,237.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:238.2,243.16 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:243.16,245.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:251.2,252.52 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:252.52,257.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:260.2,263.16 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:263.16,265.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:266.2,298.35 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:298.35,300.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:301.2,301.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:301.24,303.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:304.2,304.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:304.35,306.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:307.2,307.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:307.33,309.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:310.2,310.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:310.21,312.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:313.2,313.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:313.21,315.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:316.2,316.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:316.33,318.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:319.2,319.36 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:319.36,321.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:322.2,322.39 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:322.39,324.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:325.2,325.32 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:325.32,327.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:328.2,328.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:328.18,330.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:331.2,331.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:331.35,333.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:334.2,334.15 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:334.15,336.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:337.2,337.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:337.31,339.25 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:339.25,341.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:342.3,342.34 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:344.2,344.30 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:344.30,346.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:347.2,347.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:347.23,349.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:350.2,350.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:350.31,352.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:353.2,353.32 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:353.32,356.3 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:357.2,357.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:357.28,359.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:361.2,361.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:361.33,367.3 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:369.2,370.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:370.16,372.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:376.2,377.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:377.16,379.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:380.2,381.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:381.16,383.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:384.2,386.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:386.16,388.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:389.2,390.24 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:390.24,391.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:392.15,393.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:394.11,396.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:396.18,397.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:399.4,399.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:403.2,404.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:404.18,406.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:407.2,409.8 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:414.60,417.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:417.20,419.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:420.2,425.16 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:425.16,427.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:428.2,428.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:428.21,430.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:432.2,445.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:445.16,447.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:448.2,455.18 6 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:467.54,469.22 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:469.22,471.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/cli.go:472.2,472.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:71.63,101.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:101.16,103.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:105.2,106.40 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:106.40,108.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:109.2,111.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:111.16,113.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:118.2,120.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:193.45,212.24 5 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:212.24,214.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:231.2,232.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:232.16,234.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:235.2,242.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:242.16,244.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:246.2,247.35 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:247.35,252.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:253.2,254.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:254.33,259.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:260.2,261.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:261.33,267.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:268.2,280.39 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:280.39,282.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:282.17,284.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:285.3,286.53 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:289.2,290.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:290.16,292.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:294.2,295.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:295.18,297.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:298.2,339.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:339.16,341.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:343.2,343.49 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:343.49,345.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:346.2,346.39 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:346.39,349.30 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:349.30,351.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:352.3,352.37 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:355.2,355.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:359.47,361.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:363.100,441.16 10 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:441.16,443.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:445.2,445.11 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:445.11,447.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:449.2,453.16 5 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:453.16,455.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:456.2,456.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:459.84,472.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:472.16,474.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:476.2,477.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:477.16,479.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:481.2,481.46 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:547.73,561.56 8 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:561.56,563.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:567.2,567.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:571.94,573.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:573.16,575.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:578.2,579.85 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:579.85,581.21 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:581.21,583.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:584.3,584.49 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:597.2,603.80 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:603.80,607.3 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:609.2,609.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:613.86,617.2 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:619.62,621.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:621.16,623.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:624.2,624.66 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:624.66,626.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/client.go:627.2,627.22 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:40.49,42.23 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:42.23,44.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:45.2,45.10 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:48.47,59.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:61.53,70.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:77.9,78.22 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:78.22,80.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:81.2,81.66 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:81.66,83.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:85.2,86.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:86.16,88.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:89.2,91.36 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:91.36,94.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:95.2,95.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:95.16,97.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:99.2,102.12 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:109.105,115.68 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:115.68,117.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:117.17,119.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:120.3,120.15 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:123.2,123.37 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:123.37,125.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:125.17,127.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:130.2,130.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:130.33,133.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:133.17,135.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:136.3,136.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:136.44,138.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:142.2,142.45 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:142.45,143.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:143.35,145.18 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:145.18,147.5 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:148.4,148.45 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:148.45,150.5 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:154.2,154.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:158.70,160.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:162.58,163.102 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:163.102,164.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:164.17,166.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:167.3,167.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:167.18,169.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:172.3,173.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:173.17,175.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:176.3,176.46 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:178.2,178.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:178.16,180.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:182.2,182.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:185.53,190.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:190.16,192.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:193.2,194.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:194.16,196.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:197.2,197.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:205.91,211.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:211.33,214.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:218.2,218.26 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:218.26,220.44 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:220.44,221.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:223.3,223.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:223.17,225.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:226.3,229.17 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:229.17,231.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:232.3,232.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:235.2,235.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:238.48,241.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:243.49,246.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:250.64,252.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:252.16,254.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/context.go:255.2,255.77 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/dedent.go:9.30,13.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/dockerfile.go:12.50,29.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:48.51,79.2 9 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:81.38,82.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:82.16,84.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:85.2,85.87 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:88.36,89.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:89.17,91.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:91.17,93.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:94.3,94.40 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:96.2,96.23 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:96.23,98.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:99.2,99.20 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:99.20,101.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:102.2,102.14 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:107.43,108.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:108.14,110.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:111.2,111.25 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:124.52,129.2 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:131.40,132.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:132.14,134.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:135.2,136.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:136.18,138.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:139.2,139.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:139.18,141.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:143.2,150.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:157.49,160.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:162.37,163.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:163.14,165.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:166.2,166.79 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:184.51,213.2 8 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:215.39,216.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:216.14,218.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:219.2,220.19 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:220.19,222.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:223.2,223.27 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:223.27,225.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:226.2,226.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:226.23,228.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:229.2,229.32 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:229.32,231.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:232.2,232.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:232.28,234.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:235.2,235.21 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:235.21,237.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:238.2,238.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:238.20,240.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:241.2,248.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:255.54,257.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:259.42,260.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:260.14,262.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:263.2,263.82 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:270.39,271.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:271.14,273.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:274.2,274.50 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:277.51,279.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:285.37,286.14 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:286.14,288.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:289.2,289.48 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:296.53,299.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:301.40,302.18 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:302.18,304.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:305.2,305.49 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:314.61,322.2 6 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:324.48,325.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:325.29,327.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:328.2,329.25 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:329.25,331.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:332.2,332.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:332.28,334.14 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:334.14,336.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:337.3,337.65 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:339.2,339.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:339.31,341.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:342.2,342.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:349.42,351.28 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:351.28,353.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:354.2,354.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:357.55,359.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:365.48,367.34 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:367.34,369.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:370.2,371.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:374.61,378.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/export.go:380.61,382.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:24.45,26.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:26.16,28.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:30.2,31.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:31.16,33.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:34.2,40.15 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:49.64,55.43 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:55.43,57.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:59.2,60.70 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:60.70,62.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:63.2,67.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:67.16,69.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:74.2,74.42 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:74.42,76.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:76.17,78.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:79.3,82.17 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:82.17,84.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:85.2,86.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:86.31,87.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:87.23,88.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:90.4,90.40 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:90.40,91.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:93.4,93.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:93.23,94.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:96.4,97.18 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:97.18,98.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:100.4,100.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:100.28,101.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:101.24,102.26 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:104.5,104.66 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:104.66,105.26 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:111.4,112.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:119.2,120.39 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:120.39,122.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/host.go:124.2,127.20 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:62.45,83.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:112.50,285.2 23 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:297.51,328.2 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:330.96,333.55 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:333.55,335.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:337.2,344.33 4 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:354.47,356.38 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:356.38,358.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:361.2,363.58 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:363.58,365.26 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:365.26,366.38 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:366.38,368.5 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:391.2,391.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:398.39,400.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:402.63,404.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:406.62,432.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:434.39,438.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:441.40,442.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:442.13,444.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:445.2,445.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:445.31,446.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:446.17,448.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:450.2,450.14 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:453.50,454.30 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:454.30,456.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:457.2,457.22 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:467.58,469.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:471.32,473.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:475.45,477.30 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:477.30,479.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:480.2,480.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:483.34,485.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:490.20,492.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:492.16,494.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:496.2,496.26 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:496.26,501.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:503.2,503.54 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:503.54,507.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:509.2,511.8 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:517.87,520.25 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:520.25,524.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:525.2,525.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:525.24,529.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:530.2,530.49 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:530.49,534.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:536.2,536.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:536.31,538.53 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:538.53,539.66 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:539.66,541.62 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:541.62,546.6 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:548.9,548.84 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:548.84,553.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:556.2,556.34 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:556.34,558.54 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:558.54,561.4 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:564.2,564.32 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:564.32,566.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:570.2,573.19 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:573.19,575.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:576.2,576.19 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:576.19,578.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:579.2,579.37 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:579.37,580.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:580.23,581.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:583.3,583.45 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:583.45,591.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:593.3,594.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:594.17,596.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:598.3,599.74 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:599.74,607.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:609.3,609.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:612.2,612.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:612.13,614.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:614.29,615.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:615.25,617.5 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:621.2,622.39 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:622.39,624.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:624.17,626.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:628.3,628.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:631.2,632.39 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:632.39,633.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:633.23,634.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:636.3,636.45 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:636.45,644.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:646.3,647.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:647.17,649.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:651.3,651.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:651.23,652.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:654.3,654.43 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:657.2,658.37 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:658.37,659.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:659.23,660.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:662.3,662.45 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:662.45,670.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:672.3,673.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:673.17,675.12 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:677.3,677.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:677.23,678.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:680.3,680.39 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:683.2,684.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:684.33,686.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:686.17,688.12 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:690.3,690.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:690.23,691.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:693.3,693.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:696.2,696.76 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:696.76,704.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:706.2,706.34 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:706.34,707.47 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:707.47,709.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:712.2,713.37 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:713.37,718.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:720.2,741.23 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:751.23,755.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:755.16,757.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:759.2,760.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:760.16,762.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:763.2,763.9 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:763.9,765.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:767.2,768.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:768.16,770.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:772.2,777.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:777.16,779.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:780.2,782.46 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:782.46,784.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:785.2,785.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:785.35,788.3 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:790.2,791.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:791.16,793.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:795.2,795.41 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:795.41,798.17 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:798.17,800.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:805.2,805.30 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:805.30,806.74 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:806.74,808.4 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:811.2,811.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:811.24,814.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:818.2,818.33 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:818.33,820.10 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:820.10,821.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:824.3,825.8 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:828.2,828.19 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:837.31,840.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:854.3,856.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:856.16,858.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:867.2,867.25 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:867.25,870.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:872.2,875.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:875.33,877.10 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:877.10,880.9 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:884.3,885.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:885.17,887.12 2 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:890.3,890.27 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:890.27,891.87 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:891.87,893.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:895.4,895.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:895.20,897.13 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:900.4,901.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:907.2,907.49 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:907.49,909.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:911.2,913.32 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:923.9,925.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:925.16,927.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:929.2,931.33 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:931.33,933.17 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:933.17,934.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:936.3,937.30 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:937.30,938.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:940.3,942.31 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:942.31,943.23 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:943.23,945.5 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:946.4,946.24 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:946.24,948.5 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:954.2,954.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:964.34,968.54 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:968.54,970.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:971.2,971.56 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:971.56,973.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:974.2,974.48 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:974.48,976.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:977.2,977.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:977.52,979.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:980.2,980.56 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:980.56,982.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:983.2,983.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:983.52,985.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:986.2,986.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:986.52,988.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:989.2,989.64 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:989.64,991.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:992.2,992.58 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:992.58,994.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:995.2,995.54 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:995.54,997.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:999.2,999.58 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:999.58,1001.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1002.2,1002.50 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1002.50,1004.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1005.2,1005.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1005.28,1007.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1008.2,1008.34 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1008.34,1010.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1011.2,1011.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1011.52,1013.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1014.2,1014.56 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1014.56,1016.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1017.2,1017.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1017.28,1019.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1020.2,1020.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1020.28,1022.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1023.2,1023.52 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1023.52,1025.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1026.2,1026.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1026.44,1028.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1029.2,1029.46 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1029.46,1031.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1032.2,1032.50 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1032.50,1034.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1038.2,1038.68 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1038.68,1040.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1043.2,1048.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1048.16,1050.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1051.2,1051.30 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1051.30,1053.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1056.2,1056.50 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1056.50,1058.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1058.8,1059.42 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1059.42,1061.74 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1061.74,1062.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1064.4,1065.9 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1069.2,1073.8 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1076.41,1078.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1078.16,1080.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1081.2,1082.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1082.16,1084.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1085.2,1085.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1091.51,1093.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1093.16,1095.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1096.2,1097.48 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1097.48,1099.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1101.2,1104.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1104.16,1106.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/image.go:1108.2,1108.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:40.46,50.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:52.50,71.2 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:78.32,81.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:89.24,93.16 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:93.16,95.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:97.2,97.13 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:97.13,99.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:103.2,104.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:104.16,106.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:108.2,109.19 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:117.44,122.16 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:122.16,124.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:132.2,133.84 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:133.84,136.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:137.2,137.85 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:137.85,140.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:141.2,141.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:141.16,143.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:145.2,145.49 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:145.49,147.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:149.2,149.32 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:157.48,159.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:159.16,161.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:176.2,176.74 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:176.74,184.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:186.2,186.35 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:186.35,187.61 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:187.61,195.4 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:198.2,198.28 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:201.82,203.16 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:203.16,205.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:206.2,208.70 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:208.70,210.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:211.2,211.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:219.34,223.26 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:223.26,225.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:226.2,226.52 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:226.52,228.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:229.2,229.52 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:229.52,231.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:232.2,232.54 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:232.54,234.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:237.2,241.8 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:248.19,251.55 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:251.55,253.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/images.go:255.2,259.33 4 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/network.go:15.60,30.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/platform.go:26.54,57.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/platform.go:59.35,61.2 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:14.49,16.26 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:16.26,17.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:17.17,18.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:20.3,20.29 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:22.2,22.15 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:28.43,29.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:29.16,31.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:32.2,32.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:39.43,40.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:40.16,42.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:43.2,43.41 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:52.51,53.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:53.16,55.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:56.2,56.44 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:62.64,63.31 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:63.31,65.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:66.2,68.26 3 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:68.26,69.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:69.20,70.12 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:72.3,72.20 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:72.20,73.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:75.3,75.22 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:77.2,77.17 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:82.59,83.38 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:83.38,85.3 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:87.2,89.29 3 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:89.29,90.42 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:90.42,91.12 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:93.3,93.15 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/preview.go:96.2,99.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:14.43,31.2 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:33.30,34.16 1 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:34.16,36.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:38.2,40.22 2 1 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:40.22,42.3 1 0 -github.com/pulumi/pulumi-docker/provider/v4/internal/ssh.go:44.2,44.10 1 1 diff --git a/provider/internal/dedent.go b/provider/internal/dedent.go deleted file mode 100644 index 613496d..0000000 --- a/provider/internal/dedent.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "strings" - - dd "github.com/muesli/reflow/dedent" -) - -func dedent(s string) string { - return strings.TrimSpace(dd.String( - strings.ReplaceAll(s, `"`, "`"), - )) -} diff --git a/provider/internal/dedent_test.go b/provider/internal/dedent_test.go deleted file mode 100644 index 7b4ca93..0000000 --- a/provider/internal/dedent_test.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDedent(t *testing.T) { - t.Parallel() - tests := []struct { - name string - given string - want string - }{ - { - name: "simple case", - given: ` - An optional map of named build-time argument variables to set during - the Docker build. This flag allows you to pass build-time variables that - can be accessed like environment variables inside the "RUN" - instruction.`, - want: `An optional map of named build-time argument variables to set during -the Docker build. This flag allows you to pass build-time variables that -can be accessed like environment variables inside the ` + "`RUN`\n" + `instruction.`, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - actual := dedent(tt.given) - assert.Equal(t, tt.want, actual) - }) - } -} diff --git a/provider/internal/deprecated/configencoding.go b/provider/internal/deprecated/configencoding.go deleted file mode 100644 index e54d0e6..0000000 --- a/provider/internal/deprecated/configencoding.go +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package deprecated - -import ( - "encoding/json" - "fmt" - - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" -) - -// ConfigEncoding handles unmarshaling legacy JSON provider config. -type ConfigEncoding struct { - schema schema.ConfigSpec -} - -// New constructs a new config encoder for the provided spec. -func New(s schema.ConfigSpec) *ConfigEncoding { - return &ConfigEncoding{schema: s} -} - -func (*ConfigEncoding) tryUnwrapSecret(encoded any) (any, bool) { - m, ok := encoded.(map[string]any) - if !ok { - return nil, false - } - sig, ok := m["4dabf18193072939515e22adb298388d"] - if !ok { - return nil, false - } - ss, ok := sig.(string) - if !ok { - return nil, false - } - if ss != "1b47061264138c4ac30d75fd1eb44270" { - return nil, false - } - value, ok := m["value"] - return value, ok -} - -func (enc *ConfigEncoding) convertStringToPropertyValue(s string, prop schema.PropertySpec) ( - resource.PropertyValue, error, -) { - // If the schema expects a string, we can just return this as-is. - if prop.Type == "string" { - return resource.NewStringProperty(s), nil - } - - // Otherwise, we will attempt to deserialize the input string as JSON and convert the result into a Pulumi - // property. If the input string is empty, we will return an appropriate zero value. - if s == "" { - return enc.zeroValue(prop.Type), nil - } - - var jsonValue interface{} - if err := json.Unmarshal([]byte(s), &jsonValue); err != nil { - return resource.PropertyValue{}, err - } - - opts := enc.unmarshalOpts() - - // Instead of using resource.NewPropertyValue, specialize it to detect nested json-encoded secrets. - var replv func(encoded any) (resource.PropertyValue, bool) - replv = func(encoded any) (resource.PropertyValue, bool) { - encodedSecret, isSecret := enc.tryUnwrapSecret(encoded) - if !isSecret { - return resource.NewNullProperty(), false - } - - v := resource.NewPropertyValueRepl(encodedSecret, nil, replv) - if opts.KeepSecrets { - v = resource.MakeSecret(v) - } - - return v, true - } - - return resource.NewPropertyValueRepl(jsonValue, nil, replv), nil -} - -func (*ConfigEncoding) zeroValue(typ string) resource.PropertyValue { - switch typ { - case "boolean": - return resource.NewPropertyValue(false) - case "integer", "number": - return resource.NewPropertyValue(0) - case "array": - return resource.NewPropertyValue([]interface{}{}) - default: - return resource.NewPropertyValue(map[string]interface{}{}) - } -} - -func (enc *ConfigEncoding) unmarshalOpts() plugin.MarshalOptions { - return plugin.MarshalOptions{ - Label: "config", - KeepUnknowns: true, - KeepSecrets: true, - SkipNulls: true, - RejectAssets: true, - } -} - -// Like plugin.UnmarshalPropertyValue but overrides string parsing with convertStringToPropertyValue. -func (enc *ConfigEncoding) unmarshalPropertyValue(key resource.PropertyKey, - pv resource.PropertyValue, -) (resource.PropertyValue, error) { - opts := enc.unmarshalOpts() - - prop, ok := enc.schema.Variables[string(key)] - - // Only apply JSON-encoded recognition for known fields. - if !ok { - return pv, nil - } - - var ( - jsonString string - jsonStringDetected, jsonStringSecret bool - ) - - if pv.IsString() { - jsonString = pv.StringValue() - jsonStringDetected = true - } - - if opts.KeepSecrets && pv.IsSecret() && pv.SecretValue().Element.IsString() { - jsonString = pv.SecretValue().Element.StringValue() - jsonStringDetected = true - jsonStringSecret = true - } - - if jsonStringDetected { - v, err := enc.convertStringToPropertyValue(jsonString, prop) - if err != nil { - return resource.PropertyValue{}, fmt.Errorf("error unmarshalling property %q: %w", key, err) - } - if jsonStringSecret { - return resource.MakeSecret(v), nil - } - return v, nil - } - - // Computed sentinels are coming in as always having an empty string, but the encoding coerces them to a zero - // value of the appropriate type. - if pv.IsComputed() { - el := pv.V.(resource.Computed).Element - if el.IsString() && el.StringValue() == "" { - res := resource.MakeComputed(enc.zeroValue(prop.Type)) - return res, nil - } - } - - return pv, nil -} - -// UnmarshalProperties is copied from plugin.UnmarshalProperties substituting plugin.UnmarshalPropertyValue. -func (enc *ConfigEncoding) UnmarshalProperties( - props resource.PropertyMap, -) (resource.PropertyMap, error) { - result := make(resource.PropertyMap) - - // First sort the keys so we enumerate them in order (in case errors happen, we want determinism). - keys := props.StableKeys() - - // And now unmarshal every field it into the map. - for _, key := range keys { - v, err := enc.unmarshalPropertyValue(key, props[key]) - if err != nil { - return resource.PropertyMap{}, err - } - result[key] = v - } - - return result, nil -} diff --git a/provider/internal/deprecated/configencoding_test.go b/provider/internal/deprecated/configencoding_test.go deleted file mode 100644 index b085414..0000000 --- a/provider/internal/deprecated/configencoding_test.go +++ /dev/null @@ -1,274 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package deprecated - -import ( - "fmt" - "strconv" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" -) - -func TestConfigEncoding(t *testing.T) { - t.Parallel() - - type testCase struct { - ty schema.TypeSpec - given resource.PropertyValue - want resource.PropertyValue - } - - knownKey := "mykey" - - makeEnc := func(typ schema.TypeSpec) *ConfigEncoding { - return New( - schema.ConfigSpec{ - Variables: map[string]schema.PropertySpec{ - knownKey: { - TypeSpec: typ, - }, - }, - }, - ) - } - - checkUnmarshal := func(t *testing.T, tc testCase) { - enc := makeEnc(tc.ty) - key := resource.PropertyKey(knownKey) - - actual, err := enc.unmarshalPropertyValue(key, tc.given) - require.NoError(t, err) - assert.Equal(t, tc.want, actual) - } - - turnaroundTestCases := []testCase{ - { - schema.TypeSpec{Type: "boolean"}, - resource.NewPropertyValue(`true`), - resource.NewBoolProperty(true), - }, - { - schema.TypeSpec{Type: "boolean"}, - resource.NewPropertyValue(`false`), - resource.NewBoolProperty(false), - }, - { - schema.TypeSpec{Type: "integer"}, - resource.NewPropertyValue(`0`), - resource.NewNumberProperty(0), - }, - { - schema.TypeSpec{Type: "integer"}, - resource.NewPropertyValue(`42`), - resource.NewNumberProperty(42), - }, - { - schema.TypeSpec{Type: "number"}, - resource.NewPropertyValue(`0`), - resource.NewNumberProperty(0.0), - }, - { - schema.TypeSpec{Type: "number"}, - resource.NewPropertyValue(`42.5`), - resource.NewNumberProperty(42.5), - }, - { - schema.TypeSpec{Type: "string"}, - resource.NewStringProperty(""), - resource.NewStringProperty(""), - }, - { - schema.TypeSpec{Type: "string"}, - resource.NewStringProperty("hello"), - resource.NewStringProperty("hello"), - }, - { - schema.TypeSpec{Type: "array"}, - resource.NewPropertyValue(`[]`), - resource.NewArrayProperty([]resource.PropertyValue{}), - }, - { - schema.TypeSpec{Type: "array"}, - resource.NewPropertyValue(`["hello","there"]`), - resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewStringProperty("hello"), - resource.NewStringProperty("there"), - }), - }, - { - schema.TypeSpec{Type: "object"}, - resource.NewPropertyValue(`{}`), - resource.NewObjectProperty(resource.PropertyMap{}), - }, - { - schema.TypeSpec{Type: "object"}, - resource.NewPropertyValue(`{"key":"value"}`), - resource.NewObjectProperty(resource.PropertyMap{ - "key": resource.NewStringProperty("value"), - }), - }, - } - - t.Run("turnaround", func(t *testing.T) { - for i, tc := range turnaroundTestCases { - tc := tc - - t.Run(strconv.Itoa(i), func(t *testing.T) { - t.Parallel() - checkUnmarshal(t, tc) - }) - } - }) - - t.Run("zero_values", func(t *testing.T) { - // Historically the encoding was able to convert empty strings into type-appropriate zero values. - cases := []testCase{ - { - schema.TypeSpec{Type: "boolean"}, - resource.NewPropertyValue(""), - resource.NewBoolProperty(false), - }, - { - schema.TypeSpec{Type: "number"}, - resource.NewPropertyValue(""), - resource.NewNumberProperty(0.), - }, - { - schema.TypeSpec{Type: "integer"}, - resource.NewPropertyValue(""), - resource.NewNumberProperty(0), - }, - { - schema.TypeSpec{Type: "string"}, - resource.NewPropertyValue(""), - resource.NewStringProperty(""), - }, - { - schema.TypeSpec{Type: "object"}, - resource.NewPropertyValue(""), - resource.NewObjectProperty(make(resource.PropertyMap)), - }, - { - schema.TypeSpec{Type: "array"}, - resource.NewPropertyValue(""), - resource.NewArrayProperty([]resource.PropertyValue{}), - }, - } - for _, tc := range cases { - tc := tc - - t.Run(fmt.Sprintf("%v", tc.ty), func(t *testing.T) { - t.Parallel() - checkUnmarshal(t, tc) - }) - } - }) - - t.Run("computed", func(t *testing.T) { - unk := resource.MakeComputed(resource.NewStringProperty("")) - - for i, tc := range turnaroundTestCases { - tc := tc - - t.Run(strconv.Itoa(i), func(t *testing.T) { - t.Parallel() - // Unknown sentinel unmarshals to a Computed with a type-appropriate zero value. - checkUnmarshal(t, testCase{ - ty: tc.ty, - given: unk, - want: resource.MakeComputed(makeEnc(tc.ty).zeroValue(tc.ty.Type)), - }) - }) - } - }) - - t.Run("secret", func(t *testing.T) { - // Unmarshalling happens with KeepSecrets=false, replacing them with the underlying values. This case - // does not need to be tested. - // - // Marhalling however supports sending secrets back to the engine, intending to mark values as secret - // that happen on paths that are declared as secret in the schema. Due to the limitation of the - // JSON-in-proto-encoding, secrets are communicated imprecisely as an approximation: if any nested - // element of a property is secret, the entire property is marshalled as secret. - - var secretCases []testCase - - for _, tc := range turnaroundTestCases { - secretCases = append(secretCases, testCase{ - ty: tc.ty, - given: resource.MakeSecret(tc.given), - want: resource.MakeSecret(tc.want), - }) - } - - for i, tc := range secretCases { - tc := tc - - t.Run(strconv.Itoa(i), func(t *testing.T) { - t.Parallel() - checkUnmarshal(t, tc) - }) - } - - t.Run("nested secrets", func(t *testing.T) { - checkUnmarshal(t, testCase{ - schema.TypeSpec{Type: "object"}, - resource.MakeSecret(resource.NewPropertyValue(`{"key":"val"}`)), - resource.MakeSecret(resource.NewObjectProperty(resource.PropertyMap{ - "key": resource.NewStringProperty("val"), - })), - }) - }) - }) - - regressUnmarshalTestCases := []testCase{ - { - schema.TypeSpec{Type: "array"}, - resource.NewPropertyValue(` - [ - { - "address": "somewhere.org", - "password": { - "4dabf18193072939515e22adb298388d": "1b47061264138c4ac30d75fd1eb44270", - "value": "some-password" - }, - "username": "some-user" - } - ]`), - resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "address": resource.NewStringProperty("somewhere.org"), - "password": resource.MakeSecret(resource.NewStringProperty("some-password")), - "username": resource.NewStringProperty("some-user"), - }), - }), - }, - } - - t.Run("regress-unmarshal", func(t *testing.T) { - for i, tc := range regressUnmarshalTestCases { - tc := tc - t.Run(strconv.Itoa(i), func(t *testing.T) { - t.Parallel() - checkUnmarshal(t, tc) - }) - } - }) -} diff --git a/provider/internal/deprecated/doc.go b/provider/internal/deprecated/doc.go deleted file mode 100644 index 666c33b..0000000 --- a/provider/internal/deprecated/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package deprecated vendors config parsing from pulumi-terraform-bridge. -// -// Originally taken from here: -// https://github.com/pulumi/pulumi-terraform-bridge/blob/90733a0c7/pkg/tfbridge/config_encoding.go -package deprecated diff --git a/provider/internal/doc.go b/provider/internal/doc.go deleted file mode 100644 index ac50355..0000000 --- a/provider/internal/doc.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package internal contains our clients, validation, and provider -// implementation for interacting with Docker's buildx APIs. -// -// The provider has two primary modes of operation when building an image. The -// default behavior is to use an embedded Docker CLI, which does not require to -// actually be installed on a host in order to perform builds (a build daemon -// must still be accessible locally or remotely). The second mode execs a -// "docker-buildx" binary on the host to perform builds. This second mode was -// added primarily for compatibility with Docker Build Cloud, which requires a -// custom docker-buildx binary. -// -// # CLIs -// -// In both execution modes we have several CLI clients. The first client is -// scoped to the host and initialized as part of the provider's Configure call. -// We use this CLI for host-level operations, in particular when we potentially -// initialize a new buildx builder and when we fetch existing credentials on -// the host. -// -// Each operation then has a CLI instance scoped to the life of the operation. -// This allows us to layer resource-scoped credentials on top of the host's -// existing credentials, and in practice Docker seems to handle these -// connections more reliably than a single CLI for all operations. -// -// # Credentials -// -// When using the embedded Docker client, secrets are communicated to the build -// daemon natively via gRPC callbacks. When running in exec mode, credentials -// must be communicated to the buildx binary via a configuration file. In order -// to not pollute the host's existing credentials with e.g. short-lived ECR -// tokens, we copy a small subset of the host's Docker config to a temporary -// directory and use that for the lifetime of the exec operation. -// -// # Preview mode -// -// The pulumi-go-provider primarily operates on simple Go structs and doesn't -// currently have a way to distinguish whether a value is unknown or empty. We -// ignore anything that is a zero value during previews before we apply -// validation or perform builds. -// -// # Diffs -// -// Another limitation of pulumi-go-provider is that it doesn't currently allow -// us to override the default Diff behavior. We intentionally apply -// "ignoreChanges" semantics to registry passwords, in order to reduce noise -// and unnecessary updates, but as a result we have to re-implement Diff from -// the ground up. This implementation is not nearly as rich as the default -// experience and should be replaced when an alternative is available. -package internal diff --git a/provider/internal/dockerfile.go b/provider/internal/dockerfile.go deleted file mode 100644 index 1757dbf..0000000 --- a/provider/internal/dockerfile.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "errors" - "io" - "os" - "path/filepath" - "strings" - - buildx "github.com/docker/buildx/build" - "github.com/moby/buildkit/frontend/dockerfile/instructions" - "github.com/moby/buildkit/frontend/dockerfile/parser" - - "github.com/pulumi/pulumi-go-provider/infer" -) - -// Dockerfile references a local, remote, or inline Dockerfile. -type Dockerfile struct { - Location string `pulumi:"location,optional"` - Inline string `pulumi:"inline,optional"` -} - -// Annotate sets docstrings on Dockerfile. -func (d *Dockerfile) Annotate(a infer.Annotator) { - a.Describe(&d.Location, dedent(` - Location of the Dockerfile to use. - - Can be a relative or absolute path to a local file, or a remote URL. - - Defaults to "${context.location}/Dockerfile" if context is on-disk. - - Conflicts with "inline". - `)) - a.Describe(&d.Inline, dedent(` - Raw Dockerfile contents. - - Conflicts with "location". - - Equivalent to invoking Docker with "-f -". - `)) -} - -func (d *Dockerfile) validate(preview bool, c *Context) error { - if d.Location != "" && d.Inline != "" { - return newCheckFailure( - errors.New(`only specify "file" or "inline", not both`), - "dockerfile", - ) - } - - if d.Location != "" { - if buildx.IsRemoteURL(d.Location) { - return nil - } - abs, err := filepath.Abs(d.Location) - if err != nil { - return err - } - f, err := os.Open(filepath.Clean(abs)) - if err != nil { - return newCheckFailure(err, "dockerfile.location") - } - if err := parseDockerfile(f); err != nil { - return newCheckFailure(err, "dockerfile.location") - } - return nil - } - - if d.Inline != "" { - err := parseDockerfile(strings.NewReader(d.Inline)) - if err != nil { - return newCheckFailure(err, "dockerfile.inline") - } - return nil - } - - if !preview && c != nil && !buildx.IsRemoteURL(c.Location) { - return newCheckFailure(errors.New("missing 'location' or 'inline'"), "dockerfile") - } - - return nil -} - -func parseDockerfile(r io.Reader) error { - parsed, err := parser.Parse(r) - if err != nil { - return newCheckFailure(err, "dockerfile") - } - _, _, err = instructions.Parse(parsed.AST, nil) - if err != nil { - return err - } - return nil -} diff --git a/provider/internal/dockerfile_test.go b/provider/internal/dockerfile_test.go deleted file mode 100644 index bd9fc74..0000000 --- a/provider/internal/dockerfile_test.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestValidateDockerfile(t *testing.T) { - t.Parallel() - tests := []struct { - name string - d Dockerfile - givenC Context - preview bool - - wantErr string - }{ - { - name: "relative", - d: Dockerfile{ - Location: "../internal/../internal/testdata/noop/Dockerfile", - }, - }, - { - name: "missing file", - d: Dockerfile{ - Location: "/does/not/exist/Dockerfile", - }, - wantErr: "no such file", - }, - { - name: "invalid syntax", - d: Dockerfile{ - Location: "testdata/Dockerfile.invalid", - }, - wantErr: "unknown instruction: RUNN", - }, - { - name: "invalid syntax inline", - d: Dockerfile{ - Inline: "RUNN it", - }, - wantErr: "unknown instruction: RUNN", - }, - { - name: "valid syntax inline", - d: Dockerfile{ - Inline: "FROM scratch", - }, - }, - { - name: "unset", - d: Dockerfile{}, - wantErr: "missing 'location' or 'inline'", - }, - { - name: "unset with remote context", - d: Dockerfile{}, - givenC: Context{Location: "https://github.com/foobar"}, - }, - { - name: "preview", - d: Dockerfile{}, - preview: true, - }, - { - name: "over-specified", - d: Dockerfile{Location: ".", Inline: "FROM scratch"}, - wantErr: `only specify "file" or "inline", not both`, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - err := tt.d.validate(tt.preview, &tt.givenC) - - if tt.wantErr == "" { - assert.NoError(t, err) - } else { - assert.ErrorContains(t, err, tt.wantErr) - } - }) - } -} diff --git a/provider/internal/embed/image-examples.md b/provider/internal/embed/image-examples.md deleted file mode 100644 index c8723ea..0000000 --- a/provider/internal/embed/image-examples.md +++ /dev/null @@ -1,1862 +0,0 @@ -{{% examples %}} -## Example Usage -{{% example %}} -### Push to AWS ECR with caching - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as aws from "@pulumi/aws"; -import * as docker_build from "@pulumi/docker-build"; - -const ecrRepository = new aws.ecr.Repository("ecr-repository", {}); -const authToken = aws.ecr.getAuthorizationTokenOutput({ - registryId: ecrRepository.registryId, -}); -const myImage = new docker_build.Image("my-image", { - cacheFrom: [{ - registry: { - ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`, - }, - }], - cacheTo: [{ - registry: { - imageManifest: true, - ociMediaTypes: true, - ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`, - }, - }], - context: { - location: "./app", - }, - push: true, - registries: [{ - address: ecrRepository.repositoryUrl, - password: authToken.apply(authToken => authToken.password), - username: authToken.apply(authToken => authToken.userName), - }], - tags: [pulumi.interpolate`${ecrRepository.repositoryUrl}:latest`], -}); -export const ref = myImage.ref; -``` -```python -import pulumi -import pulumi_aws as aws -import pulumi_docker_build as docker_build - -ecr_repository = aws.ecr.Repository("ecr-repository") -auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id) -my_image = docker_build.Image("my-image", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - image_manifest=True, - oci_media_types=True, - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - context=docker_build.BuildContextArgs( - location="./app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address=ecr_repository.repository_url, - password=auth_token.password, - username=auth_token.user_name, - )], - tags=[ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:latest")]) -pulumi.export("ref", my_image.ref) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using Aws = Pulumi.Aws; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var ecrRepository = new Aws.Ecr.Repository("ecr-repository"); - - var authToken = Aws.Ecr.GetAuthorizationToken.Invoke(new() - { - RegistryId = ecrRepository.RegistryId, - }); - - var myImage = new DockerBuild.Image("my-image", new() - { - CacheFrom = new[] - { - new DockerBuild.Inputs.CacheFromArgs - { - Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - { - Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:cache"), - }, - }, - }, - CacheTo = new[] - { - new DockerBuild.Inputs.CacheToArgs - { - Registry = new DockerBuild.Inputs.CacheToRegistryArgs - { - ImageManifest = true, - OciMediaTypes = true, - Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:cache"), - }, - }, - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "./app", - }, - Push = true, - Registries = new[] - { - new DockerBuild.Inputs.RegistryArgs - { - Address = ecrRepository.RepositoryUrl, - Password = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.Password), - Username = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.UserName), - }, - }, - Tags = new[] - { - ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:latest"), - }, - }); - - return new Dictionary - { - ["ref"] = myImage.Ref, - }; -}); - -``` -```go -package main - -import ( - "fmt" - - "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - ecrRepository, err := ecr.NewRepository(ctx, "ecr-repository", nil) - if err != nil { - return err - } - authToken := ecr.GetAuthorizationTokenOutput(ctx, ecr.GetAuthorizationTokenOutputArgs{ - RegistryId: ecrRepository.RegistryId, - }, nil) - myImage, err := dockerbuild.NewImage(ctx, "my-image", &dockerbuild.ImageArgs{ - CacheFrom: dockerbuild.CacheFromArray{ - &dockerbuild.CacheFromArgs{ - Registry: &dockerbuild.CacheFromRegistryArgs{ - Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { - return fmt.Sprintf("%v:cache", repositoryUrl), nil - }).(pulumi.StringOutput), - }, - }, - }, - CacheTo: dockerbuild.CacheToArray{ - &dockerbuild.CacheToArgs{ - Registry: &dockerbuild.CacheToRegistryArgs{ - ImageManifest: pulumi.Bool(true), - OciMediaTypes: pulumi.Bool(true), - Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { - return fmt.Sprintf("%v:cache", repositoryUrl), nil - }).(pulumi.StringOutput), - }, - }, - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("./app"), - }, - Push: pulumi.Bool(true), - Registries: dockerbuild.RegistryArray{ - &dockerbuild.RegistryArgs{ - Address: ecrRepository.RepositoryUrl, - Password: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { - return &authToken.Password, nil - }).(pulumi.StringPtrOutput), - Username: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { - return &authToken.UserName, nil - }).(pulumi.StringPtrOutput), - }, - }, - Tags: pulumi.StringArray{ - ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { - return fmt.Sprintf("%v:latest", repositoryUrl), nil - }).(pulumi.StringOutput), - }, - }) - if err != nil { - return err - } - ctx.Export("ref", myImage.Ref) - return nil - }) -} -``` -```yaml -description: Push to AWS ECR with caching -name: ecr -outputs: - ref: ${my-image.ref} -resources: - ecr-repository: - type: aws:ecr:Repository - my-image: - properties: - cacheFrom: - - registry: - ref: ${ecr-repository.repositoryUrl}:cache - cacheTo: - - registry: - imageManifest: true - ociMediaTypes: true - ref: ${ecr-repository.repositoryUrl}:cache - context: - location: ./app - push: true - registries: - - address: ${ecr-repository.repositoryUrl} - password: ${auth-token.password} - username: ${auth-token.userName} - tags: - - ${ecr-repository.repositoryUrl}:latest - type: docker-build:Image -runtime: yaml -variables: - auth-token: - fn::aws:ecr:getAuthorizationToken: - registryId: ${ecr-repository.registryId} -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.aws.ecr.Repository; -import com.pulumi.aws.ecr.EcrFunctions; -import com.pulumi.aws.ecr.inputs.GetAuthorizationTokenArgs; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.CacheFromArgs; -import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs; -import com.pulumi.dockerbuild.inputs.CacheToArgs; -import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var ecrRepository = new Repository("ecrRepository"); - - final var authToken = EcrFunctions.getAuthorizationToken(GetAuthorizationTokenArgs.builder() - .registryId(ecrRepository.registryId()) - .build()); - - var myImage = new Image("myImage", ImageArgs.builder() - .cacheFrom(CacheFromArgs.builder() - .registry(CacheFromRegistryArgs.builder() - .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl))) - .build()) - .build()) - .cacheTo(CacheToArgs.builder() - .registry(CacheToRegistryArgs.builder() - .imageManifest(true) - .ociMediaTypes(true) - .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl))) - .build()) - .build()) - .context(BuildContextArgs.builder() - .location("./app") - .build()) - .push(true) - .registries(RegistryArgs.builder() - .address(ecrRepository.repositoryUrl()) - .password(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.password()))) - .username(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.userName()))) - .build()) - .tags(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:latest", repositoryUrl))) - .build()); - - ctx.export("ref", myImage.ref()); - } -} -``` -{{% /example %}} -{{% example %}} -### Multi-platform image - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - }, - platforms: [ - docker_build.Platform.Plan9_amd64, - docker_build.Platform.Plan9_386, - ], - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[ - docker_build.Platform.PLAN9_AMD64, - docker_build.Platform.PLAN9_386, - ], - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Platforms = new[] - { - DockerBuild.Platform.Plan9_amd64, - DockerBuild.Platform.Plan9_386, - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Platforms: docker - build.PlatformArray{ - dockerbuild.Platform_Plan9_amd64, - dockerbuild.Platform_Plan9_386, - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Multi-platform image -name: multi-platform -resources: - image: - properties: - context: - location: app - platforms: - - plan9/amd64 - - plan9/386 - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .build()) - .platforms( - "plan9/amd64", - "plan9/386") - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Registry export - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - }, - push: true, - registries: [{ - address: "docker.io", - password: dockerHubPassword, - username: "pulumibot", - }], - tags: ["docker.io/pulumi/pulumi:3.107.0"], -}); -export const ref = myImage.ref; -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address="docker.io", - password=docker_hub_password, - username="pulumibot", - )], - tags=["docker.io/pulumi/pulumi:3.107.0"]) -pulumi.export("ref", my_image["ref"]) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Push = true, - Registries = new[] - { - new DockerBuild.Inputs.RegistryArgs - { - Address = "docker.io", - Password = dockerHubPassword, - Username = "pulumibot", - }, - }, - Tags = new[] - { - "docker.io/pulumi/pulumi:3.107.0", - }, - }); - - return new Dictionary - { - ["ref"] = myImage.Ref, - }; -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Push: pulumi.Bool(true), - Registries: dockerbuild.RegistryArray{ - &dockerbuild.RegistryArgs{ - Address: pulumi.String("docker.io"), - Password: pulumi.Any(dockerHubPassword), - Username: pulumi.String("pulumibot"), - }, - }, - Tags: pulumi.StringArray{ - pulumi.String("docker.io/pulumi/pulumi:3.107.0"), - }, - }) - if err != nil { - return err - } - ctx.Export("ref", myImage.Ref) - return nil - }) -} -``` -```yaml -description: Registry export -name: registry -outputs: - ref: ${my-image.ref} -resources: - image: - properties: - context: - location: app - push: true - registries: - - address: docker.io - password: ${dockerHubPassword} - username: pulumibot - tags: - - docker.io/pulumi/pulumi:3.107.0 - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .build()) - .push(true) - .registries(RegistryArgs.builder() - .address("docker.io") - .password(dockerHubPassword) - .username("pulumibot") - .build()) - .tags("docker.io/pulumi/pulumi:3.107.0") - .build()); - - ctx.export("ref", myImage.ref()); - } -} -``` -{{% /example %}} -{{% example %}} -### Caching - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - cacheFrom: [{ - local: { - src: "tmp/cache", - }, - }], - cacheTo: [{ - local: { - dest: "tmp/cache", - mode: docker_build.CacheMode.Max, - }, - }], - context: { - location: "app", - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - cache_from=[docker_build.CacheFromArgs( - local=docker_build.CacheFromLocalArgs( - src="tmp/cache", - ), - )], - cache_to=[docker_build.CacheToArgs( - local=docker_build.CacheToLocalArgs( - dest="tmp/cache", - mode=docker_build.CacheMode.MAX, - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - CacheFrom = new[] - { - new DockerBuild.Inputs.CacheFromArgs - { - Local = new DockerBuild.Inputs.CacheFromLocalArgs - { - Src = "tmp/cache", - }, - }, - }, - CacheTo = new[] - { - new DockerBuild.Inputs.CacheToArgs - { - Local = new DockerBuild.Inputs.CacheToLocalArgs - { - Dest = "tmp/cache", - Mode = DockerBuild.CacheMode.Max, - }, - }, - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - CacheFrom: dockerbuild.CacheFromArray{ - &dockerbuild.CacheFromArgs{ - Local: &dockerbuild.CacheFromLocalArgs{ - Src: pulumi.String("tmp/cache"), - }, - }, - }, - CacheTo: dockerbuild.CacheToArray{ - &dockerbuild.CacheToArgs{ - Local: &dockerbuild.CacheToLocalArgs{ - Dest: pulumi.String("tmp/cache"), - Mode: dockerbuild.CacheModeMax, - }, - }, - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Caching -name: caching -resources: - image: - properties: - cacheFrom: - - local: - src: tmp/cache - cacheTo: - - local: - dest: tmp/cache - mode: max - context: - location: app - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.CacheFromArgs; -import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs; -import com.pulumi.dockerbuild.inputs.CacheToArgs; -import com.pulumi.dockerbuild.inputs.CacheToLocalArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .cacheFrom(CacheFromArgs.builder() - .local(CacheFromLocalArgs.builder() - .src("tmp/cache") - .build()) - .build()) - .cacheTo(CacheToArgs.builder() - .local(CacheToLocalArgs.builder() - .dest("tmp/cache") - .mode("max") - .build()) - .build()) - .context(BuildContextArgs.builder() - .location("app") - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Docker Build Cloud - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - builder: { - name: "cloud-builder-name", - }, - context: { - location: "app", - }, - exec: true, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - builder=docker_build.BuilderConfigArgs( - name="cloud-builder-name", - ), - context=docker_build.BuildContextArgs( - location="app", - ), - exec_=True, - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Builder = new DockerBuild.Inputs.BuilderConfigArgs - { - Name = "cloud-builder-name", - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Exec = true, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Builder: &dockerbuild.BuilderConfigArgs{ - Name: pulumi.String("cloud-builder-name"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Exec: pulumi.Bool(true), - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Docker Build Cloud -name: dbc -resources: - image: - properties: - builder: - name: cloud-builder-name - context: - location: app - exec: true - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuilderConfigArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .builder(BuilderConfigArgs.builder() - .name("cloud-builder-name") - .build()) - .context(BuildContextArgs.builder() - .location("app") - .build()) - .exec(true) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Build arguments - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - buildArgs: { - SET_ME_TO_TRUE: "true", - }, - context: { - location: "app", - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - build_args={ - "SET_ME_TO_TRUE": "true", - }, - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - BuildArgs = - { - { "SET_ME_TO_TRUE", "true" }, - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - BuildArgs: pulumi.StringMap{ - "SET_ME_TO_TRUE": pulumi.String("true"), - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Build arguments -name: build-args -resources: - image: - properties: - buildArgs: - SET_ME_TO_TRUE: "true" - context: - location: app - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .buildArgs(Map.of("SET_ME_TO_TRUE", "true")) - .context(BuildContextArgs.builder() - .location("app") - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Build target - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - }, - push: false, - target: "build-me", -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=False, - target="build-me") -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Push = false, - Target = "build-me", - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Push: pulumi.Bool(false), - Target: pulumi.String("build-me"), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Build target -name: build-target -resources: - image: - properties: - context: - location: app - push: false - target: build-me - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .build()) - .push(false) - .target("build-me") - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Named contexts - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - named: { - "golang:latest": { - location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - }, - }, - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - named={ - "golang:latest": docker_build.ContextArgs( - location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - ), - }, - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - Named = - { - { "golang:latest", new DockerBuild.Inputs.ContextArgs - { - Location = "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - } }, - }, - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - Named: dockerbuild.ContextMap{ - "golang:latest": &dockerbuild.ContextArgs{ - Location: pulumi.String("docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"), - }, - }, - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Named contexts -name: named-contexts -resources: - image: - properties: - context: - location: app - named: - golang:latest: - location: docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984 - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .named(Map.of("golang:latest", Map.of("location", "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"))) - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Remote context - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Remote context -name: remote-context -resources: - image: - properties: - context: - location: https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile") - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Inline Dockerfile - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - }, - dockerfile: { - inline: `FROM busybox -COPY hello.c ./ -`, - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - dockerfile=docker_build.DockerfileArgs( - inline="""FROM busybox -COPY hello.c ./ -""", - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Inline = @"FROM busybox -COPY hello.c ./ -", - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Dockerfile: &dockerbuild.DockerfileArgs{ - Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Inline Dockerfile -name: inline -resources: - image: - properties: - context: - location: app - dockerfile: - inline: | - FROM busybox - COPY hello.c ./ - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.DockerfileArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .build()) - .dockerfile(DockerfileArgs.builder() - .inline(""" -FROM busybox -COPY hello.c ./ - """) - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Remote context - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "https://github.com/docker-library/hello-world.git", - }, - dockerfile: { - location: "app/Dockerfile", - }, - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://github.com/docker-library/hello-world.git", - ), - dockerfile=docker_build.DockerfileArgs( - location="app/Dockerfile", - ), - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "https://github.com/docker-library/hello-world.git", - }, - Dockerfile = new DockerBuild.Inputs.DockerfileArgs - { - Location = "app/Dockerfile", - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("https://github.com/docker-library/hello-world.git"), - }, - Dockerfile: &dockerbuild.DockerfileArgs{ - Location: pulumi.String("app/Dockerfile"), - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Remote context -name: remote-context -resources: - image: - properties: - context: - location: https://github.com/docker-library/hello-world.git - dockerfile: - location: app/Dockerfile - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.DockerfileArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("https://github.com/docker-library/hello-world.git") - .build()) - .dockerfile(DockerfileArgs.builder() - .location("app/Dockerfile") - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% example %}} -### Local export - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const image = new docker_build.Image("image", { - context: { - location: "app", - }, - exports: [{ - docker: { - tar: true, - }, - }], - push: false, -}); -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - exports=[docker_build.ExportArgs( - docker=docker_build.ExportDockerArgs( - tar=True, - ), - )], - push=False) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var image = new DockerBuild.Image("image", new() - { - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Exports = new[] - { - new DockerBuild.Inputs.ExportArgs - { - Docker = new DockerBuild.Inputs.ExportDockerArgs - { - Tar = true, - }, - }, - }, - Push = false, - }); - -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Exports: dockerbuild.ExportArray{ - &dockerbuild.ExportArgs{ - Docker: &dockerbuild.ExportDockerArgs{ - Tar: pulumi.Bool(true), - }, - }, - }, - Push: pulumi.Bool(false), - }) - if err != nil { - return err - } - return nil - }) -} -``` -```yaml -description: Local export -name: docker-load -resources: - image: - properties: - context: - location: app - exports: - - docker: - tar: true - push: false - type: docker-build:Image -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.ExportArgs; -import com.pulumi.dockerbuild.inputs.ExportDockerArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var image = new Image("image", ImageArgs.builder() - .context(BuildContextArgs.builder() - .location("app") - .build()) - .exports(ExportArgs.builder() - .docker(ExportDockerArgs.builder() - .tar(true) - .build()) - .build()) - .push(false) - .build()); - - } -} -``` -{{% /example %}} -{{% /examples %}} \ No newline at end of file diff --git a/provider/internal/embed/image-migration.md b/provider/internal/embed/image-migration.md deleted file mode 100644 index 9e85b93..0000000 --- a/provider/internal/embed/image-migration.md +++ /dev/null @@ -1,224 +0,0 @@ -## Migrating Pulumi Docker v3 and v4 Image resources - -This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. -Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - -### Behavioral differences - -There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - -#### Previews - -Version `3.x` of the Pulumi Docker provider always builds images during preview operations. -This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - -Version `4.x` changed build-on-preview behavior to be opt-in. -By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. -Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - -The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. -This behavior can be changed by specifying `buildOnPreview`. - -#### Push behavior - -Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. -They expose a `skipPush: true` option to disable pushing. - -This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - -To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). -Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - -#### Secrets - -Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - -Version `4.x` of the Pulumi Docker provider does not support secrets. - -The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. -Instead, they should be passed directly as values. -(Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) -Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - -#### Caching - -Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. -It builds targets individually and pushes them to separate images for caching. - -Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - -Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. -This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - -The `Image` resource delegates all caching behavior to Docker. -`cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - -#### Outputs - -Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. -In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - -Unlike earlier providers the `Image` resource can push multiple tags. -As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. -If multiple tags were pushed this uses one at random. - -If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - -#### Tag deletion and refreshes - -Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - -The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. -If any are missing a subsequent `update` will push them. - -When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. -Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). -Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - -Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - -### Example migration - -Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - -The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. -After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. -In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - -The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. -It it is shown with parameters similar to the `v3` example for completeness. - -{{% examples %}} -## Example Usage -{{% example %}} -### v3/v4 migration - -```typescript - -// v3 Image -const v3 = new docker.Image("v3-image", { - imageName: "myregistry.com/user/repo:latest", - localImageName: "local-tag", - skipPush: false, - build: { - dockerfile: "./Dockerfile", - context: "../app", - target: "mytarget", - args: { - MY_BUILD_ARG: "foo", - }, - env: { - DOCKER_BUILDKIT: "1", - }, - extraOptions: [ - "--cache-from", - "type=registry,myregistry.com/user/repo:cache", - "--cache-to", - "type=registry,myregistry.com/user/repo:cache", - "--add-host", - "metadata.google.internal:169.254.169.254", - "--secret", - "id=mysecret,src=/local/secret", - "--ssh", - "default=/home/runner/.ssh/id_ed25519", - "--network", - "host", - "--platform", - "linux/amd64", - ], - }, - registry: { - server: "myregistry.com", - username: "username", - password: pulumi.secret("password"), - }, -}); - -// v3 Image after migrating to docker-build.Image -const v3Migrated = new dockerbuild.Image("v3-to-buildx", { - tags: ["myregistry.com/user/repo:latest", "local-tag"], - push: true, - dockerfile: { - location: "./Dockerfile", - }, - context: { - location: "../app", - }, - target: "mytarget", - buildArgs: { - MY_BUILD_ARG: "foo", - }, - cacheFrom: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - cacheTo: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - secrets: { - mysecret: "value", - }, - addHosts: ["metadata.google.internal:169.254.169.254"], - ssh: { - default: ["/home/runner/.ssh/id_ed25519"], - }, - network: "host", - platforms: ["linux/amd64"], - registries: [{ - address: "myregistry.com", - username: "username", - password: pulumi.secret("password"), - }], -}); - - -// v4 Image -const v4 = new docker.Image("v4-image", { - imageName: "myregistry.com/user/repo:latest", - skipPush: false, - build: { - dockerfile: "./Dockerfile", - context: "../app", - target: "mytarget", - args: { - MY_BUILD_ARG: "foo", - }, - cacheFrom: { - images: ["myregistry.com/user/repo:cache"], - }, - addHosts: ["metadata.google.internal:169.254.169.254"], - network: "host", - platform: "linux/amd64", - }, - buildOnPreview: true, - registry: { - server: "myregistry.com", - username: "username", - password: pulumi.secret("password"), - }, -}); - -// v4 Image after migrating to docker-build.Image -const v4Migrated = new dockerbuild.Image("v4-to-buildx", { - tags: ["myregistry.com/user/repo:latest"], - push: true, - dockerfile: { - location: "./Dockerfile", - }, - context: { - location: "../app", - }, - target: "mytarget", - buildArgs: { - MY_BUILD_ARG: "foo", - }, - cacheFrom: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - cacheTo: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - addHosts: ["metadata.google.internal:169.254.169.254"], - network: "host", - platforms: ["linux/amd64"], - registries: [{ - address: "myregistry.com", - username: "username", - password: pulumi.secret("password"), - }], -}); - -``` - -{{% /example %}} diff --git a/provider/internal/embed/index-examples.md b/provider/internal/embed/index-examples.md deleted file mode 100644 index 415b026..0000000 --- a/provider/internal/embed/index-examples.md +++ /dev/null @@ -1,408 +0,0 @@ -{{% examples %}} -## Example Usage -{{% example %}} -### Multi-platform registry caching - -```typescript -import * as pulumi from "@pulumi/pulumi"; -import * as docker_build from "@pulumi/docker-build"; - -const amd64 = new docker_build.Image("amd64", { - cacheFrom: [{ - registry: { - ref: "docker.io/pulumi/pulumi:cache-amd64", - }, - }], - cacheTo: [{ - registry: { - mode: docker_build.CacheMode.Max, - ref: "docker.io/pulumi/pulumi:cache-amd64", - }, - }], - context: { - location: "app", - }, - platforms: [docker_build.Platform.Linux_amd64], - tags: ["docker.io/pulumi/pulumi:3.107.0-amd64"], -}); -const arm64 = new docker_build.Image("arm64", { - cacheFrom: [{ - registry: { - ref: "docker.io/pulumi/pulumi:cache-arm64", - }, - }], - cacheTo: [{ - registry: { - mode: docker_build.CacheMode.Max, - ref: "docker.io/pulumi/pulumi:cache-arm64", - }, - }], - context: { - location: "app", - }, - platforms: [docker_build.Platform.Linux_arm64], - tags: ["docker.io/pulumi/pulumi:3.107.0-arm64"], -}); -const index = new docker_build.Index("index", { - sources: [ - amd64.ref, - arm64.ref, - ], - tag: "docker.io/pulumi/pulumi:3.107.0", -}); -export const ref = index.ref; -``` -```python -import pulumi -import pulumi_docker_build as docker_build - -amd64 = docker_build.Image("amd64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_AMD64], - tags=["docker.io/pulumi/pulumi:3.107.0-amd64"]) -arm64 = docker_build.Image("arm64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_ARM64], - tags=["docker.io/pulumi/pulumi:3.107.0-arm64"]) -index = docker_build.Index("index", - sources=[ - amd64.ref, - arm64.ref, - ], - tag="docker.io/pulumi/pulumi:3.107.0") -pulumi.export("ref", index.ref) -``` -```csharp -using System.Collections.Generic; -using System.Linq; -using Pulumi; -using DockerBuild = Pulumi.DockerBuild; - -return await Deployment.RunAsync(() => -{ - var amd64 = new DockerBuild.Image("amd64", new() - { - CacheFrom = new[] - { - new DockerBuild.Inputs.CacheFromArgs - { - Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - { - Ref = "docker.io/pulumi/pulumi:cache-amd64", - }, - }, - }, - CacheTo = new[] - { - new DockerBuild.Inputs.CacheToArgs - { - Registry = new DockerBuild.Inputs.CacheToRegistryArgs - { - Mode = DockerBuild.CacheMode.Max, - Ref = "docker.io/pulumi/pulumi:cache-amd64", - }, - }, - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Platforms = new[] - { - DockerBuild.Platform.Linux_amd64, - }, - Tags = new[] - { - "docker.io/pulumi/pulumi:3.107.0-amd64", - }, - }); - - var arm64 = new DockerBuild.Image("arm64", new() - { - CacheFrom = new[] - { - new DockerBuild.Inputs.CacheFromArgs - { - Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - { - Ref = "docker.io/pulumi/pulumi:cache-arm64", - }, - }, - }, - CacheTo = new[] - { - new DockerBuild.Inputs.CacheToArgs - { - Registry = new DockerBuild.Inputs.CacheToRegistryArgs - { - Mode = DockerBuild.CacheMode.Max, - Ref = "docker.io/pulumi/pulumi:cache-arm64", - }, - }, - }, - Context = new DockerBuild.Inputs.BuildContextArgs - { - Location = "app", - }, - Platforms = new[] - { - DockerBuild.Platform.Linux_arm64, - }, - Tags = new[] - { - "docker.io/pulumi/pulumi:3.107.0-arm64", - }, - }); - - var index = new DockerBuild.Index("index", new() - { - Sources = new[] - { - amd64.Ref, - arm64.Ref, - }, - Tag = "docker.io/pulumi/pulumi:3.107.0", - }); - - return new Dictionary - { - ["ref"] = index.Ref, - }; -}); - -``` -```go -package main - -import ( - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func main() { - pulumi.Run(func(ctx *pulumi.Context) error { - amd64, err := dockerbuild.NewImage(ctx, "amd64", &dockerbuild.ImageArgs{ - CacheFrom: dockerbuild.CacheFromArray{ - &dockerbuild.CacheFromArgs{ - Registry: &dockerbuild.CacheFromRegistryArgs{ - Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), - }, - }, - }, - CacheTo: dockerbuild.CacheToArray{ - &dockerbuild.CacheToArgs{ - Registry: &dockerbuild.CacheToRegistryArgs{ - Mode: dockerbuild.CacheModeMax, - Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), - }, - }, - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Platforms: docker - build.PlatformArray{ - dockerbuild.Platform_Linux_amd64, - }, - Tags: pulumi.StringArray{ - pulumi.String("docker.io/pulumi/pulumi:3.107.0-amd64"), - }, - }) - if err != nil { - return err - } - arm64, err := dockerbuild.NewImage(ctx, "arm64", &dockerbuild.ImageArgs{ - CacheFrom: dockerbuild.CacheFromArray{ - &dockerbuild.CacheFromArgs{ - Registry: &dockerbuild.CacheFromRegistryArgs{ - Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), - }, - }, - }, - CacheTo: dockerbuild.CacheToArray{ - &dockerbuild.CacheToArgs{ - Registry: &dockerbuild.CacheToRegistryArgs{ - Mode: dockerbuild.CacheModeMax, - Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), - }, - }, - }, - Context: &dockerbuild.BuildContextArgs{ - Location: pulumi.String("app"), - }, - Platforms: docker - build.PlatformArray{ - dockerbuild.Platform_Linux_arm64, - }, - Tags: pulumi.StringArray{ - pulumi.String("docker.io/pulumi/pulumi:3.107.0-arm64"), - }, - }) - if err != nil { - return err - } - index, err := dockerbuild.NewIndex(ctx, "index", &dockerbuild.IndexArgs{ - Sources: pulumi.StringArray{ - amd64.Ref, - arm64.Ref, - }, - Tag: pulumi.String("docker.io/pulumi/pulumi:3.107.0"), - }) - if err != nil { - return err - } - ctx.Export("ref", index.Ref) - return nil - }) -} -``` -```yaml -description: Multi-platform registry caching -name: registry-caching -outputs: - ref: ${index.ref} -resources: - amd64: - properties: - cacheFrom: - - registry: - ref: docker.io/pulumi/pulumi:cache-amd64 - cacheTo: - - registry: - mode: max - ref: docker.io/pulumi/pulumi:cache-amd64 - context: - location: app - platforms: - - linux/amd64 - tags: - - docker.io/pulumi/pulumi:3.107.0-amd64 - type: docker-build:Image - arm64: - properties: - cacheFrom: - - registry: - ref: docker.io/pulumi/pulumi:cache-arm64 - cacheTo: - - registry: - mode: max - ref: docker.io/pulumi/pulumi:cache-arm64 - context: - location: app - platforms: - - linux/arm64 - tags: - - docker.io/pulumi/pulumi:3.107.0-arm64 - type: docker-build:Image - index: - properties: - sources: - - ${amd64.ref} - - ${arm64.ref} - tag: docker.io/pulumi/pulumi:3.107.0 - type: docker-build:Index -runtime: yaml -``` -```java -package generated_program; - -import com.pulumi.Context; -import com.pulumi.Pulumi; -import com.pulumi.core.Output; -import com.pulumi.dockerbuild.Image; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.inputs.CacheFromArgs; -import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs; -import com.pulumi.dockerbuild.inputs.CacheToArgs; -import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.Index; -import com.pulumi.dockerbuild.IndexArgs; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class App { - public static void main(String[] args) { - Pulumi.run(App::stack); - } - - public static void stack(Context ctx) { - var amd64 = new Image("amd64", ImageArgs.builder() - .cacheFrom(CacheFromArgs.builder() - .registry(CacheFromRegistryArgs.builder() - .ref("docker.io/pulumi/pulumi:cache-amd64") - .build()) - .build()) - .cacheTo(CacheToArgs.builder() - .registry(CacheToRegistryArgs.builder() - .mode("max") - .ref("docker.io/pulumi/pulumi:cache-amd64") - .build()) - .build()) - .context(BuildContextArgs.builder() - .location("app") - .build()) - .platforms("linux/amd64") - .tags("docker.io/pulumi/pulumi:3.107.0-amd64") - .build()); - - var arm64 = new Image("arm64", ImageArgs.builder() - .cacheFrom(CacheFromArgs.builder() - .registry(CacheFromRegistryArgs.builder() - .ref("docker.io/pulumi/pulumi:cache-arm64") - .build()) - .build()) - .cacheTo(CacheToArgs.builder() - .registry(CacheToRegistryArgs.builder() - .mode("max") - .ref("docker.io/pulumi/pulumi:cache-arm64") - .build()) - .build()) - .context(BuildContextArgs.builder() - .location("app") - .build()) - .platforms("linux/arm64") - .tags("docker.io/pulumi/pulumi:3.107.0-arm64") - .build()); - - var index = new Index("index", IndexArgs.builder() - .sources( - amd64.ref(), - arm64.ref()) - .tag("docker.io/pulumi/pulumi:3.107.0") - .build()); - - ctx.export("ref", index.ref()); - } -} -``` -{{% /example %}} -{{% /examples %}} \ No newline at end of file diff --git a/provider/internal/export.go b/provider/internal/export.go deleted file mode 100644 index 0b41a2d..0000000 --- a/provider/internal/export.go +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "errors" - "fmt" - "slices" - "strings" - - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/buildx/util/buildflags" - - "github.com/pulumi/pulumi-go-provider/infer" -) - -var ( - _ fmt.Stringer = (*Export)(nil) - _ fmt.Stringer = (*ExportDocker)(nil) - _ fmt.Stringer = (*ExportImage)(nil) - _ fmt.Stringer = (*ExportLocal)(nil) - _ fmt.Stringer = (*ExportOCI)(nil) - _ fmt.Stringer = (*ExportRegistry)(nil) - _ fmt.Stringer = (*ExportTar)(nil) - _ fmt.Stringer = ExportWithAnnotations{} - _ fmt.Stringer = ExportWithCompression{} - _ fmt.Stringer = ExportWithNames{} - _ fmt.Stringer = ExportWithOCI{} - _ infer.Annotated = (*Export)(nil) - _ infer.Annotated = (*ExportDocker)(nil) - _ infer.Annotated = (*ExportImage)(nil) - _ infer.Annotated = (*ExportLocal)(nil) - _ infer.Annotated = (*ExportOCI)(nil) - _ infer.Annotated = (*ExportRegistry)(nil) - _ infer.Annotated = (*ExportTar)(nil) -) - -// Export is a "union" type for all of our available `--output` options. -type Export struct { - Tar *ExportTar `pulumi:"tar,optional"` - Local *ExportLocal `pulumi:"local,optional"` - Registry *ExportRegistry `pulumi:"registry,optional"` - Image *ExportImage `pulumi:"image,optional"` - OCI *ExportOCI `pulumi:"oci,optional"` - Docker *ExportDocker `pulumi:"docker,optional"` - CacheOnly *ExportCacheOnly `pulumi:"cacheonly,optional"` - Raw Raw `pulumi:"raw,optional"` - - Disabled bool `pulumi:"disabled,optional"` -} - -// Annotate sets docstrings on Export. -func (e *Export) Annotate(a infer.Annotator) { - a.Describe(&e.Tar, dedent(` - Export to a local directory as a tarball.`, - )) - a.Describe(&e.Local, dedent(` - Export to a local directory as files and directories.`, - )) - a.Describe(&e.Registry, dedent(` - Identical to the Image exporter, but pushes by default.`, - )) - a.Describe(&e.Image, dedent(` - Outputs the build result into a container image format.`, - )) - a.Describe(&e.OCI, dedent(` - Identical to the Docker exporter but uses OCI media types by default.`, - )) - a.Describe(&e.Docker, dedent(` - Export as a Docker image layout.`, - )) - a.Describe(&e.Raw, dedent(` - A raw string as you would provide it to the Docker CLI (e.g., - "type=docker")`, - )) - a.Describe(&e.CacheOnly, dedent(` - A no-op export. Helpful for silencing the 'no exports' warning if you - just want to populate caches. - `)) - - a.Describe(&e.Disabled, dedent(` - When "true" this entry will be excluded. Defaults to "false". - `)) -} - -// String returns a CLI-encoded value for this `--output` entry, or an empty -// string if disabled. `validate` should be called to ensure only one entry was -// set. -func (e Export) String() string { - if e.Disabled { - return "" - } - return join(e.Tar, e.Local, e.Registry, e.Image, e.OCI, e.Docker, e.CacheOnly, e.Raw) -} - -// pushed returns true if the export would result in a registry push. -func (e Export) pushed() bool { - if e.Raw != "" { - exp, err := buildflags.ParseExports([]string{e.Raw.String()}) - if err != nil { - return false - } - return exp[0].Attrs["push"] == "true" - } - if e.Registry != nil { - return e.Registry.Push == nil || *e.Registry.Push - } - if e.Image != nil { - return e.Image.Push != nil && *e.Image.Push - } - return false -} - -func (e Export) validate(preview bool, tags []string) (*controllerapi.ExportEntry, error) { - if strings.Count(e.String(), "type=") > 1 { - return nil, errors.New("exports should only specify one export type") - } - ee, err := buildflags.ParseExports([]string{e.String()}) - if err != nil { - return nil, err - } - exp := ee[0] - if len(tags) == 0 && isRegistryPush(exp) && exp.Attrs["name"] == "" { - return nil, errors.New( - "at least one tag or export name is needed when pushing to a registry", - ) - } - if !preview { - return exp, nil - } - - // Don't perform registry pushes during previews. - if exp.Type == "image" { - exp.Attrs["push"] = "false" - } - return exp, nil -} - -// ExportCacheOnly is a dummy/no-op --cache-to entry. It exists only to help -// silence the "no exports configured" warning. By using this the user signals -// that they intentionally do not want exports, and only caches will be -// populated as a result. -type ExportCacheOnly struct{} - -// String returns the CLI-encoded value of these export options, or an empty -// string if the receiver is nil. -func (e *ExportCacheOnly) String() string { - if e == nil { - return "" - } - return "type=cacheonly" -} - -// ExportDocker pushes the final image to the local build daemon. -type ExportDocker struct { - ExportWithOCI - ExportWithCompression - ExportWithAnnotations - ExportWithNames - - Dest string `pulumi:"dest,optional"` - Tar *bool `pulumi:"tar,optional"` -} - -// Annotate sets docstrings and defaults on ExportDocker. -func (e *ExportDocker) Annotate(a infer.Annotator) { - a.SetDefault(&e.Tar, true) - - a.Describe(&e.Dest, "The local export path.") - a.Describe(&e.Tar, "Bundle the output into a tarball layout.") -} - -// String returns the CLI-encoded value of these export options, or an empty -// string if the receiver is nil. -func (e *ExportDocker) String() string { - if e == nil { - return "" - } - parts := []string{} - if e.Dest != "" { - parts = append(parts, "dest="+e.Dest) - } - if e.Tar != nil { - parts = append(parts, fmt.Sprintf("tar=%t", *e.Tar)) - } - - return join( - Raw("type=docker"), - Raw(strings.Join(parts, ",")), - e.ExportWithOCI, - e.ExportWithCompression, - e.ExportWithAnnotations, - e.ExportWithNames, - ) -} - -// ExportOCI is a cache that defaults to using OCI media types. -type ExportOCI struct { - ExportDocker -} - -// Annotate sets docstrings and defaults on ExportOCI. -func (e *ExportOCI) Annotate(a infer.Annotator) { - a.SetDefault(&e.OCI, true) - a.Describe(&e.OCI, "Use OCI media types in exporter manifests.") -} - -func (e *ExportOCI) String() string { - if e == nil { - return "" - } - return strings.Replace(e.ExportDocker.String(), "type=docker", "type=oci", 1) -} - -// ExportImage can push the final image to remote registries. -type ExportImage struct { - ExportWithOCI - ExportWithCompression - ExportWithNames - ExportWithAnnotations - - Push *bool `pulumi:"push,optional"` - PushByDigest *bool `pulumi:"pushByDigest,optional"` - Insecure *bool `pulumi:"insecure,optional"` - DanglingNamePrefix string `pulumi:"danglingNamePrefix,optional"` - NameCanonical *bool `pulumi:"nameCanonical,optional"` - Unpack *bool `pulumi:"unpack,optional"` - Store *bool `pulumi:"store,optional"` -} - -// Annotate sets docstrings and defaults on ExportImage. -func (e *ExportImage) Annotate(a infer.Annotator) { - a.SetDefault(&e.Store, true) - - a.Describe(&e.Store, dedent(` - Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to "true". - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - `)) - a.Describe(&e.Push, dedent(` - Push after creating the image. Defaults to "false". - `)) - a.Describe(&e.DanglingNamePrefix, dedent(` - Name image with "prefix@", used for anonymous images. - `)) - a.Describe(&e.NameCanonical, dedent(` - Add additional canonical name ("name@"). - `)) - a.Describe(&e.Insecure, dedent(` - Allow pushing to an insecure registry. - `)) - a.Describe(&e.PushByDigest, dedent(` - Push image without name. - `)) - a.Describe(&e.Unpack, dedent(` - Unpack image after creation (for use with containerd). Defaults to - "false". - `)) -} - -// String returns the CLI-encoded value of these export options, or an empty -// string if the receiver is nil. -func (e *ExportImage) String() string { - if e == nil { - return "" - } - parts := []string{} - if e.Push != nil { - parts = append(parts, fmt.Sprintf("push=%t", *e.Push)) - } - if e.PushByDigest != nil { - parts = append(parts, fmt.Sprintf("push-by-digest=%t", *e.PushByDigest)) - } - if e.Insecure != nil { - parts = append(parts, fmt.Sprintf("insecure=%t", *e.Insecure)) - } - if e.DanglingNamePrefix != "" { - parts = append(parts, "dangling-name-prefix="+e.DanglingNamePrefix) - } - if e.NameCanonical != nil { - parts = append(parts, fmt.Sprintf("name-canonical=%t", *e.NameCanonical)) - } - if e.Unpack != nil { - parts = append(parts, fmt.Sprintf("unpack=%t", *e.Unpack)) - } - if e.Store != nil { - parts = append(parts, fmt.Sprintf("store=%t", *e.Store)) - } - return join( - Raw("type=image"), - Raw(strings.Join(parts, ",")), - e.ExportWithOCI, - e.ExportWithCompression, - e.ExportWithNames, - e.ExportWithAnnotations, - ) -} - -// ExportRegistry is equivalent to ExportImage but defaults to push=true. -type ExportRegistry struct { - ExportImage -} - -// Annotate sets docstrings and defaults on ExportRegistry. -func (e *ExportRegistry) Annotate(a infer.Annotator) { - a.Describe(&e.Push, dedent(` - Push after creating the image. Defaults to "true". - `)) - a.SetDefault(&e.Push, true) -} - -// String returns the CLI-encoded value of these export options, or an empty -// string if the receiver is nil. -func (e *ExportRegistry) String() string { - if e == nil { - return "" - } - return strings.Replace(e.ExportImage.String(), "type=image", "type=registry", 1) -} - -// ExportLocal writes the final image to disk. -type ExportLocal struct { - Dest string `pulumi:"dest"` -} - -// String returns the CLI-encoded value of these export options, or an empty -// string if the receiver is nil. -func (e *ExportLocal) String() string { - if e == nil { - return "" - } - return "type=local,dest=" + e.Dest -} - -// Annotate sets docstrings on ExportLocal. -func (e *ExportLocal) Annotate(a infer.Annotator) { - a.Describe(&e.Dest, "Output path.") -} - -// ExportTar is an export that uses the tar format for exporting. -type ExportTar struct { - ExportLocal -} - -func (e *ExportTar) String() string { - if e == nil { - return "" - } - return "type=tar,dest=" + e.Dest -} - -// ExportWithOCI is an export that support OCI media types. -type ExportWithOCI struct { - OCI *bool `pulumi:"ociMediaTypes,optional"` -} - -// Annotate sets defaults on ExportWithOCI. -func (c *ExportWithOCI) Annotate(a infer.Annotator) { - a.SetDefault(&c.OCI, false) - a.Describe(&c.OCI, "Use OCI media types in exporter manifests.") -} - -func (c ExportWithOCI) String() string { - if c.OCI == nil { - return "" - } - return fmt.Sprintf("oci-mediatypes=%t", *c.OCI) -} - -// ExportWithCompression is an export with options to configure compression -// settings. -type ExportWithCompression struct { - Compression *CompressionType `pulumi:"compression,optional"` - CompressionLevel int `pulumi:"compressionLevel,optional"` - ForceCompression *bool `pulumi:"forceCompression,optional"` -} - -// Annotate sets docstrings and defaults on ExportWithCompression. -func (e *ExportWithCompression) Annotate(a infer.Annotator) { - a.SetDefault(&e.Compression, Gzip) - a.SetDefault(&e.CompressionLevel, 0) - a.SetDefault(&e.ForceCompression, false) - - a.Describe(&e.Compression, "The compression type to use.") - a.Describe(&e.CompressionLevel, "Compression level from 0 to 22.") - a.Describe(&e.ForceCompression, "Forcefully apply compression.") -} - -func (e ExportWithCompression) String() string { - if e.CompressionLevel == 0 { - return "" - } - parts := []string{} - if e.Compression != nil { - parts = append(parts, fmt.Sprintf("compression=%s", *e.Compression)) - } - if e.CompressionLevel > 0 { - cl := e.CompressionLevel - if cl > 22 { - cl = 22 - } - parts = append(parts, fmt.Sprintf("compression-level=%d", cl)) - } - if e.ForceCompression != nil { - parts = append(parts, fmt.Sprintf("force-compression=%t", *e.ForceCompression)) - } - return strings.Join(parts, ",") -} - -// ExportWithNames is an export with configurable names (tags). -type ExportWithNames struct { - Names []string `pulumi:"names,optional"` -} - -func (e ExportWithNames) String() string { - parts := []string{} - for _, n := range e.Names { - parts = append(parts, "name="+n) - } - return strings.Join(parts, ",") -} - -// Annotate sets docstrings on ExportWithNames. -func (e *ExportWithNames) Annotate(a infer.Annotator) { - a.Describe( - &e.Names, - "Specify images names to export. This is overridden if tags are already specified.", - ) -} - -// ExportWithAnnotations is an export with configurable annotations. -type ExportWithAnnotations struct { - Annotations map[string]string `pulumi:"annotations,optional"` -} - -func (e ExportWithAnnotations) String() string { - parts := []string{} - for k, v := range e.Annotations { - parts = append(parts, fmt.Sprintf("annotation.%s=%s", k, v)) - } - slices.Sort(parts) - return strings.Join(parts, ",") -} - -// Annotate sets docstrings on ExportWithAnnotations. -func (e *ExportWithAnnotations) Annotate(a infer.Annotator) { - a.Describe(&e.Annotations, dedent(` - Attach an arbitrary key/value annotation to the image. - `)) -} - -// isRegistryPush returns true if the ExportEntry results in an image pushed to -// a registry. -func isRegistryPush(export *controllerapi.ExportEntry) bool { - // "type=registry" is shorthand for "type=image,push=true" so we only need - // to check "image" types. - return export.Type == "image" && export.Attrs["push"] == "true" -} diff --git a/provider/internal/export_test.go b/provider/internal/export_test.go deleted file mode 100644 index 60ba4ea..0000000 --- a/provider/internal/export_test.go +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "testing" - - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/buildx/util/buildflags" - "github.com/stretchr/testify/assert" - - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -func TestValidateExport(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - e Export - givenTags []string - preview bool - - wantExp *controllerapi.ExportEntry - wantErr string - }{ - { - name: "raw - no push on preview", - preview: true, - e: Export{Raw: "type=registry"}, - givenTags: []string{"docker.io/foo/bar"}, - wantExp: &controllerapi.ExportEntry{ - Type: "image", - Attrs: map[string]string{"push": "false"}, - }, - }, - { - name: "raw - push requires tags", - e: Export{Raw: "type=registry"}, - wantErr: "tag or export name is needed", - }, - { - name: "registry - no push on preview", - preview: true, - e: Export{Registry: &ExportRegistry{}}, - givenTags: []string{"docker.io/foo/bar"}, - wantExp: &controllerapi.ExportEntry{ - Type: "image", - Attrs: map[string]string{"push": "false"}, - }, - }, - { - name: "registry - push requires tags", - e: Export{Registry: &ExportRegistry{}}, - wantErr: "tag or export name is needed", - }, - { - name: "over-specified", - e: Export{Raw: "type=registry", Registry: &ExportRegistry{}}, - wantErr: "specify one export type", - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - e, err := tt.e.validate(tt.preview, tt.givenTags) - if tt.wantErr == "" { - assert.NoError(t, err) - } else { - assert.ErrorContains(t, err, tt.wantErr) - } - if tt.wantExp != nil { - assert.Equal(t, tt.wantExp.Type, e.Type) - assert.Equal(t, tt.wantExp.Attrs, e.Attrs) - } - }) - } -} - -func TestExportString(t *testing.T) { - t.Parallel() - gzip := Gzip - tests := []struct { - name string - given Export - want string - }{ - { - name: "tar", - given: Export{Tar: &ExportTar{ExportLocal: ExportLocal{Dest: "/foo"}}}, - want: "type=tar,dest=/foo", - }, - { - name: "local", - given: Export{Local: &ExportLocal{Dest: "/bar"}}, - want: "type=local,dest=/bar", - }, - { - name: "registry-with-compression", - given: Export{Registry: &ExportRegistry{ - ExportImage: ExportImage{ - ExportWithCompression: ExportWithCompression{ - Compression: &gzip, - CompressionLevel: 100, - ForceCompression: pulumi.BoolRef(true), - }, - }, - }}, - want: "type=registry,compression=gzip,compression-level=22,force-compression=true", - }, - { - name: "registry-without-push", - given: Export{Registry: &ExportRegistry{ - ExportImage: ExportImage{ - Push: pulumi.BoolRef(false), - }, - }}, - want: "type=registry,push=false", - }, - { - name: "image", - given: Export{ - Image: &ExportImage{ - Push: pulumi.BoolRef(true), - PushByDigest: pulumi.BoolRef(true), - Insecure: pulumi.BoolRef(true), - DanglingNamePrefix: "prefix", - Unpack: pulumi.BoolRef(true), - Store: pulumi.BoolRef(false), - }, - }, - want: "type=image,push=true,push-by-digest=true,insecure=true,dangling-name-prefix=prefix,unpack=true,store=false", - }, - { - name: "oci-with-names", - given: Export{OCI: &ExportOCI{ - ExportDocker: ExportDocker{ - ExportWithNames: ExportWithNames{ - Names: []string{"foo", "bar"}, - }, - }, - }}, - want: "type=oci,name=foo,name=bar", - }, - { - name: "docker-with-annotations", - given: Export{Docker: &ExportDocker{ - ExportWithAnnotations: ExportWithAnnotations{ - Annotations: map[string]string{ - "foo": "bar", - "boo": "baz", - }, - }, - }}, - want: "type=docker,annotation.boo=baz,annotation.foo=bar", - }, - { - name: "raw", - given: Export{Raw: Raw("type=docker")}, - want: "type=docker", - }, - { - name: "disabled", - given: Export{Raw: Raw("type=docker"), Disabled: true}, - want: "", - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - actual := tt.given.String() - assert.Equal(t, tt.want, tt.given.String()) - - if tt.want != "" { - // Our output should be parsable by Docker. - _, err := buildflags.ParseExports([]string{actual}) - assert.NoError(t, err) - } - }) - } -} - -func TestExportPushed(t *testing.T) { - t.Parallel() - tests := []struct { - name string - e Export - want bool - }{ - { - name: "raw registry", - e: Export{Raw: "type=registry"}, - want: true, - }, - { - name: "raw image", - e: Export{Raw: "type=image"}, - want: false, - }, - { - name: "registry with no push", - e: Export{Registry: &ExportRegistry{}}, - want: true, - }, - { - name: "registry with explicit push", - e: Export{Registry: &ExportRegistry{ExportImage{Push: pulumi.BoolRef(false)}}}, - want: false, - }, - { - name: "image with explicit push", - e: Export{Image: &ExportImage{Push: pulumi.BoolRef(true)}}, - want: true, - }, - { - name: "local", - e: Export{Local: &ExportLocal{}}, - want: false, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - actual := tt.e.pushed() - assert.Equal(t, tt.want, actual) - }) - } -} diff --git a/provider/internal/host.go b/provider/internal/host.go deleted file mode 100644 index 6376efb..0000000 --- a/provider/internal/host.go +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "fmt" - "path/filepath" - "sync" - "time" - - "github.com/docker/buildx/builder" - "github.com/docker/buildx/store/storeutil" - "github.com/docker/cli/cli/command" - cfgtypes "github.com/docker/cli/cli/config/types" -) - -// host contains a host-level Docker CLI as well as a cache of initialized -// builders. Operations on the host are serialized. -type host struct { - mu sync.Mutex - cli command.Cli - config *Config - builders map[string]*cachedBuilder - auths map[string]cfgtypes.AuthConfig -} - -func newHost(config *Config) (*host, error) { - docker, err := newDockerCLI(config) - if err != nil { - return nil, err - } - // Load existing credentials into memory. - auths, err := docker.ConfigFile().GetAllCredentials() - if err != nil { - return nil, err - } - h := &host{ - cli: docker, - config: config, - builders: map[string]*cachedBuilder{}, - auths: auths, - } - return h, err -} - -// builderFor ensures a builder is available and running. This is guarded by a -// mutex to ensure other resources don't attempt to use the builder until it's -// ready. -// -// If the build doesn't specify a builder by name, we will iterate through all -// available builders until we find one that we can connect to. -func (h *host) builderFor(build Build) (*cachedBuilder, error) { - h.mu.Lock() - defer h.mu.Unlock() - - opts := build.BuildOptions() - - if b, ok := h.builders[opts.Builder]; ok { - return b, nil - } - - txn, release, err := storeutil.GetStore(h.cli) - if err != nil { - return nil, fmt.Errorf("getting store: %w", err) - } - defer release() - - contextPathHash := opts.ContextPath - if absContextPath, err := filepath.Abs(contextPathHash); err == nil { - contextPathHash = absContextPath - } - b, err := builder.New(h.cli, - builder.WithName(opts.Builder), - builder.WithContextPathHash(contextPathHash), - builder.WithStore(txn), - ) - if err != nil { - return nil, fmt.Errorf("new builder: %w", err) - } - - // If we didn't request a particular builder, and we loaded a default - // builder with an unsupported (docker) driver, then look for a builder we - // do support. - if b.Driver == "" && opts.Builder == "" { - builders, err := builder.GetBuilders(h.cli, txn) - if err != nil { - return nil, fmt.Errorf("getting builders: %w", err) - } - nextbuilder: - for _, bb := range builders { - if bb.Driver == "" { - continue - } - if err := bb.Validate(); err != nil { - continue - } - if bb.Err() != nil { - continue - } - nodes, err := bb.LoadNodes(context.Background()) - if err != nil { - continue - } - for idx := range nodes { - n := nodes[idx] - if n.Driver == nil { - continue nextbuilder - } - if _, err := n.Driver.Dial(context.Background()); err != nil { - continue nextbuilder - } - // TODO: Confirm the builder supports the requested platforms. - } - b = bb - break - } - } - - if b.Driver == "" && opts.Builder == "" { - - // If we STILL don't have a builder, create a docker-container instance. - b, err = builder.Create( - context.Background(), - txn, - h.cli, - builder.CreateOpts{Driver: "docker-container"}, - ) - if err != nil { - return nil, fmt.Errorf("creating builder: %w", err) - } - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - if _, err := b.Boot(ctx); err != nil { - return nil, fmt.Errorf("booting builder: %w", err) - } - } - - // Attempt to load nodes in order to determine the builder's driver. Ignore - // errors for "exec" builds because it's possible to request builders with - // drivers that are unknown to us. - nodes, err := b.LoadNodes(context.Background()) - if err != nil && !build.ShouldExec() { - return nil, fmt.Errorf("loading nodes: %w", err) - } - - cached := &cachedBuilder{name: b.Name, driver: b.Driver, nodes: nodes} - h.builders[opts.Builder] = cached - - return cached, nil -} - -// cachedBuilder caches the builders we've loaded. Repeatedly fetching them can -// sometimes result in EOF errors from the daemon, especially when under load. -type cachedBuilder struct { - name string - driver string - nodes []builder.Node -} diff --git a/provider/internal/image.go b/provider/internal/image.go deleted file mode 100644 index ede8ace..0000000 --- a/provider/internal/image.go +++ /dev/null @@ -1,1009 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "errors" - "fmt" - "reflect" - "slices" - - // For examples/docs. - _ "embed" - // These imports are needed to register the drivers with buildkit. - _ "github.com/docker/buildx/driver/docker-container" - _ "github.com/docker/buildx/driver/kubernetes" - _ "github.com/docker/buildx/driver/remote" - - "github.com/distribution/reference" - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/docker/errdefs" - "github.com/moby/buildkit/exporter/containerimage/exptypes" - "github.com/moby/buildkit/session" - "github.com/moby/buildkit/session/secrets/secretsprovider" - "github.com/regclient/regclient/types/ref" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/infer" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -var ( - _ infer.Annotated = (*Image)(nil) - _ infer.Annotated = (*ImageArgs)(nil) - _ infer.Annotated = (*ImageState)(nil) - _ infer.CustomCheck[ImageArgs] = (*Image)(nil) - _ infer.CustomDelete[ImageState] = (*Image)(nil) - _ infer.CustomDiff[ImageArgs, ImageState] = (*Image)(nil) - _ infer.CustomRead[ImageArgs, ImageState] = (*Image)(nil) - _ infer.CustomResource[ImageArgs, ImageState] = (*Image)(nil) - _ infer.CustomUpdate[ImageArgs, ImageState] = (*Image)(nil) -) - -//go:embed embed/image-examples.md -var _imageExamples string - -//go:embed embed/image-migration.md -var _migration string - -// Image is a Docker image build using buildkit. -type Image struct{} - -// Annotate provides a description of the Image resource. -func (i *Image) Annotate(a infer.Annotator) { - a.Describe(&i, dedent(` - A Docker image built using buildx -- Docker's interface to the improved - BuildKit backend. - - ## Stability - - **This resource is pre-1.0 and in public preview.** - - We will strive to keep APIs and behavior as stable as possible, but we - cannot guarantee stability until version 1.0. - `)+ - "\n\n"+_migration+ - "\n\n"+_imageExamples, - ) -} - -// ImageArgs instantiates a new Image. -type ImageArgs struct { - AddHosts []string `pulumi:"addHosts,optional"` - BuildArgs map[string]string `pulumi:"buildArgs,optional"` - BuildOnPreview *bool `pulumi:"buildOnPreview,optional"` - Builder *BuilderConfig `pulumi:"builder,optional"` - CacheFrom []CacheFrom `pulumi:"cacheFrom,optional"` - CacheTo []CacheTo `pulumi:"cacheTo,optional"` - Context *BuildContext `pulumi:"context,optional"` - Dockerfile *Dockerfile `pulumi:"dockerfile,optional"` - Exports []Export `pulumi:"exports,optional"` - Labels map[string]string `pulumi:"labels,optional"` - Load bool `pulumi:"load,optional"` - Network *NetworkMode `pulumi:"network,optional"` - NoCache bool `pulumi:"noCache,optional"` - Platforms []Platform `pulumi:"platforms,optional"` - Pull bool `pulumi:"pull,optional"` - Push bool `pulumi:"push"` - Registries []Registry `pulumi:"registries,optional"` - Secrets map[string]string `pulumi:"secrets,optional"` - SSH []SSH `pulumi:"ssh,optional"` - Tags []string `pulumi:"tags,optional"` - Target string `pulumi:"target,optional"` - Exec bool `pulumi:"exec,optional"` -} - -// Annotate describes inputs to the Image resource. -func (ia *ImageArgs) Annotate(a infer.Annotator) { - a.Describe(&ia.AddHosts, dedent(` - Custom "host:ip" mappings to use during the build. - - Equivalent to Docker's "--add-host" flag. - `)) - a.Describe(&ia.BuildArgs, dedent(` - "ARG" names and values to set during the build. - - These variables are accessed like environment variables inside "RUN" - instructions. - - Build arguments are persisted in the image, so you should use "secrets" - if these arguments are sensitive. - - Equivalent to Docker's "--build-arg" flag. - `)) - a.Describe(&ia.BuildOnPreview, dedent(` - Setting this to "false" will always skip image builds during previews, - and setting it to "true" will always build images during previews. - - Images built during previews are never exported to registries, however - cache manifests are still exported. - - On-disk Dockerfiles are always validated for syntactic correctness - regardless of this setting. - - Defaults to "true" as a safeguard against broken images merging as part - of CI pipelines. - `)) - a.SetDefault(&ia.BuildOnPreview, pulumi.Bool(true)) - a.Describe(&ia.Builder, dedent(` - Builder configuration. - `)) - a.Describe(&ia.CacheFrom, dedent(` - Cache export configuration. - - Equivalent to Docker's "--cache-from" flag. - `)) - a.Describe(&ia.CacheTo, dedent(` - Cache import configuration. - - Equivalent to Docker's "--cache-to" flag. - `)) - a.Describe(&ia.Context, dedent(` - Build context settings. Defaults to the current directory. - - Equivalent to Docker's "PATH | URL | -" positional argument. - `)) - a.Describe(&ia.Dockerfile, dedent(` - Dockerfile settings. - - Equivalent to Docker's "--file" flag. - `)) - a.Describe(&ia.Exports, dedent(` - Controls where images are persisted after building. - - Images are only stored in the local cache unless "exports" are - explicitly configured. - - Exporting to multiple destinations requires a daemon running BuildKit - 0.13 or later. - - Equivalent to Docker's "--output" flag. - `)) - a.Describe(&ia.Labels, dedent(` - Attach arbitrary key/value metadata to the image. - - Equivalent to Docker's "--label" flag. - `)) - a.Describe(&ia.Load, dedent(` - When "true" the build will automatically include a "docker" export. - - Defaults to "false". - - Equivalent to Docker's "--load" flag. - `)) - a.Describe(&ia.Network, dedent(` - Set the network mode for "RUN" instructions. Defaults to "default". - - For custom networks, configure your builder with "--driver-opt network=...". - - Equivalent to Docker's "--network" flag. - `)) - a.Describe(&ia.NoCache, dedent(` - Do not import cache manifests when building the image. - - Equivalent to Docker's "--no-cache" flag. - `)) - a.Describe(&ia.Platforms, dedent(` - Set target platform(s) for the build. Defaults to the host's platform. - - Equivalent to Docker's "--platform" flag. - `)) - a.Describe(&ia.Pull, dedent(` - Always pull referenced images. - - Equivalent to Docker's "--pull" flag. - `)) - a.Describe(&ia.Push, dedent(` - When "true" the build will automatically include a "registry" export. - - Defaults to "false". - - Equivalent to Docker's "--push" flag. - `)) - a.Describe(&ia.Secrets, dedent(` - A mapping of secret names to their corresponding values. - - Unlike the Docker CLI, these can be passed by value and do not need to - exist on-disk or in environment variables. - - Build arguments and environment variables are persistent in the final - image, so you should use this for sensitive values. - - Similar to Docker's "--secret" flag. - `)) - a.Describe(&ia.SSH, dedent(` - SSH agent socket or keys to expose to the build. - - Equivalent to Docker's "--ssh" flag. - `)) - a.Describe(&ia.Tags, dedent(` - Name and optionally a tag (format: "name:tag"). - - If exporting to a registry, the name should include the fully qualified - registry address (e.g. "docker.io/pulumi/pulumi:latest"). - - Equivalent to Docker's "--tag" flag. - `)) - a.Describe(&ia.Target, dedent(` - Set the target build stage(s) to build. - - If not specified all targets will be built by default. - - Equivalent to Docker's "--target" flag. - `)) - a.Describe(&ia.Registries, dedent(` - Registry credentials. Required if reading or exporting to private - repositories. - - Credentials are kept in-memory and do not pollute pre-existing - credentials on the host. - - Similar to "docker login". - `)) - - a.Describe(&ia.Exec, dedent(` - Use "exec" mode to build this image. - - By default the provider embeds a v25 Docker client with v0.12 buildx - support. This helps ensure consistent behavior across environments and - is compatible with alternative build backends (e.g. "buildkitd"), but - it may not be desirable if you require a specific version of buildx. - For example you may want to run a custom "docker-buildx" binary with - support for [Docker Build - Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - - When this is set to "true" the provider will instead execute the - "docker-buildx" binary directly to perform its operations. The user is - responsible for ensuring this binary exists, with correct permissions - and pre-configured builders, at a path Docker expects (e.g. - "~/.docker/cli-plugins"). - - Debugging "exec" mode may be more difficult as Pulumi will not be able - to surface fine-grained errors and warnings. Additionally credentials - are temporarily written to disk in order to provide them to the - "docker-buildx" binary. - `)) - - a.SetDefault(&ia.Network, Default) -} - -// ImageState is serialized to the program's state file. -type ImageState struct { - ImageArgs - - Digest string `pulumi:"digest" provider:"output"` - ContextHash string `pulumi:"contextHash" provider:"output"` - Ref string `pulumi:"ref" provider:"output"` -} - -// Annotate describes outputs of the Image resource. -func (is *ImageState) Annotate(a infer.Annotator) { - is.ImageArgs.Annotate(a) - - a.Describe(&is.Digest, dedent(` - A SHA256 digest of the image if it was exported to a registry or - elsewhere. - - Empty if the image was not exported. - - Registry images can be referenced precisely as "@". The - "ref" output provides one such reference as a convenience. - `, - )) - a.Describe(&is.ContextHash, dedent(` - A preliminary hash of the image's build context. - - Pulumi uses this to determine if an image _may_ need to be re-built. - `)) - a.Describe(&is.Ref, dedent(` - If the image was pushed to any registries then this will contain a - single fully-qualified tag including the build's digest. - - If the image had tags but was not exported, this will take on a value - of one of those tags. - - This will be empty if the image had no exports and no tags. - - This is only for convenience and may not be appropriate for situations - where multiple tags or registries are involved. In those cases this - output is not guaranteed to be stable. - - For more control over tags consumed by downstream resources you should - use the "digest" output. - `)) -} - -// client produces a CLI client scoped to this resource and layered on top of -// any host-level credentials. -func (i *Image) client(ctx context.Context, state ImageState, args ImageArgs) (Client, error) { - cfg := infer.GetConfig[Config](ctx) - - if cli, ok := ctx.Value(_mockClientKey).(Client); ok { - return cli, nil - } - - // We prefer auth from args, the provider, and state in that order. We - // build a slice in reverse order because wrap() will overwrite earlier - // entries with later ones. - auths := []Registry{} - auths = append(auths, cfg.Registries...) - auths = append(auths, args.Registries...) - - return wrap(cfg.host, auths...) -} - -// Check validates ImageArgs, sets defaults, and ensures our client is -// authenticated. -func (i *Image) Check( - _ context.Context, - _ string, - _ resource.PropertyMap, - news resource.PropertyMap, -) (ImageArgs, []provider.CheckFailure, error) { - args, failures, err := infer.DefaultCheck[ImageArgs](news) - if err != nil || len(failures) != 0 { - return args, failures, err - } - - // :( - preview := news.ContainsUnknowns() - - if _, berr := args.validate(preview); berr != nil { - errs := berr.(interface{ Unwrap() []error }).Unwrap() - for _, e := range errs { - if cf, ok := e.(checkFailure); ok { - failures = append(failures, cf.CheckFailure) - } - } - } - - return args, failures, err -} - -type checkFailure struct { - provider.CheckFailure -} - -func (cf checkFailure) Error() string { - return cf.Reason -} - -func newCheckFailure(err error, format string, args ...any) error { - return checkFailure{ - provider.CheckFailure{Property: fmt.Sprintf(format, args...), Reason: err.Error()}, - } -} - -// normalize returns a copy of ImageArgs after accounting for unknown (preview) -// values and CLI push/load shorthand. -// -// During preview the go-provider sends unknown inputs as zero values. In order -// to enable build-on-preview behavior, we omit zero values during previews. -func (ia *ImageArgs) normalize(preview bool) ImageArgs { - normalized := ImageArgs{ - AddHosts: filter(stringKeeper{preview}, ia.AddHosts...), - BuildArgs: mapKeeper{preview}.keep(ia.BuildArgs), - BuildOnPreview: ia.BuildOnPreview, - Builder: ia.Builder, - CacheFrom: filter(stringerKeeper[CacheFrom]{preview}, ia.CacheFrom...), - CacheTo: filter(stringerKeeper[CacheTo]{preview}, ia.CacheTo...), - Context: contextKeeper{preview}.keep(ia.Context), - Dockerfile: ia.Dockerfile, - Exports: filter(stringerKeeper[Export]{preview}, ia.Exports...), - Labels: mapKeeper{preview}.keep(ia.Labels), - Load: ia.Load, - Network: ia.Network, - NoCache: ia.NoCache, - Platforms: filter(stringerKeeper[Platform]{preview}, ia.Platforms...), - Pull: ia.Pull, - Push: ia.Push, - Registries: filter(registryKeeper{preview}, ia.Registries...), - SSH: filter(stringerKeeper[SSH]{preview}, ia.SSH...), - Secrets: mapKeeper{preview}.keep(ia.Secrets), - Tags: filter(stringKeeper{preview}, ia.Tags...), - Target: ia.Target, - } - - // Handle --push/--load shorthand. - if normalized.Push { - normalized.Exports = append(normalized.Exports, Export{Raw: "type=registry"}) - } - if normalized.Load { - normalized.Exports = append(normalized.Exports, Export{Raw: "type=docker"}) - } - - return normalized -} - -// buildable returns true if the ImageArgs has no unknown values and can -// therefore be built during previews. -func (ia *ImageArgs) buildable() bool { - // We can build the given inputs if filtering unknowns is a no-op. - filtered := ia.normalize(true) - return reflect.DeepEqual(ia, &filtered) -} - -// isExported returns true if the args include a registry export. -func (ia *ImageArgs) isExported() bool { - if ia.Push { - return true - } - for _, e := range ia.Exports { - if e.pushed() { - return true - } - } - return false -} - -// shouldBuildOnPreview returns true if we should build this image during -// previews. -func (ia *ImageArgs) shouldBuildOnPreview() bool { - if ia.BuildOnPreview != nil { - return *ia.BuildOnPreview - } - return true -} - -type build struct { - opts controllerapi.BuildOptions - secrets map[string]string - inline string - exec bool -} - -func (b build) BuildOptions() controllerapi.BuildOptions { - return b.opts -} - -func (b build) Inline() string { - return b.inline -} - -func (b build) Secrets() session.Attachable { - m := map[string][]byte{} - for k, v := range b.secrets { - m[k] = []byte(v) - } - return secretsprovider.FromMap(m) -} - -func (b build) ShouldExec() bool { - return b.exec -} - -func (ia ImageArgs) toBuild( - ctx context.Context, - preview bool, -) (Build, error) { - opts, err := ia.validate(preview) - if err != nil { - return nil, err - } - - if len(ia.Exports) == 0 && !ia.Push && !ia.Load { - provider.GetLogger(ctx).Warning( - "No exports were specified so the build will only remain in the local build cache. " + - "Use `push` to upload the image to a registry, or silence this warning with a `cacheonly` export.") - } - - if len(opts.Platforms) > 1 && len(opts.CacheTo) > 0 { - provider.GetLogger(ctx).Warning( - "Caching doesn't work reliably with multi-platform builds (https://github.com/docker/buildx/discussions/1382). " + - "Instead, perform one cached build per platform and create an Index to join them all together.") - } - - return build{ - opts: opts, - inline: ia.Dockerfile.Inline, - secrets: ia.Secrets, - exec: ia.Exec, - }, nil -} - -// validate confirms the ImageArgs are valid and returns BuildOptions -// appropriate for passing to builders. -func (ia *ImageArgs) validate(preview bool) (controllerapi.BuildOptions, error) { - var multierr error - - if len(ia.Exports) > 1 { - multierr = errors.Join(multierr, - newCheckFailure(errors.New("multiple exports are currently unsupported"), "exports"), - ) - } - if ia.Push && ia.Load { - multierr = errors.Join( - multierr, - newCheckFailure( - errors.New("push and load may not be set together at the moment"), - "push", - ), - ) - } - if len(ia.Exports) > 0 && (ia.Push || ia.Load) { - multierr = errors.Join(multierr, - newCheckFailure(errors.New("exports can't be provided with push or load"), "exports"), - ) - } - - dockerfile, context, err := ia.Context.validate(preview, ia.Dockerfile) - if err != nil { - multierr = errors.Join(multierr, err) - } - ia.Dockerfile = dockerfile - // Set a default context if one wasn't provided. - if ia.Context == nil { - ia.Context = &BuildContext{Context: *context} - } - - if err := ia.Dockerfile.validate(preview, context); err != nil { - multierr = errors.Join(multierr, err) - } - - // Discard any unknown inputs if this is a preview -- we don't want them to - // cause validation errors. - normalized := ia.normalize(preview) - - exports := []*controllerapi.ExportEntry{} - for idx, e := range normalized.Exports { - if e.Disabled { - continue - } - exp, err := e.validate(preview, ia.Tags) - if err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "exports[%d]", idx)) - continue - } - exports = append(exports, exp) - } - - platforms := []string{} - for idx, p := range normalized.Platforms { - platform, err := p.validate(preview) - if err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "platforms[%d]", idx)) - continue - } - platforms = append(platforms, platform) - } - - cacheFrom := []*controllerapi.CacheOptionsEntry{} - for idx, c := range normalized.CacheFrom { - if c.String() == "" { - continue // Disabled or unknown/preview. - } - cache, err := c.validate(preview) - if err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "cacheFrom[%d]", idx)) - continue - } - cacheFrom = append(cacheFrom, cache) - } - - cacheTo := []*controllerapi.CacheOptionsEntry{} - for idx, c := range normalized.CacheTo { - if c.String() == "" { - continue // Disabled or unknown/preview. - } - cache, err := c.validate(preview) - if err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "cacheTo[%d]", idx)) - continue - } - cacheTo = append(cacheTo, cache) - } - - ssh := []*controllerapi.SSH{} - for idx, s := range normalized.SSH { - ss, err := s.validate() - if err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "ssh[%d]", idx)) - continue - } - ssh = append(ssh, ss) - } - - for idx, t := range normalized.Tags { - if _, err := reference.Parse(t); err != nil { - multierr = errors.Join(multierr, newCheckFailure(err, "tags[%d]", idx)) - } - } - - secrets := []*controllerapi.Secret{} - for k, v := range normalized.Secrets { - // We abuse the pb.Secret proto by stuffing the secret's value in - // XXX_unrecognized. We never serialize this proto so this is tolerable. - secrets = append(secrets, &controllerapi.Secret{ - ID: k, - XXX_unrecognized: []byte(v), - }) - } - - builder := BuilderConfig{} - if normalized.Builder != nil { - builder = *normalized.Builder - } - - opts := controllerapi.BuildOptions{ - BuildArgs: normalized.BuildArgs, - Builder: builder.Name, - CacheFrom: cacheFrom, - CacheTo: cacheTo, - ContextPath: context.Location, - DockerfileName: dockerfile.Location, - Exports: exports, - ExtraHosts: normalized.AddHosts, - Labels: normalized.Labels, - NetworkMode: normalized.Network.String(), - NoCache: normalized.NoCache, - NamedContexts: normalized.Context.namedMap(), - Platforms: platforms, - Pull: normalized.Pull, - Secrets: secrets, - SSH: ssh, - Tags: normalized.Tags, - Target: normalized.Target, - } - - return opts, multierr -} - -// Create builds an image using buildkit. -func (i *Image) Create( - ctx context.Context, - name string, - input ImageArgs, - preview bool, -) (string, ImageState, error) { - state := ImageState{ImageArgs: input} - id := name - - // Default our ref to one of our tags. - for _, tag := range state.Tags { - if _, err := normalizeReference(tag); err != nil { - continue - } - state.Ref = tag - break - } - - cli, err := i.client(ctx, state, input) - if err != nil { - return id, state, err - } - - ok, err := cli.BuildKitEnabled() - if err != nil { - return id, state, fmt.Errorf("checking buildkit compatibility: %w", err) - } - if !ok { - return id, state, errors.New("buildkit is not supported on this host") - } - - build, err := input.toBuild(ctx, preview) - if err != nil { - return id, state, fmt.Errorf("preparing: %w", err) - } - - hash, err := hashBuildContext( - input.Context.Location, - input.Dockerfile.Location, - input.Context.Named.Map(), - ) - if err != nil { - return id, state, fmt.Errorf("hashing build context: %w", err) - } - state.ContextHash = hash - - if preview && !input.shouldBuildOnPreview() { - return id, state, nil - } - if preview && !input.buildable() { - provider.GetLogger(ctx).Warning("Skipping preview build because some inputs are unknown.") - return id, state, nil - } - - result, err := cli.Build(ctx, build) - if err != nil { - return id, state, err - } - - if d, ok := result.ExporterResponse[exptypes.ExporterImageDigestKey]; ok { - state.Digest = d - id = d - } - - if state.Digest == "" { - // Can't construct a ref, nothing else to do. - return id, state, nil - } - - // Take the first registry tag we find and add a digest to it. That becomes - // our simplified "ref" output. - for _, tag := range state.Tags { - ref, ok := addDigest(tag, state.Digest) - if !ok { - continue - } - - state.Ref = ref - break - } - - return id, state, nil -} - -// Update builds a new image. Normally we create-replace resources, but for -// images built locally there is nothing to delete. We treat those cases as -// updates and simply re-build the image without deleting anything. -func (i *Image) Update( - ctx context.Context, - name string, - _ ImageState, - input ImageArgs, - preview bool, -) (ImageState, error) { - _, state, err := i.Create(ctx, name, input, preview) - return state, err -} - -// Read attempts to read manifests from an image's exports. An image without -// exports will have no manifests. -func (i *Image) Read( - ctx context.Context, - name string, - input ImageArgs, - state ImageState, -) ( - string, // id - ImageArgs, // normalized inputs - ImageState, // normalized state - error, -) { - cli, err := i.client(ctx, state, input) - if err != nil { - return name, input, state, err - } - - if !state.isExported() { - // Nothing was pushed -- all done. - return name, input, state, nil - } - - tagsToKeep := []string{} - - // Do a lookup on all of the tags at the digests we expect to see. - for _, tag := range state.Tags { - ref, ok := addDigest(tag, state.Digest) - if !ok { - // Not a pushed tag. - tagsToKeep = append(tagsToKeep, tag) - break - } - - // Does a tag with this digest exist? - descriptors, err := cli.Inspect(ctx, ref) - if err != nil { - provider.GetLogger(ctx).Warning(err.Error()) - continue - } - - for _, d := range descriptors { - if d.Platform != nil && d.Platform.Architecture == "unknown" { - // Ignore cache manifests. - continue - } - - tagsToKeep = append(tagsToKeep, tag) - break - } - } - - // If we couldn't find the tags we expected then return an empty ID to - // delete the resource. - if len(input.Tags) > 0 && len(tagsToKeep) == 0 { - return "", input, state, nil - } - - state.Tags = tagsToKeep - - return name, input, state, nil -} - -// Delete deletes an Image. If the Image was already deleted out-of-band it is -// treated as a success. -func (i *Image) Delete( - ctx context.Context, - _ string, - state ImageState, -) error { - cli, err := i.client(ctx, state, state.ImageArgs) - if err != nil { - return err - } - - if state.Digest == "" { - // Nothing was exported. Just try to delete the local image. - return cli.Delete(ctx, state.Ref) - } - - digests := []string{} - - // Construct a ref with digest for each repository we pushed to. - for _, tag := range state.Tags { - ref, err := ref.New(tag) - if err != nil { - continue - } - digested := ref.SetDigest(state.Digest) - digests = append(digests, digested.CommonName()) - } - - slices.Sort(digests) - digests = slices.Compact(digests) - - var multierr error - for _, digested := range digests { - err = cli.Delete(ctx, digested) - if errdefs.IsNotFound(err) { - provider.GetLogger(ctx).Warning(digested + " not found") - continue // Nothing to do. - } - multierr = errors.Join(multierr, err) - } - - return multierr -} - -// Diff re-implements most of the default diff behavior, with the exception of -// ignoring "password" changes on registry inputs. -func (*Image) Diff( - _ context.Context, - _ string, - olds ImageState, - news ImageArgs, -) (provider.DiffResponse, error) { - diff := map[string]provider.PropertyDiff{} - update := provider.PropertyDiff{Kind: provider.Update} - - if !reflect.DeepEqual(olds.AddHosts, news.AddHosts) { - diff["addHosts"] = update - } - if !reflect.DeepEqual(olds.BuildArgs, news.BuildArgs) { - diff["buildArgs"] = update - } - if !reflect.DeepEqual(olds.BuildOnPreview, news.BuildOnPreview) { - diff["buildOnPreview"] = update - } - if !reflect.DeepEqual(olds.Builder, news.Builder) { - diff["builder"] = update - } - if !reflect.DeepEqual(olds.CacheFrom, news.CacheFrom) { - diff["cacheFrom"] = update - } - if !reflect.DeepEqual(olds.CacheTo, news.CacheTo) { - diff["cacheTo"] = update - } - if olds.Context.Location != news.Context.Location { - diff["context.location"] = update - } - if !reflect.DeepEqual(olds.Context.Named, news.Context.Named) { - diff["context.named"] = update - } - dockerfile, _, _ := news.Context.validate(true, news.Dockerfile) - if !reflect.DeepEqual(olds.Dockerfile, dockerfile) { - diff["dockerfile"] = update - } - // Use string comparison to ignore any manifests attached to the export. - if fmt.Sprint(olds.Exports) != fmt.Sprint(news.Exports) { - diff["exports"] = update - } - if !reflect.DeepEqual(olds.Labels, news.Labels) { - diff["labels"] = update - } - if olds.Load != news.Load { - diff["load"] = update - } - if !reflect.DeepEqual(olds.Network, news.Network) { - diff["network"] = update - } - if !reflect.DeepEqual(olds.NoCache, news.NoCache) { - diff["noCache"] = update - } - if !reflect.DeepEqual(olds.Platforms, news.Platforms) { - diff["platforms"] = update - } - if !reflect.DeepEqual(olds.Pull, news.Pull) { - diff["pull"] = update - } - if !reflect.DeepEqual(olds.Push, news.Push) { - diff["push"] = update - } - if !reflect.DeepEqual(olds.Secrets, news.Secrets) { - diff["secrets"] = update - } - if !reflect.DeepEqual(olds.SSH, news.SSH) { - diff["ssh"] = update - } - if !reflect.DeepEqual(olds.Tags, news.Tags) { - diff["tags"] = update - } - if !reflect.DeepEqual(olds.Target, news.Target) { - diff["target"] = update - } - - // pull=true indicates that we want to keep base layers up-to-date. In this - // case we'll always perform the build. - if news.Pull && (len(news.Exports) > 0 || news.Push || news.Load) { - diff["contextHash"] = update - } - - // Check if anything has changed in our build context. - hash, err := hashBuildContext( - news.Context.Location, - dockerfile.Location, - news.Context.Named.Map(), - ) - if err != nil { - return provider.DiffResponse{}, err - } - if hash != olds.ContextHash { - diff["contextHash"] = update - } - - // Registries need special handling because we ignore "password" changes to not introduce unnecessary changes. - if len(olds.Registries) != len(news.Registries) { - diff["registries"] = update - } else { - for idx, oldr := range olds.Registries { - newr := news.Registries[idx] - if (oldr.Username == newr.Username) && (oldr.Address == newr.Address) { - continue - } - diff[fmt.Sprintf("registries[%d]", idx)] = update - break - } - } - - return provider.DiffResponse{ - HasChanges: len(diff) > 0, - DetailedDiff: diff, - }, nil -} - -// addDigest constructs a tagged ref with an "@" suffix. -// -// Returns false if the given ref was not fully qualified. -func addDigest(ref, digest string) (string, bool) { - named, err := reference.ParseNamed(ref) - if err != nil { - return "", false - } - tag := "latest" - if tagged, ok := named.(reference.Tagged); ok { - tag = tagged.Tag() - } - - full, err := reference.Parse( - fmt.Sprintf("%s:%s@%s", named.Name(), tag, digest), - ) - if err != nil { - return "", false - } - - return full.String(), true -} diff --git a/provider/internal/image_test.go b/provider/internal/image_test.go deleted file mode 100644 index ad67e52..0000000 --- a/provider/internal/image_test.go +++ /dev/null @@ -1,1034 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "errors" - "fmt" - "os" - "path/filepath" - "testing" - - _ "github.com/docker/buildx/driver/docker-container" - - "github.com/distribution/reference" - "github.com/moby/buildkit/client" - "github.com/moby/buildkit/exporter/containerimage/exptypes" - "github.com/regclient/regclient/types/descriptor" - "github.com/regclient/regclient/types/platform" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.uber.org/mock/gomock" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/integration" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/mapper" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -var _fakeURN = resource.NewURN("test", "provider", "a", "docker-build:index:Image", "test") - -func TestImageLifecycle(t *testing.T) { - t.Parallel() - noClient := func(t *testing.T) Client { - ctrl := gomock.NewController(t) - return NewMockClient(ctrl) - } - - _, err := reference.ParseNamed("docker.io/pulumibot/buildkit-e2e") - require.NoError(t, err) - - tests := []struct { - name string - - op func(t *testing.T) integration.Operation - client func(t *testing.T) Client - }{ - { - name: "happy path builds", - client: func(t *testing.T) Client { - ctrl := gomock.NewController(t) - c := NewMockClient(ctrl) - c.EXPECT().BuildKitEnabled().Return(true, nil).AnyTimes() - c.EXPECT().Build(gomock.Any(), gomock.AssignableToTypeOf(build{})).DoAndReturn( - func(_ context.Context, b Build) (*client.SolveResponse, error) { - assert.Equal(t, "testdata/noop/Dockerfile", b.BuildOptions().DockerfileName) - return &client.SolveResponse{ - ExporterResponse: map[string]string{ - exptypes.ExporterImageDigestKey: "sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - }, - }, nil - }, - ).AnyTimes() - c.EXPECT().Delete(gomock.Any(), - "docker.io/pulumibot/buildkit-e2e@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - ). - Return(nil) - return c - }, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e"), - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e:main"), - }, - ), - "platforms": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewStringProperty("linux/arm64"), - resource.NewStringProperty("linux/amd64"), - }, - ), - "context": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop"), - }), - "dockerfile": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop/Dockerfile"), - }), - "exports": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "raw": resource.NewStringProperty("type=registry"), - }, - ), - }, - ), - "registries": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "address": resource.NewStringProperty("fakeaddress"), - "username": resource.NewStringProperty("fakeuser"), - "password": resource.MakeSecret( - resource.NewStringProperty("password"), - ), - }), - }, - ), - }, - } - }, - }, - { - name: "tags are required when pushing", - client: noClient, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty([]resource.PropertyValue{}), - "context": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop"), - }), - "exports": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "raw": resource.NewStringProperty("type=registry"), - }), - }, - ), - }, - ExpectFailure: true, - CheckFailures: []provider.CheckFailure{ - { - Property: "exports[0]", - Reason: "at least one tag or export name is needed when pushing to a registry", - }, - }, - } - }, - }, - { - name: "invalid exports", - client: noClient, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{resource.NewStringProperty("invalid-exports")}, - ), - "exports": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "raw": resource.NewStringProperty("type="), - }), - }, - ), - }, - ExpectFailure: true, - CheckFailures: []provider.CheckFailure{{ - Property: "exports[0]", - Reason: "type is required for output", - }}, - } - }, - }, - { - name: "requires buildkit", - client: func(t *testing.T) Client { - ctrl := gomock.NewController(t) - c := NewMockClient(ctrl) - gomock.InOrder( - c.EXPECT().BuildKitEnabled().Return(false, nil), // Preview. - ) - return c - }, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{resource.NewStringProperty("foo")}, - ), - "context": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop"), - }), - }, - ExpectFailure: true, - } - }, - }, - { - name: "error reading DOCKER_BUILDKIT", - client: func(t *testing.T) Client { - ctrl := gomock.NewController(t) - c := NewMockClient(ctrl) - gomock.InOrder( - c.EXPECT(). - BuildKitEnabled(). - Return(false, errors.New("invalid DOCKER_BUILDKIT")), // Preview. - ) - return c - }, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{resource.NewStringProperty("foo")}, - ), - "context": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop"), - }), - }, - ExpectFailure: true, - } - }, - }, - { - name: "file defaults to Dockerfile", - client: func(t *testing.T) Client { - ctrl := gomock.NewController(t) - c := NewMockClient(ctrl) - c.EXPECT().BuildKitEnabled().Return(true, nil).AnyTimes() - c.EXPECT().Build(gomock.Any(), gomock.AssignableToTypeOf(build{})).DoAndReturn( - func(_ context.Context, b Build) (*client.SolveResponse, error) { - assert.Equal(t, "testdata/noop/Dockerfile", b.BuildOptions().DockerfileName) - return &client.SolveResponse{ - ExporterResponse: map[string]string{"image.name": "test:latest"}, - }, nil - }, - ).AnyTimes() - c.EXPECT().Delete(gomock.Any(), "default-dockerfile").Return(nil) - return c - }, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewStringProperty("default-dockerfile"), - }, - ), - "context": resource.NewObjectProperty(resource.PropertyMap{ - "location": resource.NewStringProperty("testdata/noop"), - }), - }, - Hook: func(_, output resource.PropertyMap) { - dockerfile := output["dockerfile"] - require.NotNil(t, dockerfile) - require.True(t, dockerfile.IsObject()) - location := dockerfile.ObjectValue()["location"] - require.True(t, location.IsString()) - assert.Equal(t, "testdata/noop/Dockerfile", location.StringValue()) - }, - } - }, - }, - { - name: "context defaults to current directory (pulumi-docker-build#78)", - client: func(t *testing.T) Client { - ctrl := gomock.NewController(t) - c := NewMockClient(ctrl) - c.EXPECT().BuildKitEnabled().Return(true, nil).AnyTimes() - c.EXPECT().Build(gomock.Any(), gomock.AssignableToTypeOf(build{})).DoAndReturn( - func(_ context.Context, b Build) (*client.SolveResponse, error) { - assert.Equal(t, "FROM alpine:latest", b.Inline()) - return &client.SolveResponse{ - ExporterResponse: map[string]string{"image.name": "alpine:latest"}, - }, nil - }, - ).AnyTimes() - c.EXPECT().Delete(gomock.Any(), "inline-dockerfile").Return(nil) - return c - }, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "push": resource.NewBoolProperty(false), - "tags": resource.NewArrayProperty( - []resource.PropertyValue{ - resource.NewStringProperty("inline-dockerfile"), - }, - ), - "buildOnPreview": resource.NewBoolProperty(true), - "dockerfile": resource.NewObjectProperty(resource.PropertyMap{ - "inline": resource.NewStringProperty("FROM alpine:latest"), - }), - }, - Hook: func(_, output resource.PropertyMap) { - context := output["context"] - require.NotNil(t, context) - require.True(t, context.IsObject()) - location := context.ObjectValue()["location"] - require.True(t, location.IsString()) - assert.Equal(t, ".", location.StringValue()) - }, - } - }, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - lc := integration.LifeCycleTest{ - Resource: "docker-build:index:Image", - Create: tt.op(t), - } - s := newServer(tt.client(t)) - - err := s.Configure(provider.ConfigureRequest{}) - require.NoError(t, err) - - lc.Run(t, s) - }) - } -} - -type errNotFound struct{} - -func (errNotFound) NotFound() {} -func (errNotFound) Error() string { return "not found " } - -func TestDelete(t *testing.T) { - t.Parallel() - t.Run("image was already deleted", func(t *testing.T) { - t.Parallel() - ctrl := gomock.NewController(t) - client := NewMockClient(ctrl) - client.EXPECT(). - Delete(gomock.Any(), "docker.io/pulumi/test@sha256:foo"). - Return(errNotFound{}) - - s := newServer(client) - err := s.Configure(provider.ConfigureRequest{}) - require.NoError(t, err) - - err = s.Delete(provider.DeleteRequest{ - ID: "foo,bar", - Urn: _fakeURN, - Properties: resource.PropertyMap{ - "tags": resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewStringProperty("docker.io/pulumi/test:foo"), - }), - "push": resource.NewBoolProperty(true), - "digest": resource.NewStringProperty("sha256:foo"), - "contextHash": resource.NewStringProperty(""), - "ref": resource.NewStringProperty(""), - }, - }) - assert.NoError(t, err) - }) -} - -func TestRead(t *testing.T) { - t.Parallel() - tag := "docker.io/pulumi/pulumitest" - digest := "sha256:3be99cafdcd80a8e620da56bdc215acab6213bb608d3d492c0ba1807128786a1" - - ctrl := gomock.NewController(t) - client := NewMockClient(ctrl) - client.EXPECT().Inspect(gomock.Any(), fmt.Sprintf("%s:latest@%s", tag, digest)).Return( - []descriptor.Descriptor{ - { - Platform: &platform.Platform{Architecture: "arm64"}, - }, - { - Platform: &platform.Platform{Architecture: "unknown"}, - }, - }, nil) - - s := newServer(client) - err := s.Configure(provider.ConfigureRequest{}) - require.NoError(t, err) - - resp, err := s.Read(provider.ReadRequest{ - ID: "my-image", - Urn: _fakeURN, - Properties: resource.PropertyMap{ - "exports": resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewObjectProperty(resource.PropertyMap{ - "raw": resource.NewStringProperty("type=registry"), - }), - }), - "tags": resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewStringProperty(tag), - }), - "digest": resource.NewStringProperty(digest), - }, - }) - require.NoError(t, err) - assert.NotNil(t, resp.Properties["exports"].ArrayValue()[0].ObjectValue()["manifest"]) -} - -func TestImageDiff(t *testing.T) { - t.Parallel() - emptyDir := t.TempDir() - host := Host - - hash, err := hashBuildContext(emptyDir, "", nil) - require.NoError(t, err) - baseArgs := ImageArgs{ - Context: &BuildContext{Context: Context{Location: emptyDir}}, - Dockerfile: &Dockerfile{Location: "testdata/noop"}, - Tags: []string{}, - } - baseState := ImageState{ - ContextHash: hash, - ImageArgs: baseArgs, - } - - tests := []struct { - name string - olds func(*testing.T, ImageState) ImageState - news func(*testing.T, ImageArgs) ImageArgs - - wantChanges bool - }{ - { - name: "no diff if build context is unchanged", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(*testing.T, ImageArgs) ImageArgs { return baseArgs }, - wantChanges: false, - }, - { - name: "no diff if registry password changes", - olds: func(_ *testing.T, s ImageState) ImageState { - s.Registries = []Registry{{ - Address: "foo", - Username: "foo", - Password: "foo", - }} - return s - }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Registries = []Registry{{ - Address: "foo", - Username: "foo", - Password: "DIFFERENT PASSWORD", - }} - return a - }, - wantChanges: false, - }, - { - name: "no diff if pull=true but no exports", - olds: func(_ *testing.T, is ImageState) ImageState { - is.Pull = true - return is - }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.Pull = true - return ia - }, - wantChanges: false, - }, - { - name: "diff if pull=true with exports", - olds: func(_ *testing.T, is ImageState) ImageState { - is.Pull = true - is.Load = true - return is - }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.Pull = true - ia.Load = true - return ia - }, - wantChanges: true, - }, - { - name: "diff if build context changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, a ImageArgs) ImageArgs { - tmp := filepath.Join(a.Context.Location, "tmp") - err := os.WriteFile(tmp, []byte{}, 0o600) - require.NoError(t, err) - t.Cleanup(func() { _ = os.Remove(tmp) }) - return a - }, - wantChanges: true, - }, - { - name: "diff if registry added", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Registries = []Registry{{}} - return a - }, - wantChanges: true, - }, - { - name: "diff if registry user changes", - olds: func(_ *testing.T, s ImageState) ImageState { - s.Registries = []Registry{{ - Address: "foo", - Username: "foo", - Password: "foo", - }} - return s - }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Registries = []Registry{{ - Address: "DIFFERENT USER", - Username: "foo", - Password: "foo", - }} - return a - }, - wantChanges: true, - }, - { - name: "diff if buildArgs changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.BuildArgs = map[string]string{ - "foo": "bar", - } - return a - }, - wantChanges: true, - }, - { - name: "diff if pull changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.Pull = true - return ia - }, - wantChanges: true, - }, - { - name: "diff if load changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.Load = true - return ia - }, - wantChanges: true, - }, - { - name: "diff if push changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.Push = true - return ia - }, - wantChanges: true, - }, - { - name: "diff if buildOnPreview doesn't change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - val := true - ia.BuildOnPreview = &val - return ia - }, - 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", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.SSH = []SSH{{ID: "default"}} - return ia - }, - wantChanges: true, - }, - { - name: "diff if hosts change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(t *testing.T, ia ImageArgs) ImageArgs { - ia.AddHosts = []string{"localhost"} - return ia - }, - wantChanges: true, - }, - { - name: "diff if cacheFrom changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.CacheFrom = []CacheFrom{{Raw: "a"}} - return a - }, - wantChanges: true, - }, - { - name: "diff if cacheTo changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.CacheTo = []CacheTo{{Raw: "a"}} - return a - }, - wantChanges: true, - }, - { - name: "diff if context changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Context = &BuildContext{Context: Context{Location: "testdata/ignores"}} - return a - }, - wantChanges: true, - }, - { - name: "diff if named context changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Context = &BuildContext{Named: NamedContexts{"foo": Context{Location: "bar"}}} - return a - }, - wantChanges: true, - }, - { - name: "diff if network changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Network = &host - return a - }, - wantChanges: true, - }, - { - name: "diff if dockerfile location changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Dockerfile = &Dockerfile{Location: "testdata/ignores/basedir/Dockerfile"} - return a - }, - wantChanges: true, - }, - { - name: "diff if dockerfile inline changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Dockerfile = &Dockerfile{Inline: "FROM scratch"} - return a - }, - wantChanges: true, - }, - { - name: "diff if platforms change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Platforms = []Platform{"linux/amd64"} - return a - }, - wantChanges: true, - }, - { - name: "diff if pull changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Pull = true - return a - }, - wantChanges: true, - }, - { - name: "diff if builder changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Builder = &BuilderConfig{Name: "foo"} - return a - }, - wantChanges: true, - }, - { - name: "diff if tags change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Tags = []string{"foo"} - return a - }, - wantChanges: true, - }, - { - name: "diff if exports change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Exports = []Export{{Raw: "foo"}} - return a - }, - wantChanges: true, - }, - { - name: "diff if target changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Target = "foo" - return a - }, - wantChanges: true, - }, - { - name: "diff if pulling", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Pull = true - return a - }, - wantChanges: true, - }, - { - name: "diff if noCache changes", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.NoCache = true - return a - }, - wantChanges: true, - }, - { - name: "diff if labels change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Labels = map[string]string{"foo": "bar"} - return a - }, - wantChanges: true, - }, - { - name: "diff if secrets change", - olds: func(*testing.T, ImageState) ImageState { return baseState }, - news: func(_ *testing.T, a ImageArgs) ImageArgs { - a.Secrets = map[string]string{"foo": "bar"} - return a - }, - wantChanges: true, - }, - } - - s := newServer(nil) - - encode := func(t *testing.T, x any) resource.PropertyMap { - raw, err := mapper.New(&mapper.Opts{IgnoreMissing: true}).Encode(x) - require.NoError(t, err) - return resource.NewPropertyMapFromMap(raw) - } - - for _, tt := range tests { - tt := tt - baseState := baseState - baseArgs := baseArgs - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - resp, err := s.Diff(provider.DiffRequest{ - Urn: _fakeURN, - Olds: encode(t, tt.olds(t, baseState)), - News: encode(t, tt.news(t, baseArgs)), - }) - assert.NoError(t, err) - assert.Equal(t, tt.wantChanges, resp.HasChanges, resp.DetailedDiff) - }) - } -} - -func TestValidateImageArgs(t *testing.T) { - t.Parallel() - t.Run("invalid inputs", func(t *testing.T) { - t.Parallel() - args := ImageArgs{ - Tags: []string{"a/bad:tag:format"}, - Exports: []Export{{Raw: "badexport,-"}}, - Context: &BuildContext{Context: Context{Location: "./testdata"}}, - Platforms: []Platform{","}, - CacheFrom: []CacheFrom{{Raw: "=badcachefrom"}}, - CacheTo: []CacheTo{{Raw: "=badcacheto"}}, - } - - _, err := args.validate(false) - assert.ErrorContains(t, err, "invalid value badexport") - assert.ErrorContains(t, err, "OSAndVersion specifier component must matc") - assert.ErrorContains(t, err, "badcachefrom") - assert.ErrorContains(t, err, "badcacheto") - assert.ErrorContains(t, err, "invalid reference format") - assert.ErrorContains(t, err, "testdata/Dockerfile") - }) - - t.Run("buildOnPreview", func(t *testing.T) { - t.Parallel() - args := ImageArgs{ - Context: &BuildContext{Context: Context{Location: "testdata/noop"}}, - Tags: []string{"my-tag"}, - Exports: []Export{{Registry: &ExportRegistry{ExportImage{Push: pulumi.BoolRef(true)}}}}, - } - actual, err := args.validate(true) - assert.NoError(t, err) - assert.Equal(t, "image", actual.Exports[0].Type) - assert.Equal(t, "false", actual.Exports[0].Attrs["push"]) - - actual, err = args.validate(false) - assert.NoError(t, err) - assert.Equal(t, "image", actual.Exports[0].Type) - assert.Equal(t, "true", actual.Exports[0].Attrs["push"]) - }) - - t.Run("unknowns", func(t *testing.T) { - t.Parallel() - // pulumi-go-provider gives us zero-values when a property is unknown. - // We can't distinguish this from user-provided zero-values, but we - // should: - // - not fail previews due to these zero values, - // - not attempt builds with invalid zero values, - // - not allow invalid zero values in non-preview operations. - unknowns := ImageArgs{ - BuildArgs: map[string]string{ - "known": "value", - "": "", - }, - Builder: nil, - CacheFrom: []CacheFrom{{GHA: &CacheFromGitHubActions{}}, {Raw: ""}}, - CacheTo: []CacheTo{{GHA: &CacheToGitHubActions{}}, {Raw: ""}}, - Context: nil, - Exports: []Export{{Raw: ""}}, - Dockerfile: nil, - Platforms: []Platform{"linux/amd64", ""}, - Registries: []Registry{ - { - Address: "", - Password: "", - Username: "", - }, - }, - Tags: []string{"known", ""}, - } - - _, err := unknowns.validate(true) - assert.NoError(t, err) - assert.False(t, unknowns.buildable()) - - _, err = unknowns.validate(false) - assert.Error(t, err) - }) - - t.Run("disabled caches", func(t *testing.T) { - t.Parallel() - args := ImageArgs{ - Context: &BuildContext{Context: Context{Location: "testdata/noop"}}, - CacheFrom: []CacheFrom{{Raw: "type=registry", Disabled: true}}, - CacheTo: []CacheTo{{Raw: "type=registry", Disabled: true}}, - Exports: []Export{{Raw: "type=registry", Disabled: true}}, - } - - opts, err := args.validate(true) - assert.NoError(t, err) - assert.Len(t, opts.CacheTo, 0) - assert.Len(t, opts.CacheFrom, 0) - assert.Len(t, opts.Exports, 0) - - opts, err = args.validate(false) - assert.NoError(t, err) - assert.Len(t, opts.CacheTo, 0) - assert.Len(t, opts.CacheFrom, 0) - assert.Len(t, opts.Exports, 0) - }) - - t.Run("multiple exports aren't allowed yet", func(t *testing.T) { - t.Parallel() - args := ImageArgs{ - Exports: []Export{{Raw: "type=local"}, {Raw: "type=tar"}}, - } - _, err := args.validate(false) - assert.ErrorContains(t, err, "multiple exports are currently unsupported") - }) - - t.Run("cache and export entries are union-ish", func(t *testing.T) { - t.Parallel() - args := ImageArgs{ - Exports: []Export{{Tar: &ExportTar{}, Local: &ExportLocal{}}}, - CacheTo: []CacheTo{{Raw: "type=tar", Local: &CacheToLocal{Dest: "/foo"}}}, - CacheFrom: []CacheFrom{{Raw: "type=tar", Registry: &CacheFromRegistry{}}}, - } - _, err := args.validate(false) - assert.ErrorContains(t, err, "exports should only specify one export type") - assert.ErrorContains(t, err, "cacheFrom should only specify one cache type") - assert.ErrorContains(t, err, "cacheTo should only specify one cache type") - }) - - t.Run("dockerfile parsing", func(t *testing.T) { - t.Parallel() - path := "./testdata/Dockerfile.invalid" - data, err := os.ReadFile(path) - require.NoError(t, err) - - for _, d := range []Dockerfile{ - {Location: path}, {Inline: string(data)}, - } { - d := d - args := ImageArgs{Dockerfile: &d} - _, err := args.validate(false) - assert.ErrorContains(t, err, "unknown instruction: RUNN (did you mean RUN?)") - } - }) -} - -func TestBuildable(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - args ImageArgs - - want bool - }{ - { - name: "unknown tags", - args: ImageArgs{Tags: []string{""}}, - want: false, - }, - { - name: "unknown exports", - args: ImageArgs{ - Tags: []string{"known"}, - Exports: []Export{{Raw: ""}}, - }, - want: false, - }, - { - name: "unknown registry", - args: ImageArgs{ - Tags: []string{"known"}, - Exports: []Export{{Docker: &ExportDocker{}}}, - Registries: []Registry{ - { - Address: "docker.io", - Username: "foo", - Password: "", - }, - }, - }, - want: false, - }, - { - name: "known tags", - args: ImageArgs{ - Tags: []string{"known"}, - }, - want: true, - }, - { - name: "known exports", - args: ImageArgs{ - Tags: []string{"known"}, - Exports: []Export{{Registry: &ExportRegistry{}}}, - }, - want: true, - }, - { - name: "known registry", - args: ImageArgs{ - Tags: []string{"known"}, - Exports: []Export{{Registry: &ExportRegistry{}}}, - Registries: []Registry{ - { - Address: "docker.io", - Username: "foo", - Password: "bar", - }, - }, - }, - want: true, - }, - } - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - actual := tt.args.buildable() - assert.Equal(t, tt.want, actual) - }) - } -} - -func TestToBuild(t *testing.T) { - t.Parallel() - Max := Max - - ia := ImageArgs{ - Tags: []string{"foo", "bar"}, - Platforms: []Platform{"linux/amd64"}, - Context: &BuildContext{Context: Context{Location: "testdata/noop"}}, - CacheTo: []CacheTo{ - {GHA: &CacheToGitHubActions{CacheWithMode: CacheWithMode{&Max}}}, - { - Registry: &CacheToRegistry{ - CacheFromRegistry: CacheFromRegistry{Ref: "docker.io/foo/bar"}, - }, - }, - { - Registry: &CacheToRegistry{ - CacheFromRegistry: CacheFromRegistry{Ref: "docker.io/foo/bar:baz"}, - }, - }, - }, - CacheFrom: []CacheFrom{ - {S3: &CacheFromS3{Name: "bar"}}, - {Registry: &CacheFromRegistry{Ref: "docker.io/foo/bar"}}, - {Registry: &CacheFromRegistry{Ref: "docker.io/foo/bar:baz"}}, - }, - } - - _, err := ia.toBuild(context.Background(), false) - assert.NoError(t, err) -} diff --git a/provider/internal/index.go b/provider/internal/index.go deleted file mode 100644 index 2853a53..0000000 --- a/provider/internal/index.go +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "fmt" - "reflect" - "strings" - - // For examples/docs. - _ "embed" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/infer" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" -) - -var ( - _ infer.Annotated = (*Index)(nil) - _ infer.Annotated = (*IndexArgs)(nil) - _ infer.Annotated = (*IndexState)(nil) - _ infer.CustomCheck[IndexArgs] = (*Index)(nil) - _ infer.CustomResource[IndexArgs, IndexState] = (*Index)(nil) - _ infer.CustomDelete[IndexState] = (*Index)(nil) - _ infer.CustomDiff[IndexArgs, IndexState] = (*Index)(nil) - _ infer.CustomRead[IndexArgs, IndexState] = (*Index)(nil) - _ infer.CustomUpdate[IndexArgs, IndexState] = (*Index)(nil) -) - -//go:embed embed/index-examples.md -var _indexExamples string - -// Index is an OCI index or manifest list on a remote registry. -type Index struct{} - -// IndexArgs instantiate an Index. -type IndexArgs struct { - Tag string `pulumi:"tag"` - Sources []string `pulumi:"sources"` - Push *bool `pulumi:"push,optional"` - Registry *Registry `pulumi:"registry,optional"` -} - -func (i IndexArgs) isPushed() bool { - if i.Push == nil { - return true // default - } - return *i.Push -} - -// IndexState captures the state of an Index. -type IndexState struct { - IndexArgs - - Ref string `pulumi:"ref" provider:"output"` -} - -// Annotate sets docstrings and defaults on Index. -func (i *Index) Annotate(a infer.Annotator) { - a.Describe(&i, dedent(` - A wrapper around "docker buildx imagetools create" to create an index - (or manifest list) referencing one or more existing images. - - In most cases you do not need an "Index" to build a multi-platform - image -- specifying multiple platforms on the "Image" will handle this - for you automatically. - - However, as of April 2024, building multi-platform images _with - caching_ will only export a cache for one platform at a time (see [this - discussion](https://github.com/docker/buildx/discussions/1382) for more - details). - - Therefore this resource can be helpful if you are building - multi-platform images with caching: each platform can be built and - cached separately, and an "Index" can join them all together. An - example of this is shown below. - - This resource creates an OCI image index or a Docker manifest list - depending on the media types of the source images. - `)+ - "\n\n"+_indexExamples, - ) -} - -// Annotate sets docstrings and defaults on IndexArgs. -func (i *IndexArgs) Annotate(a infer.Annotator) { - a.Describe(&i.Registry, dedent(` - Authentication for the registry where the tagged index will be pushed. - - Credentials can also be included with the provider's configuration. - `)) - a.Describe(&i.Sources, dedent(` - Existing images to include in the index. - `)) - a.Describe(&i.Tag, dedent(` - The tag to apply to the index. - `)) - a.Describe(&i.Push, dedent(` - If true, push the index to the target registry. - - Defaults to "true". - `)) - - a.SetDefault(&i.Push, true) -} - -// Annotate sets docstrings on IndexState. -func (i *IndexState) Annotate(a infer.Annotator) { - a.Describe(&i.Ref, dedent(` - The pushed tag with digest. - - Identical to the tag if the index was not pushed. - `)) -} - -// Create is a passthrough to Update. -func (i *Index) Create( - ctx context.Context, - name string, - input IndexArgs, - preview bool, -) (string, IndexState, error) { - state, err := i.Update(ctx, name, IndexState{}, input, preview) - return name, state, err -} - -// Update performs `buildx imagetools create` to create a new OCI index / -// manifest list. -func (i *Index) Update( - ctx context.Context, - name string, - state IndexState, - input IndexArgs, - preview bool, -) (IndexState, error) { - state.IndexArgs = input - state.Ref = input.Tag - - cli, err := i.client(ctx, state, input) - if err != nil { - return state, err - } - - if preview { - return state, nil - } - - provider.GetLogger(ctx).Debugf("creating index with tag %s and sources %s", input.Tag, input.Sources) - - err = cli.ManifestCreate(ctx, input.isPushed(), input.Tag, input.Sources...) - if err != nil { - return state, fmt.Errorf("creating: %w", err) - } - - _, _, state, err = i.Read(ctx, name, input, state) - if err != nil { - return state, fmt.Errorf("reading: %w", err) - } - return state, nil -} - -func (i *Index) Read( - ctx context.Context, - name string, - input IndexArgs, - state IndexState, -) (string, IndexArgs, IndexState, error) { - state.IndexArgs = input - state.Ref = input.Tag - - if !input.isPushed() { - provider.GetLogger(ctx).Debug("skipping read because index was not pushed") - return name, input, state, nil // Nothing to read. - } - - cli, err := i.client(ctx, state, input) - if err != nil { - return name, input, state, err - } - - provider.GetLogger(ctx).Debug("reading index with tag " + input.Tag) - - digest, err := cli.ManifestInspect(ctx, input.Tag) - if err != nil && strings.Contains(err.Error(), "No such manifest:") && input.isPushed() { - // A remote tag was expected but isn't there -- delete the resource. - return "", input, state, err - } - if err != nil && strings.Contains(err.Error(), "No such manifest:") && !input.isPushed() { - // Nothing was pushed, so just use the tag without digest.. - return name, input, state, nil - } - if err != nil { - return name, input, state, err - } - - if ref, ok := addDigest(input.Tag, digest); ok { - state.Ref = ref - } - - return name, input, state, nil -} - -// Check confirms the Index's tag and source refs are all valid. This doesn't -// fully capture input requirements -- for example buildx requires refs to all -// exist on the same registry. This is sufficient to handle the most common -// cases for now. -func (i *Index) Check( - _ context.Context, - _ string, - _ resource.PropertyMap, - news resource.PropertyMap, -) (IndexArgs, []provider.CheckFailure, error) { - args, failures, err := infer.DefaultCheck[IndexArgs](news) - if err != nil { - return args, failures, err - } - - if _, err := normalizeReference(args.Tag); args.Tag != "" && err != nil { - failures = append( - failures, - provider.CheckFailure{ - Property: "target", - Reason: err.Error(), - }, - ) - } - - for idx, s := range args.Sources { - if _, err := normalizeReference(s); s != "" && err != nil { - failures = append( - failures, - provider.CheckFailure{ - Property: fmt.Sprintf("refs[%d]", idx), - Reason: err.Error(), - }, - ) - } - } - - return args, failures, nil -} - -// Delete attempts to delete the remote manifest. -func (i *Index) Delete(ctx context.Context, _ string, state IndexState) error { - if !state.isPushed() { - return nil // Nothing to delete. - } - - cli, err := i.client(ctx, state, state.IndexArgs) - if err != nil { - return err - } - - err = cli.ManifestDelete(ctx, state.Ref) - // TODO: Upstream buildx swallows the error types we'd like to test for - // here. - if err != nil && strings.Contains(err.Error(), "No such manifest:") { - return nil - } - return err -} - -// Diff returns a diff of proposed changes against current state. Ideally we -// wouldn't need to implement all of this, but we currently have to in order to -// force `ignoreChanges`-style behavior on our registry password (which can -// change all the time due to short-lived AWS credentials). -func (i *Index) Diff( - _ context.Context, - _ string, - olds IndexState, - news IndexArgs, -) (provider.DiffResponse, error) { - diff := map[string]provider.PropertyDiff{} - update := provider.PropertyDiff{Kind: provider.Update} - replace := provider.PropertyDiff{Kind: provider.UpdateReplace} - - if olds.Tag != news.Tag { - diff["tag"] = replace - } - if !reflect.DeepEqual(olds.Sources, news.Sources) { - diff["sources"] = update - } - if olds.Registry != nil && news.Registry != nil { - if olds.Registry.Address != news.Registry.Address { - diff["registry.address"] = update - if olds.Registry.Address != "" { - diff["registry.address"] = replace - } - } - if olds.Registry.Username != news.Registry.Username { - diff["registry.username"] = update - } - } - if (olds.Registry == nil && news.Registry != nil) || - (olds.Registry != nil && news.Registry == nil) { - diff["registry"] = update - } - // Intentionally ignore changes to registry.password - - return provider.DiffResponse{ - HasChanges: len(diff) > 0, - DetailedDiff: diff, - }, nil -} - -// client produces a CLI client scoped to this resource and layered on top of -// any host-level credentials. -func (i *Index) client( - ctx context.Context, - _ IndexState, - args IndexArgs, -) (Client, error) { - cfg := infer.GetConfig[Config](ctx) - - if cli, ok := ctx.Value(_mockClientKey).(Client); ok { - return cli, nil - } - - // We prefer auth from args, the provider, and state in that order. We - // build a slice in reverse order because wrap() will overwrite earlier - // entries with later ones. - auths := []Registry{} - auths = append(auths, cfg.Registries...) - if args.Registry != nil { - auths = append(auths, *args.Registry) - } - - return wrap(cfg.host, auths...) -} diff --git a/provider/internal/index_test.go b/provider/internal/index_test.go deleted file mode 100644 index f5122fd..0000000 --- a/provider/internal/index_test.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/integration" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/mapper" -) - -func TestIndexLifecycle(t *testing.T) { - t.Parallel() - realClient := func(t *testing.T) Client { return nil } - - tests := []struct { - name string - skip bool - - op func(t *testing.T) integration.Operation - client func(t *testing.T) Client - }{ - { - name: "not pushed", - client: realClient, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "tag": resource.NewStringProperty( - "docker.io/pulumibot/buildkit-e2e:manifest-unit", - ), - "sources": resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e:arm64"), - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e:amd64"), - }), - "push": resource.NewBoolProperty(false), - }, - } - }, - }, - { - name: "pushed", - skip: os.Getenv("DOCKER_HUB_PASSWORD") == "", - client: realClient, - op: func(t *testing.T) integration.Operation { - return integration.Operation{ - Inputs: resource.PropertyMap{ - "tag": resource.NewStringProperty( - "docker.io/pulumibot/buildkit-e2e:manifest", - ), - "sources": resource.NewArrayProperty([]resource.PropertyValue{ - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e:arm64"), - resource.NewStringProperty("docker.io/pulumibot/buildkit-e2e:amd64"), - }), - "push": resource.NewBoolProperty(true), - "registry": resource.NewObjectProperty(resource.PropertyMap{ - "address": resource.NewStringProperty("docker.io"), - "username": resource.NewStringProperty("pulumibot"), - "password": resource.NewSecretProperty(&resource.Secret{ - Element: resource.NewStringProperty( - os.Getenv("DOCKER_HUB_PASSWORD"), - ), - }), - }), - }, - } - }, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - if tt.skip { - t.Skip("missing environment variables") - } - lc := integration.LifeCycleTest{ - Resource: "docker-build:index:Index", - Create: tt.op(t), - } - s := newServer(tt.client(t)) - - err := s.Configure(provider.ConfigureRequest{}) - require.NoError(t, err) - - lc.Run(t, s) - }) - } -} - -func TestIndexDiff(t *testing.T) { - t.Parallel() - urn := resource.NewURN("test", "provider", "a", "docker-build:index:Index", "test") - baseArgs := IndexArgs{Sources: []string{"docker.io/nginx:latest"}} - baseState := IndexState{IndexArgs: baseArgs} - - tests := []struct { - name string - olds func(*testing.T, IndexState) IndexState - news func(*testing.T, IndexArgs) IndexArgs - - wantChanges bool - }{ - { - name: "no diff if no changes", - olds: func(*testing.T, IndexState) IndexState { return baseState }, - news: func(*testing.T, IndexArgs) IndexArgs { return baseArgs }, - wantChanges: false, - }, - { - name: "diff if tag changes", - olds: func(*testing.T, IndexState) IndexState { return baseState }, - news: func(t *testing.T, a IndexArgs) IndexArgs { - a.Tag = "new-tag" - return a - }, - wantChanges: true, - }, - { - name: "no diff if registry password changes", - olds: func(_ *testing.T, s IndexState) IndexState { - s.Registry = &Registry{ - Address: "foo", - Username: "foo", - Password: "foo", - } - return s - }, - news: func(_ *testing.T, a IndexArgs) IndexArgs { - a.Registry = &Registry{ - Address: "foo", - Username: "foo", - Password: "DIFFERENT PASSWORD", - } - return a - }, - wantChanges: false, - }, - { - name: "diff if registry added", - olds: func(*testing.T, IndexState) IndexState { return baseState }, - news: func(_ *testing.T, a IndexArgs) IndexArgs { - a.Registry = &Registry{Address: "foo.com", Username: "foo", Password: "foo"} - return a - }, - wantChanges: true, - }, - { - name: "diff if registry user changes", - olds: func(_ *testing.T, s IndexState) IndexState { - s.Registry = &Registry{ - Address: "foo", - Username: "foo", - Password: "foo", - } - return s - }, - news: func(_ *testing.T, a IndexArgs) IndexArgs { - a.Registry = &Registry{ - Address: "DIFFERENT USER", - Username: "foo", - Password: "foo", - } - return a - }, - wantChanges: true, - }, - } - - s := newServer(nil) - - encode := func(t *testing.T, x any) resource.PropertyMap { - raw, err := mapper.New(&mapper.Opts{IgnoreMissing: true}).Encode(x) - require.NoError(t, err) - return resource.NewPropertyMapFromMap(raw) - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - resp, err := s.Diff(provider.DiffRequest{ - Urn: urn, - Olds: encode(t, tt.olds(t, baseState)), - News: encode(t, tt.news(t, baseArgs)), - }) - assert.NoError(t, err) - assert.Equal(t, tt.wantChanges, resp.HasChanges, resp.DetailedDiff) - }) - } -} diff --git a/provider/internal/mockcli_test.go b/provider/internal/mockcli_test.go deleted file mode 100644 index 4293b99..0000000 --- a/provider/internal/mockcli_test.go +++ /dev/null @@ -1,737 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: cli.go -// -// Generated by this command: -// -// mockgen -typed -package internal -source cli.go -destination mockcli_test.go --self_package github.com/pulumi/pulumi-docker-build/provider/internal -// -// Package internal is a generated GoMock package. -package internal - -import ( - io "io" - reflect "reflect" - - command "github.com/docker/cli/cli/command" - configfile "github.com/docker/cli/cli/config/configfile" - docker "github.com/docker/cli/cli/context/docker" - store "github.com/docker/cli/cli/context/store" - store0 "github.com/docker/cli/cli/manifest/store" - client "github.com/docker/cli/cli/registry/client" - streams "github.com/docker/cli/cli/streams" - trust "github.com/docker/cli/cli/trust" - client0 "github.com/docker/docker/client" - client1 "github.com/theupdateframework/notary/client" - gomock "go.uber.org/mock/gomock" -) - -// MockCli is a mock of Cli interface. -type MockCli struct { - ctrl *gomock.Controller - recorder *MockCliMockRecorder -} - -// MockCliMockRecorder is the mock recorder for MockCli. -type MockCliMockRecorder struct { - mock *MockCli -} - -// NewMockCli creates a new mock instance. -func NewMockCli(ctrl *gomock.Controller) *MockCli { - mock := &MockCli{ctrl: ctrl} - mock.recorder = &MockCliMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockCli) EXPECT() *MockCliMockRecorder { - return m.recorder -} - -// Apply mocks base method. -func (m *MockCli) Apply(ops ...command.CLIOption) error { - m.ctrl.T.Helper() - varargs := []any{} - for _, a := range ops { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "Apply", varargs...) - ret0, _ := ret[0].(error) - return ret0 -} - -// Apply indicates an expected call of Apply. -func (mr *MockCliMockRecorder) Apply(ops ...any) *CliApplyCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Apply", reflect.TypeOf((*MockCli)(nil).Apply), ops...) - return &CliApplyCall{Call: call} -} - -// CliApplyCall wrap *gomock.Call -type CliApplyCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliApplyCall) Return(arg0 error) *CliApplyCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliApplyCall) Do(f func(...command.CLIOption) error) *CliApplyCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliApplyCall) DoAndReturn(f func(...command.CLIOption) error) *CliApplyCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// BuildKitEnabled mocks base method. -func (m *MockCli) BuildKitEnabled() (bool, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BuildKitEnabled") - ret0, _ := ret[0].(bool) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// BuildKitEnabled indicates an expected call of BuildKitEnabled. -func (mr *MockCliMockRecorder) BuildKitEnabled() *CliBuildKitEnabledCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuildKitEnabled", reflect.TypeOf((*MockCli)(nil).BuildKitEnabled)) - return &CliBuildKitEnabledCall{Call: call} -} - -// CliBuildKitEnabledCall wrap *gomock.Call -type CliBuildKitEnabledCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliBuildKitEnabledCall) Return(arg0 bool, arg1 error) *CliBuildKitEnabledCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliBuildKitEnabledCall) Do(f func() (bool, error)) *CliBuildKitEnabledCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliBuildKitEnabledCall) DoAndReturn(f func() (bool, error)) *CliBuildKitEnabledCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Client mocks base method. -func (m *MockCli) Client() client0.APIClient { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Client") - ret0, _ := ret[0].(client0.APIClient) - return ret0 -} - -// Client indicates an expected call of Client. -func (mr *MockCliMockRecorder) Client() *CliClientCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Client", reflect.TypeOf((*MockCli)(nil).Client)) - return &CliClientCall{Call: call} -} - -// CliClientCall wrap *gomock.Call -type CliClientCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliClientCall) Return(arg0 client0.APIClient) *CliClientCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliClientCall) Do(f func() client0.APIClient) *CliClientCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliClientCall) DoAndReturn(f func() client0.APIClient) *CliClientCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ConfigFile mocks base method. -func (m *MockCli) ConfigFile() *configfile.ConfigFile { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ConfigFile") - ret0, _ := ret[0].(*configfile.ConfigFile) - return ret0 -} - -// ConfigFile indicates an expected call of ConfigFile. -func (mr *MockCliMockRecorder) ConfigFile() *CliConfigFileCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConfigFile", reflect.TypeOf((*MockCli)(nil).ConfigFile)) - return &CliConfigFileCall{Call: call} -} - -// CliConfigFileCall wrap *gomock.Call -type CliConfigFileCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliConfigFileCall) Return(arg0 *configfile.ConfigFile) *CliConfigFileCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliConfigFileCall) Do(f func() *configfile.ConfigFile) *CliConfigFileCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliConfigFileCall) DoAndReturn(f func() *configfile.ConfigFile) *CliConfigFileCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ContentTrustEnabled mocks base method. -func (m *MockCli) ContentTrustEnabled() bool { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ContentTrustEnabled") - ret0, _ := ret[0].(bool) - return ret0 -} - -// ContentTrustEnabled indicates an expected call of ContentTrustEnabled. -func (mr *MockCliMockRecorder) ContentTrustEnabled() *CliContentTrustEnabledCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ContentTrustEnabled", reflect.TypeOf((*MockCli)(nil).ContentTrustEnabled)) - return &CliContentTrustEnabledCall{Call: call} -} - -// CliContentTrustEnabledCall wrap *gomock.Call -type CliContentTrustEnabledCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliContentTrustEnabledCall) Return(arg0 bool) *CliContentTrustEnabledCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliContentTrustEnabledCall) Do(f func() bool) *CliContentTrustEnabledCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliContentTrustEnabledCall) DoAndReturn(f func() bool) *CliContentTrustEnabledCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ContextStore mocks base method. -func (m *MockCli) ContextStore() store.Store { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ContextStore") - ret0, _ := ret[0].(store.Store) - return ret0 -} - -// ContextStore indicates an expected call of ContextStore. -func (mr *MockCliMockRecorder) ContextStore() *CliContextStoreCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ContextStore", reflect.TypeOf((*MockCli)(nil).ContextStore)) - return &CliContextStoreCall{Call: call} -} - -// CliContextStoreCall wrap *gomock.Call -type CliContextStoreCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliContextStoreCall) Return(arg0 store.Store) *CliContextStoreCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliContextStoreCall) Do(f func() store.Store) *CliContextStoreCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliContextStoreCall) DoAndReturn(f func() store.Store) *CliContextStoreCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// CurrentContext mocks base method. -func (m *MockCli) CurrentContext() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CurrentContext") - ret0, _ := ret[0].(string) - return ret0 -} - -// CurrentContext indicates an expected call of CurrentContext. -func (mr *MockCliMockRecorder) CurrentContext() *CliCurrentContextCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CurrentContext", reflect.TypeOf((*MockCli)(nil).CurrentContext)) - return &CliCurrentContextCall{Call: call} -} - -// CliCurrentContextCall wrap *gomock.Call -type CliCurrentContextCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliCurrentContextCall) Return(arg0 string) *CliCurrentContextCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliCurrentContextCall) Do(f func() string) *CliCurrentContextCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliCurrentContextCall) DoAndReturn(f func() string) *CliCurrentContextCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// CurrentVersion mocks base method. -func (m *MockCli) CurrentVersion() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CurrentVersion") - ret0, _ := ret[0].(string) - return ret0 -} - -// CurrentVersion indicates an expected call of CurrentVersion. -func (mr *MockCliMockRecorder) CurrentVersion() *CliCurrentVersionCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CurrentVersion", reflect.TypeOf((*MockCli)(nil).CurrentVersion)) - return &CliCurrentVersionCall{Call: call} -} - -// CliCurrentVersionCall wrap *gomock.Call -type CliCurrentVersionCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliCurrentVersionCall) Return(arg0 string) *CliCurrentVersionCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliCurrentVersionCall) Do(f func() string) *CliCurrentVersionCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliCurrentVersionCall) DoAndReturn(f func() string) *CliCurrentVersionCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// DefaultVersion mocks base method. -func (m *MockCli) DefaultVersion() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DefaultVersion") - ret0, _ := ret[0].(string) - return ret0 -} - -// DefaultVersion indicates an expected call of DefaultVersion. -func (mr *MockCliMockRecorder) DefaultVersion() *CliDefaultVersionCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultVersion", reflect.TypeOf((*MockCli)(nil).DefaultVersion)) - return &CliDefaultVersionCall{Call: call} -} - -// CliDefaultVersionCall wrap *gomock.Call -type CliDefaultVersionCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliDefaultVersionCall) Return(arg0 string) *CliDefaultVersionCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliDefaultVersionCall) Do(f func() string) *CliDefaultVersionCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliDefaultVersionCall) DoAndReturn(f func() string) *CliDefaultVersionCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// DockerEndpoint mocks base method. -func (m *MockCli) DockerEndpoint() docker.Endpoint { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DockerEndpoint") - ret0, _ := ret[0].(docker.Endpoint) - return ret0 -} - -// DockerEndpoint indicates an expected call of DockerEndpoint. -func (mr *MockCliMockRecorder) DockerEndpoint() *CliDockerEndpointCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DockerEndpoint", reflect.TypeOf((*MockCli)(nil).DockerEndpoint)) - return &CliDockerEndpointCall{Call: call} -} - -// CliDockerEndpointCall wrap *gomock.Call -type CliDockerEndpointCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliDockerEndpointCall) Return(arg0 docker.Endpoint) *CliDockerEndpointCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliDockerEndpointCall) Do(f func() docker.Endpoint) *CliDockerEndpointCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliDockerEndpointCall) DoAndReturn(f func() docker.Endpoint) *CliDockerEndpointCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Err mocks base method. -func (m *MockCli) Err() io.Writer { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Err") - ret0, _ := ret[0].(io.Writer) - return ret0 -} - -// Err indicates an expected call of Err. -func (mr *MockCliMockRecorder) Err() *CliErrCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Err", reflect.TypeOf((*MockCli)(nil).Err)) - return &CliErrCall{Call: call} -} - -// CliErrCall wrap *gomock.Call -type CliErrCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliErrCall) Return(arg0 io.Writer) *CliErrCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliErrCall) Do(f func() io.Writer) *CliErrCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliErrCall) DoAndReturn(f func() io.Writer) *CliErrCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// In mocks base method. -func (m *MockCli) In() *streams.In { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "In") - ret0, _ := ret[0].(*streams.In) - return ret0 -} - -// In indicates an expected call of In. -func (mr *MockCliMockRecorder) In() *CliInCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "In", reflect.TypeOf((*MockCli)(nil).In)) - return &CliInCall{Call: call} -} - -// CliInCall wrap *gomock.Call -type CliInCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliInCall) Return(arg0 *streams.In) *CliInCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliInCall) Do(f func() *streams.In) *CliInCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliInCall) DoAndReturn(f func() *streams.In) *CliInCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ManifestStore mocks base method. -func (m *MockCli) ManifestStore() store0.Store { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ManifestStore") - ret0, _ := ret[0].(store0.Store) - return ret0 -} - -// ManifestStore indicates an expected call of ManifestStore. -func (mr *MockCliMockRecorder) ManifestStore() *CliManifestStoreCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ManifestStore", reflect.TypeOf((*MockCli)(nil).ManifestStore)) - return &CliManifestStoreCall{Call: call} -} - -// CliManifestStoreCall wrap *gomock.Call -type CliManifestStoreCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliManifestStoreCall) Return(arg0 store0.Store) *CliManifestStoreCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliManifestStoreCall) Do(f func() store0.Store) *CliManifestStoreCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliManifestStoreCall) DoAndReturn(f func() store0.Store) *CliManifestStoreCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// NotaryClient mocks base method. -func (m *MockCli) NotaryClient(imgRefAndAuth trust.ImageRefAndAuth, actions []string) (client1.Repository, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "NotaryClient", imgRefAndAuth, actions) - ret0, _ := ret[0].(client1.Repository) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// NotaryClient indicates an expected call of NotaryClient. -func (mr *MockCliMockRecorder) NotaryClient(imgRefAndAuth, actions any) *CliNotaryClientCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NotaryClient", reflect.TypeOf((*MockCli)(nil).NotaryClient), imgRefAndAuth, actions) - return &CliNotaryClientCall{Call: call} -} - -// CliNotaryClientCall wrap *gomock.Call -type CliNotaryClientCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliNotaryClientCall) Return(arg0 client1.Repository, arg1 error) *CliNotaryClientCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliNotaryClientCall) Do(f func(trust.ImageRefAndAuth, []string) (client1.Repository, error)) *CliNotaryClientCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliNotaryClientCall) DoAndReturn(f func(trust.ImageRefAndAuth, []string) (client1.Repository, error)) *CliNotaryClientCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Out mocks base method. -func (m *MockCli) Out() *streams.Out { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Out") - ret0, _ := ret[0].(*streams.Out) - return ret0 -} - -// Out indicates an expected call of Out. -func (mr *MockCliMockRecorder) Out() *CliOutCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Out", reflect.TypeOf((*MockCli)(nil).Out)) - return &CliOutCall{Call: call} -} - -// CliOutCall wrap *gomock.Call -type CliOutCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliOutCall) Return(arg0 *streams.Out) *CliOutCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliOutCall) Do(f func() *streams.Out) *CliOutCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliOutCall) DoAndReturn(f func() *streams.Out) *CliOutCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// RegistryClient mocks base method. -func (m *MockCli) RegistryClient(arg0 bool) client.RegistryClient { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RegistryClient", arg0) - ret0, _ := ret[0].(client.RegistryClient) - return ret0 -} - -// RegistryClient indicates an expected call of RegistryClient. -func (mr *MockCliMockRecorder) RegistryClient(arg0 any) *CliRegistryClientCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegistryClient", reflect.TypeOf((*MockCli)(nil).RegistryClient), arg0) - return &CliRegistryClientCall{Call: call} -} - -// CliRegistryClientCall wrap *gomock.Call -type CliRegistryClientCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliRegistryClientCall) Return(arg0 client.RegistryClient) *CliRegistryClientCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliRegistryClientCall) Do(f func(bool) client.RegistryClient) *CliRegistryClientCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliRegistryClientCall) DoAndReturn(f func(bool) client.RegistryClient) *CliRegistryClientCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ServerInfo mocks base method. -func (m *MockCli) ServerInfo() command.ServerInfo { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ServerInfo") - ret0, _ := ret[0].(command.ServerInfo) - return ret0 -} - -// ServerInfo indicates an expected call of ServerInfo. -func (mr *MockCliMockRecorder) ServerInfo() *CliServerInfoCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerInfo", reflect.TypeOf((*MockCli)(nil).ServerInfo)) - return &CliServerInfoCall{Call: call} -} - -// CliServerInfoCall wrap *gomock.Call -type CliServerInfoCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliServerInfoCall) Return(arg0 command.ServerInfo) *CliServerInfoCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliServerInfoCall) Do(f func() command.ServerInfo) *CliServerInfoCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliServerInfoCall) DoAndReturn(f func() command.ServerInfo) *CliServerInfoCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// SetIn mocks base method. -func (m *MockCli) SetIn(in *streams.In) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "SetIn", in) -} - -// SetIn indicates an expected call of SetIn. -func (mr *MockCliMockRecorder) SetIn(in any) *CliSetInCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetIn", reflect.TypeOf((*MockCli)(nil).SetIn), in) - return &CliSetInCall{Call: call} -} - -// CliSetInCall wrap *gomock.Call -type CliSetInCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *CliSetInCall) Return() *CliSetInCall { - c.Call = c.Call.Return() - return c -} - -// Do rewrite *gomock.Call.Do -func (c *CliSetInCall) Do(f func(*streams.In)) *CliSetInCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *CliSetInCall) DoAndReturn(f func(*streams.In)) *CliSetInCall { - c.Call = c.Call.DoAndReturn(f) - return c -} diff --git a/provider/internal/mockclient_test.go b/provider/internal/mockclient_test.go deleted file mode 100644 index 60cb822..0000000 --- a/provider/internal/mockclient_test.go +++ /dev/null @@ -1,493 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: client.go -// -// Generated by this command: -// -// mockgen -typed -package internal -source client.go -destination mockclient_test.go --self_package github.com/pulumi/pulumi-docker-build/provider/internal -// -// Package internal is a generated GoMock package. -package internal - -import ( - context "context" - reflect "reflect" - - pb "github.com/docker/buildx/controller/pb" - client "github.com/moby/buildkit/client" - session "github.com/moby/buildkit/session" - descriptor "github.com/regclient/regclient/types/descriptor" - gomock "go.uber.org/mock/gomock" -) - -// MockClient is a mock of Client interface. -type MockClient struct { - ctrl *gomock.Controller - recorder *MockClientMockRecorder -} - -// MockClientMockRecorder is the mock recorder for MockClient. -type MockClientMockRecorder struct { - mock *MockClient -} - -// NewMockClient creates a new mock instance. -func NewMockClient(ctrl *gomock.Controller) *MockClient { - mock := &MockClient{ctrl: ctrl} - mock.recorder = &MockClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockClient) EXPECT() *MockClientMockRecorder { - return m.recorder -} - -// Build mocks base method. -func (m *MockClient) Build(ctx context.Context, b Build) (*client.SolveResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Build", ctx, b) - ret0, _ := ret[0].(*client.SolveResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Build indicates an expected call of Build. -func (mr *MockClientMockRecorder) Build(ctx, b any) *ClientBuildCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Build", reflect.TypeOf((*MockClient)(nil).Build), ctx, b) - return &ClientBuildCall{Call: call} -} - -// ClientBuildCall wrap *gomock.Call -type ClientBuildCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientBuildCall) Return(arg0 *client.SolveResponse, arg1 error) *ClientBuildCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientBuildCall) Do(f func(context.Context, Build) (*client.SolveResponse, error)) *ClientBuildCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientBuildCall) DoAndReturn(f func(context.Context, Build) (*client.SolveResponse, error)) *ClientBuildCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// BuildKitEnabled mocks base method. -func (m *MockClient) BuildKitEnabled() (bool, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BuildKitEnabled") - ret0, _ := ret[0].(bool) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// BuildKitEnabled indicates an expected call of BuildKitEnabled. -func (mr *MockClientMockRecorder) BuildKitEnabled() *ClientBuildKitEnabledCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuildKitEnabled", reflect.TypeOf((*MockClient)(nil).BuildKitEnabled)) - return &ClientBuildKitEnabledCall{Call: call} -} - -// ClientBuildKitEnabledCall wrap *gomock.Call -type ClientBuildKitEnabledCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientBuildKitEnabledCall) Return(arg0 bool, arg1 error) *ClientBuildKitEnabledCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientBuildKitEnabledCall) Do(f func() (bool, error)) *ClientBuildKitEnabledCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientBuildKitEnabledCall) DoAndReturn(f func() (bool, error)) *ClientBuildKitEnabledCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Delete mocks base method. -func (m *MockClient) Delete(ctx context.Context, id string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Delete", ctx, id) - ret0, _ := ret[0].(error) - return ret0 -} - -// Delete indicates an expected call of Delete. -func (mr *MockClientMockRecorder) Delete(ctx, id any) *ClientDeleteCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockClient)(nil).Delete), ctx, id) - return &ClientDeleteCall{Call: call} -} - -// ClientDeleteCall wrap *gomock.Call -type ClientDeleteCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientDeleteCall) Return(arg0 error) *ClientDeleteCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientDeleteCall) Do(f func(context.Context, string) error) *ClientDeleteCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientDeleteCall) DoAndReturn(f func(context.Context, string) error) *ClientDeleteCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Inspect mocks base method. -func (m *MockClient) Inspect(ctx context.Context, id string) ([]descriptor.Descriptor, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Inspect", ctx, id) - ret0, _ := ret[0].([]descriptor.Descriptor) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Inspect indicates an expected call of Inspect. -func (mr *MockClientMockRecorder) Inspect(ctx, id any) *ClientInspectCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Inspect", reflect.TypeOf((*MockClient)(nil).Inspect), ctx, id) - return &ClientInspectCall{Call: call} -} - -// ClientInspectCall wrap *gomock.Call -type ClientInspectCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientInspectCall) Return(arg0 []descriptor.Descriptor, arg1 error) *ClientInspectCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientInspectCall) Do(f func(context.Context, string) ([]descriptor.Descriptor, error)) *ClientInspectCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientInspectCall) DoAndReturn(f func(context.Context, string) ([]descriptor.Descriptor, error)) *ClientInspectCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ManifestCreate mocks base method. -func (m *MockClient) ManifestCreate(ctx context.Context, push bool, target string, refs ...string) error { - m.ctrl.T.Helper() - varargs := []any{ctx, push, target} - for _, a := range refs { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "ManifestCreate", varargs...) - ret0, _ := ret[0].(error) - return ret0 -} - -// ManifestCreate indicates an expected call of ManifestCreate. -func (mr *MockClientMockRecorder) ManifestCreate(ctx, push, target any, refs ...any) *ClientManifestCreateCall { - mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, push, target}, refs...) - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ManifestCreate", reflect.TypeOf((*MockClient)(nil).ManifestCreate), varargs...) - return &ClientManifestCreateCall{Call: call} -} - -// ClientManifestCreateCall wrap *gomock.Call -type ClientManifestCreateCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientManifestCreateCall) Return(arg0 error) *ClientManifestCreateCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientManifestCreateCall) Do(f func(context.Context, bool, string, ...string) error) *ClientManifestCreateCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientManifestCreateCall) DoAndReturn(f func(context.Context, bool, string, ...string) error) *ClientManifestCreateCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ManifestDelete mocks base method. -func (m *MockClient) ManifestDelete(ctx context.Context, target string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ManifestDelete", ctx, target) - ret0, _ := ret[0].(error) - return ret0 -} - -// ManifestDelete indicates an expected call of ManifestDelete. -func (mr *MockClientMockRecorder) ManifestDelete(ctx, target any) *ClientManifestDeleteCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ManifestDelete", reflect.TypeOf((*MockClient)(nil).ManifestDelete), ctx, target) - return &ClientManifestDeleteCall{Call: call} -} - -// ClientManifestDeleteCall wrap *gomock.Call -type ClientManifestDeleteCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientManifestDeleteCall) Return(arg0 error) *ClientManifestDeleteCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientManifestDeleteCall) Do(f func(context.Context, string) error) *ClientManifestDeleteCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientManifestDeleteCall) DoAndReturn(f func(context.Context, string) error) *ClientManifestDeleteCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ManifestInspect mocks base method. -func (m *MockClient) ManifestInspect(ctx context.Context, target string) (string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ManifestInspect", ctx, target) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ManifestInspect indicates an expected call of ManifestInspect. -func (mr *MockClientMockRecorder) ManifestInspect(ctx, target any) *ClientManifestInspectCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ManifestInspect", reflect.TypeOf((*MockClient)(nil).ManifestInspect), ctx, target) - return &ClientManifestInspectCall{Call: call} -} - -// ClientManifestInspectCall wrap *gomock.Call -type ClientManifestInspectCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *ClientManifestInspectCall) Return(arg0 string, arg1 error) *ClientManifestInspectCall { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *ClientManifestInspectCall) Do(f func(context.Context, string) (string, error)) *ClientManifestInspectCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *ClientManifestInspectCall) DoAndReturn(f func(context.Context, string) (string, error)) *ClientManifestInspectCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// MockBuild is a mock of Build interface. -type MockBuild struct { - ctrl *gomock.Controller - recorder *MockBuildMockRecorder -} - -// MockBuildMockRecorder is the mock recorder for MockBuild. -type MockBuildMockRecorder struct { - mock *MockBuild -} - -// NewMockBuild creates a new mock instance. -func NewMockBuild(ctrl *gomock.Controller) *MockBuild { - mock := &MockBuild{ctrl: ctrl} - mock.recorder = &MockBuildMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockBuild) EXPECT() *MockBuildMockRecorder { - return m.recorder -} - -// BuildOptions mocks base method. -func (m *MockBuild) BuildOptions() pb.BuildOptions { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BuildOptions") - ret0, _ := ret[0].(pb.BuildOptions) - return ret0 -} - -// BuildOptions indicates an expected call of BuildOptions. -func (mr *MockBuildMockRecorder) BuildOptions() *BuildBuildOptionsCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuildOptions", reflect.TypeOf((*MockBuild)(nil).BuildOptions)) - return &BuildBuildOptionsCall{Call: call} -} - -// BuildBuildOptionsCall wrap *gomock.Call -type BuildBuildOptionsCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *BuildBuildOptionsCall) Return(arg0 pb.BuildOptions) *BuildBuildOptionsCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *BuildBuildOptionsCall) Do(f func() pb.BuildOptions) *BuildBuildOptionsCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *BuildBuildOptionsCall) DoAndReturn(f func() pb.BuildOptions) *BuildBuildOptionsCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Inline mocks base method. -func (m *MockBuild) Inline() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Inline") - ret0, _ := ret[0].(string) - return ret0 -} - -// Inline indicates an expected call of Inline. -func (mr *MockBuildMockRecorder) Inline() *BuildInlineCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Inline", reflect.TypeOf((*MockBuild)(nil).Inline)) - return &BuildInlineCall{Call: call} -} - -// BuildInlineCall wrap *gomock.Call -type BuildInlineCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *BuildInlineCall) Return(arg0 string) *BuildInlineCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *BuildInlineCall) Do(f func() string) *BuildInlineCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *BuildInlineCall) DoAndReturn(f func() string) *BuildInlineCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// Secrets mocks base method. -func (m *MockBuild) Secrets() session.Attachable { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Secrets") - ret0, _ := ret[0].(session.Attachable) - return ret0 -} - -// Secrets indicates an expected call of Secrets. -func (mr *MockBuildMockRecorder) Secrets() *BuildSecretsCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Secrets", reflect.TypeOf((*MockBuild)(nil).Secrets)) - return &BuildSecretsCall{Call: call} -} - -// BuildSecretsCall wrap *gomock.Call -type BuildSecretsCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *BuildSecretsCall) Return(arg0 session.Attachable) *BuildSecretsCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *BuildSecretsCall) Do(f func() session.Attachable) *BuildSecretsCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *BuildSecretsCall) DoAndReturn(f func() session.Attachable) *BuildSecretsCall { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// ShouldExec mocks base method. -func (m *MockBuild) ShouldExec() bool { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ShouldExec") - ret0, _ := ret[0].(bool) - return ret0 -} - -// ShouldExec indicates an expected call of ShouldExec. -func (mr *MockBuildMockRecorder) ShouldExec() *BuildShouldExecCall { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShouldExec", reflect.TypeOf((*MockBuild)(nil).ShouldExec)) - return &BuildShouldExecCall{Call: call} -} - -// BuildShouldExecCall wrap *gomock.Call -type BuildShouldExecCall struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *BuildShouldExecCall) Return(arg0 bool) *BuildShouldExecCall { - c.Call = c.Call.Return(arg0) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *BuildShouldExecCall) Do(f func() bool) *BuildShouldExecCall { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *BuildShouldExecCall) DoAndReturn(f func() bool) *BuildShouldExecCall { - c.Call = c.Call.DoAndReturn(f) - return c -} diff --git a/provider/internal/network.go b/provider/internal/network.go deleted file mode 100644 index 50e2076..0000000 --- a/provider/internal/network.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import "github.com/pulumi/pulumi-go-provider/infer" - -var _ = (infer.Enum[NetworkMode])((*NetworkMode)(nil)) - -// NetworkMode is the --network parameter for a build. -type NetworkMode string - -const ( - Default NetworkMode = "default" // Default network mode. - Host NetworkMode = "host" // Host network mode. - None NetworkMode = "none" // None or no network mode. -) - -// Values returns all valid NetworkMode values for SDK generation. -func (NetworkMode) Values() []infer.EnumValue[NetworkMode] { - return []infer.EnumValue[NetworkMode]{ - { - Value: Default, - Description: "The default sandbox network mode.", - }, - { - Value: Host, - Description: "Host network mode.", - }, - { - Value: None, - Description: "Disable network access.", - }, - } -} - -func (n *NetworkMode) String() string { - if n == nil { - return string(Default) - } - return string(*n) -} diff --git a/provider/internal/platform.go b/provider/internal/platform.go deleted file mode 100644 index eddefb9..0000000 --- a/provider/internal/platform.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "github.com/docker/buildx/util/platformutil" - - "github.com/pulumi/pulumi-go-provider/infer" -) - -// These enum values are derived from -// https://github.com/docker/cli/blob/d1b88930/cli/command/manifest/util.go#L22-L51 - -var _ = (infer.Enum[Platform])((*Platform)(nil)) - -// Platform is an enum capturing all available OS/architecture targets. -type Platform string - -// Values returns all valid Platform values for SDK generation. -func (Platform) Values() []infer.EnumValue[Platform] { - return []infer.EnumValue[Platform]{ - {Value: "darwin/386"}, - {Value: "darwin/amd64"}, - {Value: "darwin/arm"}, - {Value: "darwin/arm64"}, - {Value: "dragonfly/amd64"}, - {Value: "freebsd/386"}, - {Value: "freebsd/amd64"}, - {Value: "freebsd/arm"}, - {Value: "linux/386"}, - {Value: "linux/amd64"}, - {Value: "linux/arm"}, - {Value: "linux/arm64"}, - {Value: "linux/mips64"}, - {Value: "linux/mips64le"}, - {Value: "linux/ppc64le"}, - {Value: "linux/riscv64"}, - {Value: "linux/s390x"}, - {Value: "netbsd/386"}, - {Value: "netbsd/amd64"}, - {Value: "netbsd/arm"}, - {Value: "openbsd/386"}, - {Value: "openbsd/amd64"}, - {Value: "openbsd/arm"}, - {Value: "plan9/386"}, - {Value: "plan9/amd64"}, - {Value: "solaris/amd64"}, - {Value: "windows/386"}, - {Value: "windows/amd64"}, - } -} - -func (p Platform) String() string { - return string(p) -} - -func (p Platform) validate(preview bool) (string, error) { - if preview && p == "" { - // Unknown platform during preview -- nothing to do. - return "", nil - } - _, err := platformutil.Parse([]string{string(p)}) - if err != nil { - return "", err - } - return string(p), nil -} diff --git a/provider/internal/preview.go b/provider/internal/preview.go deleted file mode 100644 index fc81d00..0000000 --- a/provider/internal/preview.go +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "fmt" -) - -// keeper decides whether an element should be included for a preview -// operation, optionally returning a mutated copy of that element. -type keeper[T any] interface { - keep(T) bool -} - -// filter applies a keeper to each element, returning a new slice. -func filter[T any](k keeper[T], elems ...T) []T { - if elems == nil { - return nil - } - result := make([]T, 0, len(elems)) - for _, e := range elems { - if !k.keep(e) { - continue - } - result = append(result, e) - } - return result -} - -// stringKeeper preserves any non-empty string values for preview. -type stringKeeper struct{ preview bool } - -func (k stringKeeper) keep(s string) bool { - if !k.preview { - return true - } - return s != "" -} - -//nolint:structcheck // False positive due to generics. -type stringerKeeper[T fmt.Stringer] struct{ preview bool } - -//nolint:unused // False positive due to generics. -func (k stringerKeeper[T]) keep(t T) bool { - if !k.preview { - return true - } - return stringKeeper(k).keep(t.String()) -} - -// registryKeeper preserves any registries with known values for address and -// password. This is imprecise and doesn't permit alternative auth strategies -// like registry tokens, email, etc. -type registryKeeper struct{ preview bool } - -//nolint:unused // False positive due to generics. -func (k registryKeeper) keep(r Registry) bool { - if !k.preview { - return true - } - return r.Password != "" && r.Address != "" -} - -// mapKeeper preserves map elements with known keys and values. -type mapKeeper struct{ preview bool } - -func (k mapKeeper) keep(m map[string]string) map[string]string { - if !k.preview || len(m) == 0 { - return m - } - kk := stringKeeper(k) - filtered := make(map[string]string) - for key, val := range m { - if !kk.keep(key) { - continue - } - if !kk.keep(val) { - continue - } - filtered[key] = val - } - return filtered -} - -type contextKeeper struct{ preview bool } - -func (k contextKeeper) keep(bc *BuildContext) *BuildContext { - if !k.preview || bc == nil || len(bc.Named) == 0 { - return bc - } - - named := NamedContexts{} - sk := stringKeeper(k) - for k, v := range bc.Named { - if !sk.keep(k) || !sk.keep(v.Location) { - continue - } - named[k] = v - } - - return &BuildContext{ - Context: Context{bc.Location}, - Named: named, - } -} diff --git a/provider/internal/provider.go b/provider/internal/provider.go deleted file mode 100644 index 7fc2f02..0000000 --- a/provider/internal/provider.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "fmt" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/infer" - pschema "github.com/pulumi/pulumi-go-provider/middleware/schema" - "github.com/pulumi/pulumi-java/pkg/codegen/java" - csgen "github.com/pulumi/pulumi/pkg/v3/codegen/dotnet" - gogen "github.com/pulumi/pulumi/pkg/v3/codegen/go" - tsgen "github.com/pulumi/pulumi/pkg/v3/codegen/nodejs" - pygen "github.com/pulumi/pulumi/pkg/v3/codegen/python" - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" - "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -var ( - _ infer.CustomConfigure = (*Config)(nil) - _ infer.Annotated = (*Config)(nil) - _ infer.Annotated = (*Registry)(nil) -) - -// Config configures the buildx provider. -type Config struct { - Host string `pulumi:"host,optional"` - Registries []Registry `pulumi:"registries,optional"` - - host *host -} - -// _mockClientKey is used by tests to inject a mock Docker client. -var _mockClientKey struct{} - -// Annotate provides user-facing descriptions and defaults for Config's fields. -func (c *Config) Annotate(a infer.Annotator) { - a.Describe(&c.Host, "The build daemon's address.") - a.SetDefault(&c.Host, "", "DOCKER_HOST") -} - -// Configure validates and processes user-provided configuration values. -func (c *Config) Configure(_ context.Context) error { - h, err := newHost(c) - if err != nil { - return fmt.Errorf("getting host: %w", err) - } - c.host = h - return nil -} - -// NewBuildxProvider returns a new buildx provider. -func NewBuildxProvider() provider.Provider { - return infer.Provider( - infer.Options{ - Metadata: pschema.Metadata{ - DisplayName: "docker-build", - Keywords: []string{"docker", "buildkit", "buildx", "kind/native"}, - Description: "A Pulumi provider for building modern Docker images with buildx and BuildKit.", - Homepage: "https://pulumi.com", - Publisher: "Pulumi", - License: "Apache-2.0", - Repository: "https://github.com/pulumi/pulumi-docker-build", - LanguageMap: map[string]any{ - "go": gogen.GoPackageInfo{ - // GenerateResourceContainerTypes: true, - RespectSchemaVersion: true, - Generics: gogen.GenericsSettingSideBySide, - PackageImportAliases: map[string]string{ - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild": "dockerbuild", - }, - ImportBasePath: "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild", - }, - "csharp": csgen.CSharpPackageInfo{ - RespectSchemaVersion: true, - PackageReferences: map[string]string{ - "Pulumi": "3.*", - }, - }, - "java": java.PackageInfo{ - BuildFiles: "gradle", - GradleNexusPublishPluginVersion: "1.1.0", - Dependencies: map[string]string{ - "com.pulumi:pulumi": "0.9.9", - "com.google.code.gson:gson": "2.8.9", - "com.google.code.findbugs:jsr305": "3.0.2", - }, - }, - "nodejs": tsgen.NodePackageInfo{ - RespectSchemaVersion: true, - Dependencies: map[string]string{ - "@pulumi/pulumi": "^3.0.0", - }, - }, - "python": pygen.PackageInfo{ - RespectSchemaVersion: true, - PyProject: struct { - Enabled bool `json:"enabled,omitempty"` - }{Enabled: true}, - Requires: map[string]string{ - "pulumi": ">=3.0.0,<4.0.0", - }, - }, - }, - }, - Resources: []infer.InferredResource{ - infer.Resource[*Image](), - infer.Resource[*Index](), - }, - ModuleMap: map[tokens.ModuleName]tokens.ModuleName{ - "internal": "index", - }, - Config: infer.Config[*Config](), - }, - ) -} - -// Schema returns our package specification. -func Schema(ctx context.Context, version string) schema.PackageSpec { - p := NewBuildxProvider() - spec, err := provider.GetSchema(ctx, "docker-build", version, p) - contract.AssertNoErrorf(err, "missing schema") - return spec -} diff --git a/provider/internal/provider_test.go b/provider/internal/provider_test.go deleted file mode 100644 index fa1d404..0000000 --- a/provider/internal/provider_test.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "context" - "testing" - - "github.com/blang/semver" - "github.com/stretchr/testify/assert" - - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/infer" - "github.com/pulumi/pulumi-go-provider/integration" - mwcontext "github.com/pulumi/pulumi-go-provider/middleware/context" -) - -func TestConfigure(t *testing.T) { - t.Parallel() - - s := newServer(nil) - - err := s.Configure( - provider.ConfigureRequest{}, - ) - assert.NoError(t, err) -} - -// TestAnnotate sanity checks that our annotations don't panic. -func TestAnnotate(t *testing.T) { - t.Parallel() - - for _, tt := range []infer.Annotated{ - &Config{}, - &Image{}, - &ImageArgs{}, - &ImageState{}, - &Index{}, - &IndexArgs{}, - &IndexState{}, - } { - tt.Annotate(annotator{}) - } -} - -// TestSchema sanity checks that our schema doesn't panic. -func TestSchema(t *testing.T) { - t.Parallel() - - s := newServer(nil) - - _, err := s.GetSchema(provider.GetSchemaRequest{Version: 0}) - assert.NoError(t, err) -} - -type annotator struct{} - -func (annotator) Describe(_ any, _ string) {} -func (annotator) SetDefault(_, _ any, _ ...string) {} -func (annotator) SetToken(_, _ string) {} -func (annotator) AddAlias(_, _ string) {} -func (annotator) SetResourceDeprecationMessage(_ string) {} - -func newServer(client Client) integration.Server { - p := NewBuildxProvider() - - // Inject a mock client if provided. - if client != nil { - p = mwcontext.Wrap(p, func(ctx context.Context) context.Context { - return context.WithValue(ctx, _mockClientKey, client) - }) - } - - return integration.NewServer("docker-build", semver.Version{Major: 0}, p) -} diff --git a/provider/internal/ssh.go b/provider/internal/ssh.go deleted file mode 100644 index af649fb..0000000 --- a/provider/internal/ssh.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "strings" - - controllerapi "github.com/docker/buildx/controller/pb" - "github.com/docker/buildx/util/buildflags" - - "github.com/pulumi/pulumi-go-provider/infer" -) - -// SSH is an SSH option. -type SSH struct { - ID string `pulumi:"id"` - Paths []string `pulumi:"paths,optional"` -} - -// Annotate sets docstrings on SSH. -func (s *SSH) Annotate(a infer.Annotator) { - a.Describe(&s.ID, dedent(` - Useful for distinguishing different servers that are part of the same - build. - - A value of "default" is appropriate if only dealing with a single host. - `)) - a.Describe(&s.Paths, dedent(` - SSH agent socket or private keys to expose to the build under the given - identifier. - - Defaults to "[$SSH_AUTH_SOCK]". - - Note that your keys are **not** automatically added when using an - agent. Run "ssh-add -l" locally to confirm which public keys are - visible to the agent; these will be exposed to your build. - `)) -} - -// String returns a CLI-encoded value for the SSH option, or an empty string if -// its ID is not known. -func (s SSH) String() string { - if s.ID == "" { - return "" - } - - r := s.ID - - if len(s.Paths) > 0 { - r += "=" + strings.Join(s.Paths, ",") - } - - return r -} - -func (s SSH) validate() (*controllerapi.SSH, error) { - parsed, err := buildflags.ParseSSHSpecs([]string{s.String()}) - if err != nil { - return nil, err - } - if len(parsed) == 0 { - return nil, nil - } - - _, err = controllerapi.CreateSSH([]*controllerapi.SSH{{ID: s.ID, Paths: s.Paths}}) - return parsed[0], err -} diff --git a/provider/internal/ssh_test.go b/provider/internal/ssh_test.go deleted file mode 100644 index a93ec60..0000000 --- a/provider/internal/ssh_test.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestValidateSSH(t *testing.T) { - t.Parallel() - tests := []struct { - name string - ssh SSH - - wantErr string - }{ - { - name: "invalid path", - ssh: SSH{ID: "foo", Paths: []string{"/not/real"}}, - wantErr: "/not/real: no such file or directory", - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - _, err := tt.ssh.validate() - - if tt.wantErr == "" { - assert.NoError(t, err) - } else { - assert.ErrorContains(t, err, tt.wantErr) - } - }) - } -} diff --git a/provider/internal/testdata/Dockerfile.invalid b/provider/internal/testdata/Dockerfile.invalid deleted file mode 100644 index 936fd2a..0000000 --- a/provider/internal/testdata/Dockerfile.invalid +++ /dev/null @@ -1,2 +0,0 @@ -FROM scratch -RUNN diff --git a/provider/internal/testdata/dockerfile-location-irrelevant/app/foo.sh b/provider/internal/testdata/dockerfile-location-irrelevant/app/foo.sh deleted file mode 100644 index 86f1c62..0000000 --- a/provider/internal/testdata/dockerfile-location-irrelevant/app/foo.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo "Hello, World!" diff --git a/provider/internal/testdata/dockerfile-location-irrelevant/step1.Dockerfile b/provider/internal/testdata/dockerfile-location-irrelevant/step1.Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/dockerfile-location-irrelevant/step1.Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/dockerfile-location-irrelevant/step2.Dockerfile b/provider/internal/testdata/dockerfile-location-irrelevant/step2.Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/dockerfile-location-irrelevant/step2.Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/filemode-matters/step1/Dockerfile b/provider/internal/testdata/filemode-matters/step1/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/filemode-matters/step1/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/filemode-matters/step1/foo.sh b/provider/internal/testdata/filemode-matters/step1/foo.sh deleted file mode 100644 index 86f1c62..0000000 --- a/provider/internal/testdata/filemode-matters/step1/foo.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo "Hello, World!" diff --git a/provider/internal/testdata/filemode-matters/step2-chmod-x/Dockerfile b/provider/internal/testdata/filemode-matters/step2-chmod-x/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/filemode-matters/step2-chmod-x/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/filemode-matters/step2-chmod-x/foo.sh b/provider/internal/testdata/filemode-matters/step2-chmod-x/foo.sh deleted file mode 100755 index 86f1c62..0000000 --- a/provider/internal/testdata/filemode-matters/step2-chmod-x/foo.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo "Hello, World!" diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/.dockerignore b/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/.dockerignore deleted file mode 100644 index b3159b4..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -# Ignore everything! -* - -# Except changes to source data in this set of directories: -!projects/*/src - -# This should therefore IGNORE projects/*/dist diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/Dockerfile b/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/projects/foo/src/app.js b/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/projects/foo/src/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-ignored-file/projects/foo/src/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/.dockerignore b/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/.dockerignore deleted file mode 100644 index b3159b4..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -# Ignore everything! -* - -# Except changes to source data in this set of directories: -!projects/*/src - -# This should therefore IGNORE projects/*/dist diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/Dockerfile b/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/projects/foo/src/app.js b/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/projects/foo/src/app.js deleted file mode 100644 index 63d0f1a..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir-modified-included-file/projects/foo/src/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("💜 Pulumi (included)"); diff --git a/provider/internal/testdata/ignores-wildcard/basedir/.dockerignore b/provider/internal/testdata/ignores-wildcard/basedir/.dockerignore deleted file mode 100644 index b3159b4..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -# Ignore everything! -* - -# Except changes to source data in this set of directories: -!projects/*/src - -# This should therefore IGNORE projects/*/dist diff --git a/provider/internal/testdata/ignores-wildcard/basedir/Dockerfile b/provider/internal/testdata/ignores-wildcard/basedir/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/ignores-wildcard/basedir/projects/foo/src/app.js b/provider/internal/testdata/ignores-wildcard/basedir/projects/foo/src/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/ignores-wildcard/basedir/projects/foo/src/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/.dockerignore b/provider/internal/testdata/ignores/basedir-with-ignored-files/.dockerignore deleted file mode 100644 index eb97a72..0000000 --- a/provider/internal/testdata/ignores/basedir-with-ignored-files/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -.dockerignore -ignored.txt -bar/ignored.js diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/Dockerfile b/provider/internal/testdata/ignores/basedir-with-ignored-files/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/ignores/basedir-with-ignored-files/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/bar/app.js b/provider/internal/testdata/ignores/basedir-with-ignored-files/bar/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/ignores/basedir-with-ignored-files/bar/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/bar/ignored.js b/provider/internal/testdata/ignores/basedir-with-ignored-files/bar/ignored.js deleted file mode 100644 index e69de29..0000000 diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/foo.txt b/provider/internal/testdata/ignores/basedir-with-ignored-files/foo.txt deleted file mode 100644 index 5716ca5..0000000 --- a/provider/internal/testdata/ignores/basedir-with-ignored-files/foo.txt +++ /dev/null @@ -1 +0,0 @@ -bar diff --git a/provider/internal/testdata/ignores/basedir-with-ignored-files/ignored.txt b/provider/internal/testdata/ignores/basedir-with-ignored-files/ignored.txt deleted file mode 100644 index e69de29..0000000 diff --git a/provider/internal/testdata/ignores/basedir/Dockerfile b/provider/internal/testdata/ignores/basedir/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/ignores/basedir/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/ignores/basedir/bar/app.js b/provider/internal/testdata/ignores/basedir/bar/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/ignores/basedir/bar/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/ignores/basedir/foo.txt b/provider/internal/testdata/ignores/basedir/foo.txt deleted file mode 100644 index 5716ca5..0000000 --- a/provider/internal/testdata/ignores/basedir/foo.txt +++ /dev/null @@ -1 +0,0 @@ -bar diff --git a/provider/internal/testdata/noop/Dockerfile b/provider/internal/testdata/noop/Dockerfile deleted file mode 100644 index c35f1b5..0000000 --- a/provider/internal/testdata/noop/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -FROM scratch diff --git a/provider/internal/testdata/renaming-matters/step1/Dockerfile b/provider/internal/testdata/renaming-matters/step1/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/renaming-matters/step1/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/renaming-matters/step1/foo.a.txt b/provider/internal/testdata/renaming-matters/step1/foo.a.txt deleted file mode 100644 index 345e6ae..0000000 --- a/provider/internal/testdata/renaming-matters/step1/foo.a.txt +++ /dev/null @@ -1 +0,0 @@ -Test diff --git a/provider/internal/testdata/renaming-matters/step2/Dockerfile b/provider/internal/testdata/renaming-matters/step2/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/renaming-matters/step2/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/renaming-matters/step2/foo.b.txt b/provider/internal/testdata/renaming-matters/step2/foo.b.txt deleted file mode 100644 index 345e6ae..0000000 --- a/provider/internal/testdata/renaming-matters/step2/foo.b.txt +++ /dev/null @@ -1 +0,0 @@ -Test diff --git a/provider/internal/testdata/symlinks/Dockerfile b/provider/internal/testdata/symlinks/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/symlinks/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/symlinks/linkedFromDeep.txt b/provider/internal/testdata/symlinks/linkedFromDeep.txt deleted file mode 100644 index 552085f..0000000 --- a/provider/internal/testdata/symlinks/linkedFromDeep.txt +++ /dev/null @@ -1 +0,0 @@ -Hello, diff --git a/provider/internal/testdata/symlinks/linkedToDeep.txt b/provider/internal/testdata/symlinks/linkedToDeep.txt deleted file mode 100644 index 496c875..0000000 --- a/provider/internal/testdata/symlinks/linkedToDeep.txt +++ /dev/null @@ -1 +0,0 @@ -World! diff --git a/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedFromTop.txt b/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedFromTop.txt deleted file mode 100644 index 496c875..0000000 --- a/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedFromTop.txt +++ /dev/null @@ -1 +0,0 @@ -World! diff --git a/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedToTop.txt b/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedToTop.txt deleted file mode 100644 index 552085f..0000000 --- a/provider/internal/testdata/symlinks/proxy-for-sub/dir/linkedToTop.txt +++ /dev/null @@ -1 +0,0 @@ -Hello, diff --git a/provider/internal/testdata/symlinks/sub/dir/linkedFromTop.txt b/provider/internal/testdata/symlinks/sub/dir/linkedFromTop.txt deleted file mode 100644 index 496c875..0000000 --- a/provider/internal/testdata/symlinks/sub/dir/linkedFromTop.txt +++ /dev/null @@ -1 +0,0 @@ -World! diff --git a/provider/internal/testdata/symlinks/sub/dir/linkedToTop.txt b/provider/internal/testdata/symlinks/sub/dir/linkedToTop.txt deleted file mode 100644 index 552085f..0000000 --- a/provider/internal/testdata/symlinks/sub/dir/linkedToTop.txt +++ /dev/null @@ -1 +0,0 @@ -Hello, diff --git a/provider/internal/testdata/unignores/basedir-with-unignored-files/.dockerignore b/provider/internal/testdata/unignores/basedir-with-unignored-files/.dockerignore deleted file mode 100644 index e0ed9eb..0000000 --- a/provider/internal/testdata/unignores/basedir-with-unignored-files/.dockerignore +++ /dev/null @@ -1,6 +0,0 @@ -# Ignore everything -* - -#Unignore everything -!Dockerfile -!top-dir diff --git a/provider/internal/testdata/unignores/basedir-with-unignored-files/Dockerfile b/provider/internal/testdata/unignores/basedir-with-unignored-files/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/unignores/basedir-with-unignored-files/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/unignores/basedir-with-unignored-files/top-dir/subdir/app.js b/provider/internal/testdata/unignores/basedir-with-unignored-files/top-dir/subdir/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/unignores/basedir-with-unignored-files/top-dir/subdir/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/unignores/basedir-with-unignored-files/top-dir/subdir/ignored.js b/provider/internal/testdata/unignores/basedir-with-unignored-files/top-dir/subdir/ignored.js deleted file mode 100644 index e69de29..0000000 diff --git a/provider/internal/testdata/unignores/basedir/Dockerfile b/provider/internal/testdata/unignores/basedir/Dockerfile deleted file mode 100644 index a79d7c2..0000000 --- a/provider/internal/testdata/unignores/basedir/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM scratch - -WORKDIR /app - -COPY ./bar . diff --git a/provider/internal/testdata/unignores/basedir/top-dir/subdir/app.js b/provider/internal/testdata/unignores/basedir/top-dir/subdir/app.js deleted file mode 100644 index 2254108..0000000 --- a/provider/internal/testdata/unignores/basedir/top-dir/subdir/app.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Pulumi 💜"); diff --git a/provider/internal/testdata/unignores/basedir/top-dir/subdir/ignored.js b/provider/internal/testdata/unignores/basedir/top-dir/subdir/ignored.js deleted file mode 100644 index e69de29..0000000 diff --git a/provider/provider.go b/provider/provider.go deleted file mode 100644 index 5d157aa..0000000 --- a/provider/provider.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package provider - -import ( - "context" - "encoding/json" - - "github.com/pulumi/pulumi-docker-build/provider/internal" - "github.com/pulumi/pulumi-docker-build/provider/internal/deprecated" - gp "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" - "github.com/pulumi/pulumi/pkg/v3/resource/provider" - rpc "github.com/pulumi/pulumi/sdk/v3/proto/go" -) - -// Version is initialized by the Go linker to contain the semver of this build. -var Version = "0.0.1" - -// Name needs to match $PACK in Makefile. -const Name string = "docker-build" - -// Serve launches the gRPC server for the resource provider. -func Serve() error { - return provider.Main(Name, New) -} - -// New creates a new provider. -func New(host *provider.HostClient) (rpc.ResourceProviderServer, error) { - return gp.RawServer(Name, Version, configurableProvider(internal.NewBuildxProvider()))(host) -} - -// configurableProvider is a workaround for -// https://github.com/pulumi/pulumi-go-provider/issues/171 and -// In short, our SDKs send provider Configure requests as simple strings -// instead of rich objects. We don't want to preserve this behavior in -// pulumi-go-provider, but we also haven't updated SDKs yet to send rich types. -// -// If you find yourself in a position where you need to copy this -- STOP! -// https://github.com/pulumi/pulumi/pull/15032 should be merged with this fix. -func configurableProvider(p gp.Provider) gp.Provider { - configure := p.Configure - - p.Configure = func(ctx context.Context, req gp.ConfigureRequest) error { - r, err := p.GetSchema(ctx, gp.GetSchemaRequest{Version: 0}) - if err != nil { - return err - } - spec := schema.PackageSpec{} - err = json.Unmarshal([]byte(r.Schema), &spec) - if err != nil { - return err - } - - ce := deprecated.New(spec.Config) - if props, err := ce.UnmarshalProperties(req.Args); err == nil { - req.Args = props - } - return configure(ctx, req) - } - - return p -} diff --git a/provider/provider_test.go b/provider/provider_test.go deleted file mode 100644 index 81e0d06..0000000 --- a/provider/provider_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2024, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package provider - -import ( - "context" - "testing" - - "github.com/blang/semver" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - emptypb "google.golang.org/protobuf/types/known/emptypb" - "google.golang.org/protobuf/types/known/structpb" - - "github.com/pulumi/pulumi-docker-build/provider/internal" - provider "github.com/pulumi/pulumi-go-provider" - "github.com/pulumi/pulumi-go-provider/integration" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" -) - -// TestConfigure checks backwards-compatibility with SDKs that still send -// provider config as JSON-encoded strings. This test can be removed once we -// upgrade to a version of pulumi that no longer generates SDKs with that -// behavior. -func TestConfigure(t *testing.T) { - t.Parallel() - - p := configurableProvider(internal.NewBuildxProvider()) - - args, err := structpb.NewStruct(map[string]any{ - "registries": `[{"address": "docker.io"}]`, - }) - require.NoError(t, err) - argsMap, err := plugin.UnmarshalProperties(args, plugin.MarshalOptions{}) - require.NoError(t, err) - - s := integration.NewServer("docker-build", semver.Version{Major: 0}, p) - err = s.Configure(provider.ConfigureRequest{ - Args: argsMap, - }) - 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) -} diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs deleted file mode 100644 index d7a95be..0000000 --- a/sdk/dotnet/Config/Config.cs +++ /dev/null @@ -1,72 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Immutable; - -namespace Pulumi.DockerBuild -{ - public static class Config - { - [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification = - "Double underscore prefix used to avoid conflicts with variable names.")] - private sealed class __Value - { - private readonly Func _getter; - private T _value = default!; - private bool _set; - - public __Value(Func getter) - { - _getter = getter; - } - - public T Get() => _set ? _value : _getter(); - - public void Set(T value) - { - _value = value; - _set = true; - } - } - - private static readonly global::Pulumi.Config __config = new global::Pulumi.Config("docker-build"); - - private static readonly __Value _host = new __Value(() => __config.Get("host") ?? Utilities.GetEnv("DOCKER_HOST") ?? ""); - /// - /// The build daemon's address. - /// - public static string? Host - { - get => _host.Get(); - set => _host.Set(value); - } - - private static readonly __Value> _registries = new __Value>(() => __config.GetObject>("registries")); - public static ImmutableArray Registries - { - get => _registries.Get(); - set => _registries.Set(value); - } - - public static class Types - { - - public class Registry - { - /// - /// The registry's address (e.g. "docker.io"). - /// - public string Address { get; set; } - /// - /// Password or token for the registry. - /// - public string? Password { get; set; } = null!; - /// - /// Username for the registry. - /// - public string? Username { get; set; } = null!; - } - } - } -} diff --git a/sdk/dotnet/Config/README.md b/sdk/dotnet/Config/README.md deleted file mode 100644 index a778720..0000000 --- a/sdk/dotnet/Config/README.md +++ /dev/null @@ -1 +0,0 @@ -A Pulumi provider for building modern Docker images with buildx and BuildKit. diff --git a/sdk/dotnet/Enums.cs b/sdk/dotnet/Enums.cs deleted file mode 100644 index 3c68d7c..0000000 --- a/sdk/dotnet/Enums.cs +++ /dev/null @@ -1,173 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.ComponentModel; -using Pulumi; - -namespace Pulumi.DockerBuild -{ - [EnumType] - public readonly struct CacheMode : IEquatable - { - private readonly string _value; - - private CacheMode(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - /// - /// Only layers that are exported into the resulting image are cached. - /// - public static CacheMode Min { get; } = new CacheMode("min"); - /// - /// All layers are cached, even those of intermediate steps. - /// - public static CacheMode Max { get; } = new CacheMode("max"); - - public static bool operator ==(CacheMode left, CacheMode right) => left.Equals(right); - public static bool operator !=(CacheMode left, CacheMode right) => !left.Equals(right); - - public static explicit operator string(CacheMode value) => value._value; - - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object? obj) => obj is CacheMode other && Equals(other); - public bool Equals(CacheMode other) => string.Equals(_value, other._value, StringComparison.Ordinal); - - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - - public override string ToString() => _value; - } - - [EnumType] - public readonly struct CompressionType : IEquatable - { - private readonly string _value; - - private CompressionType(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - /// - /// Use `gzip` for compression. - /// - public static CompressionType Gzip { get; } = new CompressionType("gzip"); - /// - /// Use `estargz` for compression. - /// - public static CompressionType Estargz { get; } = new CompressionType("estargz"); - /// - /// Use `zstd` for compression. - /// - public static CompressionType Zstd { get; } = new CompressionType("zstd"); - - public static bool operator ==(CompressionType left, CompressionType right) => left.Equals(right); - public static bool operator !=(CompressionType left, CompressionType right) => !left.Equals(right); - - public static explicit operator string(CompressionType value) => value._value; - - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object? obj) => obj is CompressionType other && Equals(other); - public bool Equals(CompressionType other) => string.Equals(_value, other._value, StringComparison.Ordinal); - - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - - public override string ToString() => _value; - } - - [EnumType] - public readonly struct NetworkMode : IEquatable - { - private readonly string _value; - - private NetworkMode(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - /// - /// The default sandbox network mode. - /// - public static NetworkMode @Default { get; } = new NetworkMode("default"); - /// - /// Host network mode. - /// - public static NetworkMode Host { get; } = new NetworkMode("host"); - /// - /// Disable network access. - /// - public static NetworkMode None { get; } = new NetworkMode("none"); - - public static bool operator ==(NetworkMode left, NetworkMode right) => left.Equals(right); - public static bool operator !=(NetworkMode left, NetworkMode right) => !left.Equals(right); - - public static explicit operator string(NetworkMode value) => value._value; - - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object? obj) => obj is NetworkMode other && Equals(other); - public bool Equals(NetworkMode other) => string.Equals(_value, other._value, StringComparison.Ordinal); - - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - - public override string ToString() => _value; - } - - [EnumType] - public readonly struct Platform : IEquatable - { - private readonly string _value; - - private Platform(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - public static Platform Darwin_386 { get; } = new Platform("darwin/386"); - public static Platform Darwin_amd64 { get; } = new Platform("darwin/amd64"); - public static Platform Darwin_arm { get; } = new Platform("darwin/arm"); - public static Platform Darwin_arm64 { get; } = new Platform("darwin/arm64"); - public static Platform Dragonfly_amd64 { get; } = new Platform("dragonfly/amd64"); - public static Platform Freebsd_386 { get; } = new Platform("freebsd/386"); - public static Platform Freebsd_amd64 { get; } = new Platform("freebsd/amd64"); - public static Platform Freebsd_arm { get; } = new Platform("freebsd/arm"); - public static Platform Linux_386 { get; } = new Platform("linux/386"); - public static Platform Linux_amd64 { get; } = new Platform("linux/amd64"); - public static Platform Linux_arm { get; } = new Platform("linux/arm"); - public static Platform Linux_arm64 { get; } = new Platform("linux/arm64"); - public static Platform Linux_mips64 { get; } = new Platform("linux/mips64"); - public static Platform Linux_mips64le { get; } = new Platform("linux/mips64le"); - public static Platform Linux_ppc64le { get; } = new Platform("linux/ppc64le"); - public static Platform Linux_riscv64 { get; } = new Platform("linux/riscv64"); - public static Platform Linux_s390x { get; } = new Platform("linux/s390x"); - public static Platform Netbsd_386 { get; } = new Platform("netbsd/386"); - public static Platform Netbsd_amd64 { get; } = new Platform("netbsd/amd64"); - public static Platform Netbsd_arm { get; } = new Platform("netbsd/arm"); - public static Platform Openbsd_386 { get; } = new Platform("openbsd/386"); - public static Platform Openbsd_amd64 { get; } = new Platform("openbsd/amd64"); - public static Platform Openbsd_arm { get; } = new Platform("openbsd/arm"); - public static Platform Plan9_386 { get; } = new Platform("plan9/386"); - public static Platform Plan9_amd64 { get; } = new Platform("plan9/amd64"); - public static Platform Solaris_amd64 { get; } = new Platform("solaris/amd64"); - public static Platform Windows_386 { get; } = new Platform("windows/386"); - public static Platform Windows_amd64 { get; } = new Platform("windows/amd64"); - - public static bool operator ==(Platform left, Platform right) => left.Equals(right); - public static bool operator !=(Platform left, Platform right) => !left.Equals(right); - - public static explicit operator string(Platform value) => value._value; - - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object? obj) => obj is Platform other && Equals(other); - public bool Equals(Platform other) => string.Equals(_value, other._value, StringComparison.Ordinal); - - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - - public override string ToString() => _value; - } -} diff --git a/sdk/dotnet/Image.cs b/sdk/dotnet/Image.cs deleted file mode 100644 index 419a0fb..0000000 --- a/sdk/dotnet/Image.cs +++ /dev/null @@ -1,1120 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild -{ - /// - /// A Docker image built using buildx -- Docker's interface to the improved - /// BuildKit backend. - /// - /// ## Stability - /// - /// **This resource is pre-1.0 and in public preview.** - /// - /// We will strive to keep APIs and behavior as stable as possible, but we - /// cannot guarantee stability until version 1.0. - /// - /// ## Migrating Pulumi Docker v3 and v4 Image resources - /// - /// This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. - /// Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - /// - /// ### Behavioral differences - /// - /// There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - /// - /// #### Previews - /// - /// Version `3.x` of the Pulumi Docker provider always builds images during preview operations. - /// This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - /// - /// Version `4.x` changed build-on-preview behavior to be opt-in. - /// By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. - /// Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - /// - /// The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. - /// This behavior can be changed by specifying `buildOnPreview`. - /// - /// #### Push behavior - /// - /// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. - /// They expose a `skipPush: true` option to disable pushing. - /// - /// This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - /// - /// To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). - /// Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - /// - /// #### Secrets - /// - /// Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - /// - /// Version `4.x` of the Pulumi Docker provider does not support secrets. - /// - /// The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. - /// Instead, they should be passed directly as values. - /// (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) - /// Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - /// - /// #### Caching - /// - /// Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. - /// It builds targets individually and pushes them to separate images for caching. - /// - /// Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - /// - /// Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. - /// This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - /// - /// The `Image` resource delegates all caching behavior to Docker. - /// `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - /// - /// #### Outputs - /// - /// Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. - /// In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - /// - /// Unlike earlier providers the `Image` resource can push multiple tags. - /// As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. - /// If multiple tags were pushed this uses one at random. - /// - /// If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - /// - /// #### Tag deletion and refreshes - /// - /// Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - /// - /// The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. - /// If any are missing a subsequent `update` will push them. - /// - /// When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. - /// Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). - /// Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - /// - /// Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - /// - /// ### Example migration - /// - /// Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - /// - /// The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. - /// After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. - /// In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - /// - /// The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. - /// It it is shown with parameters similar to the `v3` example for completeness. - /// - /// ## Example Usage - /// - /// ## Example Usage - /// ### Push to AWS ECR with caching - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Aws = Pulumi.Aws; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var ecrRepository = new Aws.Ecr.Repository("ecr-repository"); - /// - /// var authToken = Aws.Ecr.GetAuthorizationToken.Invoke(new() - /// { - /// RegistryId = ecrRepository.RegistryId, - /// }); - /// - /// var myImage = new DockerBuild.Image("my-image", new() - /// { - /// CacheFrom = new[] - /// { - /// new DockerBuild.Inputs.CacheFromArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - /// { - /// Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:cache"), - /// }, - /// }, - /// }, - /// CacheTo = new[] - /// { - /// new DockerBuild.Inputs.CacheToArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheToRegistryArgs - /// { - /// ImageManifest = true, - /// OciMediaTypes = true, - /// Ref = ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:cache"), - /// }, - /// }, - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "./app", - /// }, - /// Push = true, - /// Registries = new[] - /// { - /// new DockerBuild.Inputs.RegistryArgs - /// { - /// Address = ecrRepository.RepositoryUrl, - /// Password = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.Password), - /// Username = authToken.Apply(getAuthorizationTokenResult => getAuthorizationTokenResult.UserName), - /// }, - /// }, - /// Tags = new[] - /// { - /// ecrRepository.RepositoryUrl.Apply(repositoryUrl => $"{repositoryUrl}:latest"), - /// }, - /// }); - /// - /// return new Dictionary<string, object?> - /// { - /// ["ref"] = myImage.Ref, - /// }; - /// }); - /// - /// ``` - /// ### Multi-platform image - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Platforms = new[] - /// { - /// DockerBuild.Platform.Plan9_amd64, - /// DockerBuild.Platform.Plan9_386, - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Registry export - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Push = true, - /// Registries = new[] - /// { - /// new DockerBuild.Inputs.RegistryArgs - /// { - /// Address = "docker.io", - /// Password = dockerHubPassword, - /// Username = "pulumibot", - /// }, - /// }, - /// Tags = new[] - /// { - /// "docker.io/pulumi/pulumi:3.107.0", - /// }, - /// }); - /// - /// return new Dictionary<string, object?> - /// { - /// ["ref"] = myImage.Ref, - /// }; - /// }); - /// - /// ``` - /// ### Caching - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// CacheFrom = new[] - /// { - /// new DockerBuild.Inputs.CacheFromArgs - /// { - /// Local = new DockerBuild.Inputs.CacheFromLocalArgs - /// { - /// Src = "tmp/cache", - /// }, - /// }, - /// }, - /// CacheTo = new[] - /// { - /// new DockerBuild.Inputs.CacheToArgs - /// { - /// Local = new DockerBuild.Inputs.CacheToLocalArgs - /// { - /// Dest = "tmp/cache", - /// Mode = DockerBuild.CacheMode.Max, - /// }, - /// }, - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Docker Build Cloud - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Builder = new DockerBuild.Inputs.BuilderConfigArgs - /// { - /// Name = "cloud-builder-name", - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Exec = true, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Build arguments - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// BuildArgs = - /// { - /// { "SET_ME_TO_TRUE", "true" }, - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Build target - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Push = false, - /// Target = "build-me", - /// }); - /// - /// }); - /// - /// ``` - /// ### Named contexts - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// Named = - /// { - /// { "golang:latest", new DockerBuild.Inputs.ContextArgs - /// { - /// Location = "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - /// } }, - /// }, - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Remote context - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Inline Dockerfile - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Dockerfile = new DockerBuild.Inputs.DockerfileArgs - /// { - /// Inline = @"FROM busybox - /// COPY hello.c ./ - /// ", - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Remote context - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "https://github.com/docker-library/hello-world.git", - /// }, - /// Dockerfile = new DockerBuild.Inputs.DockerfileArgs - /// { - /// Location = "app/Dockerfile", - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// ### Local export - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var image = new DockerBuild.Image("image", new() - /// { - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Exports = new[] - /// { - /// new DockerBuild.Inputs.ExportArgs - /// { - /// Docker = new DockerBuild.Inputs.ExportDockerArgs - /// { - /// Tar = true, - /// }, - /// }, - /// }, - /// Push = false, - /// }); - /// - /// }); - /// - /// ``` - /// - [DockerBuildResourceType("docker-build:index:Image")] - public partial class Image : global::Pulumi.CustomResource - { - /// - /// Custom `host:ip` mappings to use during the build. - /// - /// Equivalent to Docker's `--add-host` flag. - /// - [Output("addHosts")] - public Output> AddHosts { get; private set; } = null!; - - /// - /// `ARG` names and values to set during the build. - /// - /// These variables are accessed like environment variables inside `RUN` - /// instructions. - /// - /// Build arguments are persisted in the image, so you should use `secrets` - /// if these arguments are sensitive. - /// - /// Equivalent to Docker's `--build-arg` flag. - /// - [Output("buildArgs")] - public Output?> BuildArgs { get; private set; } = null!; - - /// - /// Setting this to `false` will always skip image builds during previews, - /// and setting it to `true` will always build images during previews. - /// - /// Images built during previews are never exported to registries, however - /// cache manifests are still exported. - /// - /// On-disk Dockerfiles are always validated for syntactic correctness - /// regardless of this setting. - /// - /// Defaults to `true` as a safeguard against broken images merging as part - /// of CI pipelines. - /// - [Output("buildOnPreview")] - public Output BuildOnPreview { get; private set; } = null!; - - /// - /// Builder configuration. - /// - [Output("builder")] - public Output Builder { get; private set; } = null!; - - /// - /// Cache export configuration. - /// - /// Equivalent to Docker's `--cache-from` flag. - /// - [Output("cacheFrom")] - public Output> CacheFrom { get; private set; } = null!; - - /// - /// Cache import configuration. - /// - /// Equivalent to Docker's `--cache-to` flag. - /// - [Output("cacheTo")] - public Output> CacheTo { get; private set; } = null!; - - /// - /// Build context settings. Defaults to the current directory. - /// - /// Equivalent to Docker's `PATH | URL | -` positional argument. - /// - [Output("context")] - public Output Context { get; private set; } = null!; - - /// - /// A preliminary hash of the image's build context. - /// - /// Pulumi uses this to determine if an image _may_ need to be re-built. - /// - [Output("contextHash")] - public Output ContextHash { get; private set; } = null!; - - /// - /// A SHA256 digest of the image if it was exported to a registry or - /// elsewhere. - /// - /// Empty if the image was not exported. - /// - /// Registry images can be referenced precisely as `<tag>@<digest>`. The - /// `ref` output provides one such reference as a convenience. - /// - [Output("digest")] - public Output Digest { get; private set; } = null!; - - /// - /// Dockerfile settings. - /// - /// Equivalent to Docker's `--file` flag. - /// - [Output("dockerfile")] - public Output Dockerfile { get; private set; } = null!; - - /// - /// Use `exec` mode to build this image. - /// - /// By default the provider embeds a v25 Docker client with v0.12 buildx - /// support. This helps ensure consistent behavior across environments and - /// is compatible with alternative build backends (e.g. `buildkitd`), but - /// it may not be desirable if you require a specific version of buildx. - /// For example you may want to run a custom `docker-buildx` binary with - /// support for [Docker Build - /// Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - /// - /// When this is set to `true` the provider will instead execute the - /// `docker-buildx` binary directly to perform its operations. The user is - /// responsible for ensuring this binary exists, with correct permissions - /// and pre-configured builders, at a path Docker expects (e.g. - /// `~/.docker/cli-plugins`). - /// - /// Debugging `exec` mode may be more difficult as Pulumi will not be able - /// to surface fine-grained errors and warnings. Additionally credentials - /// are temporarily written to disk in order to provide them to the - /// `docker-buildx` binary. - /// - [Output("exec")] - public Output Exec { get; private set; } = null!; - - /// - /// Controls where images are persisted after building. - /// - /// Images are only stored in the local cache unless `exports` are - /// explicitly configured. - /// - /// Exporting to multiple destinations requires a daemon running BuildKit - /// 0.13 or later. - /// - /// Equivalent to Docker's `--output` flag. - /// - [Output("exports")] - public Output> Exports { get; private set; } = null!; - - /// - /// Attach arbitrary key/value metadata to the image. - /// - /// Equivalent to Docker's `--label` flag. - /// - [Output("labels")] - public Output?> Labels { get; private set; } = null!; - - /// - /// When `true` the build will automatically include a `docker` export. - /// - /// Defaults to `false`. - /// - /// Equivalent to Docker's `--load` flag. - /// - [Output("load")] - public Output Load { get; private set; } = null!; - - /// - /// Set the network mode for `RUN` instructions. Defaults to `default`. - /// - /// For custom networks, configure your builder with `--driver-opt network=...`. - /// - /// Equivalent to Docker's `--network` flag. - /// - [Output("network")] - public Output Network { get; private set; } = null!; - - /// - /// Do not import cache manifests when building the image. - /// - /// Equivalent to Docker's `--no-cache` flag. - /// - [Output("noCache")] - public Output NoCache { get; private set; } = null!; - - /// - /// Set target platform(s) for the build. Defaults to the host's platform. - /// - /// Equivalent to Docker's `--platform` flag. - /// - [Output("platforms")] - public Output> Platforms { get; private set; } = null!; - - /// - /// Always pull referenced images. - /// - /// Equivalent to Docker's `--pull` flag. - /// - [Output("pull")] - public Output Pull { get; private set; } = null!; - - /// - /// When `true` the build will automatically include a `registry` export. - /// - /// Defaults to `false`. - /// - /// Equivalent to Docker's `--push` flag. - /// - [Output("push")] - public Output Push { get; private set; } = null!; - - /// - /// If the image was pushed to any registries then this will contain a - /// single fully-qualified tag including the build's digest. - /// - /// If the image had tags but was not exported, this will take on a value - /// of one of those tags. - /// - /// This will be empty if the image had no exports and no tags. - /// - /// This is only for convenience and may not be appropriate for situations - /// where multiple tags or registries are involved. In those cases this - /// output is not guaranteed to be stable. - /// - /// For more control over tags consumed by downstream resources you should - /// use the `digest` output. - /// - [Output("ref")] - public Output Ref { get; private set; } = null!; - - /// - /// Registry credentials. Required if reading or exporting to private - /// repositories. - /// - /// Credentials are kept in-memory and do not pollute pre-existing - /// credentials on the host. - /// - /// Similar to `docker login`. - /// - [Output("registries")] - public Output> Registries { get; private set; } = null!; - - /// - /// A mapping of secret names to their corresponding values. - /// - /// Unlike the Docker CLI, these can be passed by value and do not need to - /// exist on-disk or in environment variables. - /// - /// Build arguments and environment variables are persistent in the final - /// image, so you should use this for sensitive values. - /// - /// Similar to Docker's `--secret` flag. - /// - [Output("secrets")] - public Output?> Secrets { get; private set; } = null!; - - /// - /// SSH agent socket or keys to expose to the build. - /// - /// Equivalent to Docker's `--ssh` flag. - /// - [Output("ssh")] - public Output> Ssh { get; private set; } = null!; - - /// - /// Name and optionally a tag (format: `name:tag`). - /// - /// If exporting to a registry, the name should include the fully qualified - /// registry address (e.g. `docker.io/pulumi/pulumi:latest`). - /// - /// Equivalent to Docker's `--tag` flag. - /// - [Output("tags")] - public Output> Tags { get; private set; } = null!; - - /// - /// Set the target build stage(s) to build. - /// - /// If not specified all targets will be built by default. - /// - /// Equivalent to Docker's `--target` flag. - /// - [Output("target")] - public Output Target { get; private set; } = null!; - - - /// - /// Create a Image resource with the given unique name, arguments, and options. - /// - /// - /// The unique name of the resource - /// The arguments used to populate this resource's properties - /// A bag of options that control this resource's behavior - public Image(string name, ImageArgs args, CustomResourceOptions? options = null) - : base("docker-build:index:Image", name, args ?? new ImageArgs(), MakeResourceOptions(options, "")) - { - } - - private Image(string name, Input id, CustomResourceOptions? options = null) - : base("docker-build:index:Image", name, null, MakeResourceOptions(options, id)) - { - } - - private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) - { - var defaultOptions = new CustomResourceOptions - { - Version = Utilities.Version, - }; - var merged = CustomResourceOptions.Merge(defaultOptions, options); - // Override the ID if one was specified for consistency with other language SDKs. - merged.Id = id ?? merged.Id; - return merged; - } - /// - /// Get an existing Image resource's state with the given name, ID, and optional extra - /// properties used to qualify the lookup. - /// - /// - /// The unique name of the resulting resource. - /// The unique provider ID of the resource to lookup. - /// A bag of options that control this resource's behavior - public static Image Get(string name, Input id, CustomResourceOptions? options = null) - { - return new Image(name, id, options); - } - } - - public sealed class ImageArgs : global::Pulumi.ResourceArgs - { - [Input("addHosts")] - private InputList? _addHosts; - - /// - /// Custom `host:ip` mappings to use during the build. - /// - /// Equivalent to Docker's `--add-host` flag. - /// - public InputList AddHosts - { - get => _addHosts ?? (_addHosts = new InputList()); - set => _addHosts = value; - } - - [Input("buildArgs")] - private InputMap? _buildArgs; - - /// - /// `ARG` names and values to set during the build. - /// - /// These variables are accessed like environment variables inside `RUN` - /// instructions. - /// - /// Build arguments are persisted in the image, so you should use `secrets` - /// if these arguments are sensitive. - /// - /// Equivalent to Docker's `--build-arg` flag. - /// - public InputMap BuildArgs - { - get => _buildArgs ?? (_buildArgs = new InputMap()); - set => _buildArgs = value; - } - - /// - /// Setting this to `false` will always skip image builds during previews, - /// and setting it to `true` will always build images during previews. - /// - /// Images built during previews are never exported to registries, however - /// cache manifests are still exported. - /// - /// On-disk Dockerfiles are always validated for syntactic correctness - /// regardless of this setting. - /// - /// Defaults to `true` as a safeguard against broken images merging as part - /// of CI pipelines. - /// - [Input("buildOnPreview")] - public Input? BuildOnPreview { get; set; } - - /// - /// Builder configuration. - /// - [Input("builder")] - public Input? Builder { get; set; } - - [Input("cacheFrom")] - private InputList? _cacheFrom; - - /// - /// Cache export configuration. - /// - /// Equivalent to Docker's `--cache-from` flag. - /// - public InputList CacheFrom - { - get => _cacheFrom ?? (_cacheFrom = new InputList()); - set => _cacheFrom = value; - } - - [Input("cacheTo")] - private InputList? _cacheTo; - - /// - /// Cache import configuration. - /// - /// Equivalent to Docker's `--cache-to` flag. - /// - public InputList CacheTo - { - get => _cacheTo ?? (_cacheTo = new InputList()); - set => _cacheTo = value; - } - - /// - /// Build context settings. Defaults to the current directory. - /// - /// Equivalent to Docker's `PATH | URL | -` positional argument. - /// - [Input("context")] - public Input? Context { get; set; } - - /// - /// Dockerfile settings. - /// - /// Equivalent to Docker's `--file` flag. - /// - [Input("dockerfile")] - public Input? Dockerfile { get; set; } - - /// - /// Use `exec` mode to build this image. - /// - /// By default the provider embeds a v25 Docker client with v0.12 buildx - /// support. This helps ensure consistent behavior across environments and - /// is compatible with alternative build backends (e.g. `buildkitd`), but - /// it may not be desirable if you require a specific version of buildx. - /// For example you may want to run a custom `docker-buildx` binary with - /// support for [Docker Build - /// Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - /// - /// When this is set to `true` the provider will instead execute the - /// `docker-buildx` binary directly to perform its operations. The user is - /// responsible for ensuring this binary exists, with correct permissions - /// and pre-configured builders, at a path Docker expects (e.g. - /// `~/.docker/cli-plugins`). - /// - /// Debugging `exec` mode may be more difficult as Pulumi will not be able - /// to surface fine-grained errors and warnings. Additionally credentials - /// are temporarily written to disk in order to provide them to the - /// `docker-buildx` binary. - /// - [Input("exec")] - public Input? Exec { get; set; } - - [Input("exports")] - private InputList? _exports; - - /// - /// Controls where images are persisted after building. - /// - /// Images are only stored in the local cache unless `exports` are - /// explicitly configured. - /// - /// Exporting to multiple destinations requires a daemon running BuildKit - /// 0.13 or later. - /// - /// Equivalent to Docker's `--output` flag. - /// - public InputList Exports - { - get => _exports ?? (_exports = new InputList()); - set => _exports = value; - } - - [Input("labels")] - private InputMap? _labels; - - /// - /// Attach arbitrary key/value metadata to the image. - /// - /// Equivalent to Docker's `--label` flag. - /// - public InputMap Labels - { - get => _labels ?? (_labels = new InputMap()); - set => _labels = value; - } - - /// - /// When `true` the build will automatically include a `docker` export. - /// - /// Defaults to `false`. - /// - /// Equivalent to Docker's `--load` flag. - /// - [Input("load")] - public Input? Load { get; set; } - - /// - /// Set the network mode for `RUN` instructions. Defaults to `default`. - /// - /// For custom networks, configure your builder with `--driver-opt network=...`. - /// - /// Equivalent to Docker's `--network` flag. - /// - [Input("network")] - public Input? Network { get; set; } - - /// - /// Do not import cache manifests when building the image. - /// - /// Equivalent to Docker's `--no-cache` flag. - /// - [Input("noCache")] - public Input? NoCache { get; set; } - - [Input("platforms")] - private InputList? _platforms; - - /// - /// Set target platform(s) for the build. Defaults to the host's platform. - /// - /// Equivalent to Docker's `--platform` flag. - /// - public InputList Platforms - { - get => _platforms ?? (_platforms = new InputList()); - set => _platforms = value; - } - - /// - /// Always pull referenced images. - /// - /// Equivalent to Docker's `--pull` flag. - /// - [Input("pull")] - public Input? Pull { get; set; } - - /// - /// When `true` the build will automatically include a `registry` export. - /// - /// Defaults to `false`. - /// - /// Equivalent to Docker's `--push` flag. - /// - [Input("push", required: true)] - public Input Push { get; set; } = null!; - - [Input("registries")] - private InputList? _registries; - - /// - /// Registry credentials. Required if reading or exporting to private - /// repositories. - /// - /// Credentials are kept in-memory and do not pollute pre-existing - /// credentials on the host. - /// - /// Similar to `docker login`. - /// - public InputList Registries - { - get => _registries ?? (_registries = new InputList()); - set => _registries = value; - } - - [Input("secrets")] - private InputMap? _secrets; - - /// - /// A mapping of secret names to their corresponding values. - /// - /// Unlike the Docker CLI, these can be passed by value and do not need to - /// exist on-disk or in environment variables. - /// - /// Build arguments and environment variables are persistent in the final - /// image, so you should use this for sensitive values. - /// - /// Similar to Docker's `--secret` flag. - /// - public InputMap Secrets - { - get => _secrets ?? (_secrets = new InputMap()); - set => _secrets = value; - } - - [Input("ssh")] - private InputList? _ssh; - - /// - /// SSH agent socket or keys to expose to the build. - /// - /// Equivalent to Docker's `--ssh` flag. - /// - public InputList Ssh - { - get => _ssh ?? (_ssh = new InputList()); - set => _ssh = value; - } - - [Input("tags")] - private InputList? _tags; - - /// - /// Name and optionally a tag (format: `name:tag`). - /// - /// If exporting to a registry, the name should include the fully qualified - /// registry address (e.g. `docker.io/pulumi/pulumi:latest`). - /// - /// Equivalent to Docker's `--tag` flag. - /// - public InputList Tags - { - get => _tags ?? (_tags = new InputList()); - set => _tags = value; - } - - /// - /// Set the target build stage(s) to build. - /// - /// If not specified all targets will be built by default. - /// - /// Equivalent to Docker's `--target` flag. - /// - [Input("target")] - public Input? Target { get; set; } - - public ImageArgs() - { - BuildOnPreview = true; - Network = Pulumi.DockerBuild.NetworkMode.@Default; - } - public static new ImageArgs Empty => new ImageArgs(); - } -} diff --git a/sdk/dotnet/Index.cs b/sdk/dotnet/Index.cs deleted file mode 100644 index 9d113b0..0000000 --- a/sdk/dotnet/Index.cs +++ /dev/null @@ -1,259 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild -{ - /// - /// A wrapper around `docker buildx imagetools create` to create an index - /// (or manifest list) referencing one or more existing images. - /// - /// In most cases you do not need an `Index` to build a multi-platform - /// image -- specifying multiple platforms on the `Image` will handle this - /// for you automatically. - /// - /// However, as of April 2024, building multi-platform images _with - /// caching_ will only export a cache for one platform at a time (see [this - /// discussion](https://github.com/docker/buildx/discussions/1382) for more - /// details). - /// - /// Therefore this resource can be helpful if you are building - /// multi-platform images with caching: each platform can be built and - /// cached separately, and an `Index` can join them all together. An - /// example of this is shown below. - /// - /// This resource creates an OCI image index or a Docker manifest list - /// depending on the media types of the source images. - /// - /// ## Example Usage - /// ### Multi-platform registry caching - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using DockerBuild = Pulumi.DockerBuild; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var amd64 = new DockerBuild.Image("amd64", new() - /// { - /// CacheFrom = new[] - /// { - /// new DockerBuild.Inputs.CacheFromArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - /// { - /// Ref = "docker.io/pulumi/pulumi:cache-amd64", - /// }, - /// }, - /// }, - /// CacheTo = new[] - /// { - /// new DockerBuild.Inputs.CacheToArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheToRegistryArgs - /// { - /// Mode = DockerBuild.CacheMode.Max, - /// Ref = "docker.io/pulumi/pulumi:cache-amd64", - /// }, - /// }, - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Platforms = new[] - /// { - /// DockerBuild.Platform.Linux_amd64, - /// }, - /// Tags = new[] - /// { - /// "docker.io/pulumi/pulumi:3.107.0-amd64", - /// }, - /// }); - /// - /// var arm64 = new DockerBuild.Image("arm64", new() - /// { - /// CacheFrom = new[] - /// { - /// new DockerBuild.Inputs.CacheFromArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheFromRegistryArgs - /// { - /// Ref = "docker.io/pulumi/pulumi:cache-arm64", - /// }, - /// }, - /// }, - /// CacheTo = new[] - /// { - /// new DockerBuild.Inputs.CacheToArgs - /// { - /// Registry = new DockerBuild.Inputs.CacheToRegistryArgs - /// { - /// Mode = DockerBuild.CacheMode.Max, - /// Ref = "docker.io/pulumi/pulumi:cache-arm64", - /// }, - /// }, - /// }, - /// Context = new DockerBuild.Inputs.BuildContextArgs - /// { - /// Location = "app", - /// }, - /// Platforms = new[] - /// { - /// DockerBuild.Platform.Linux_arm64, - /// }, - /// Tags = new[] - /// { - /// "docker.io/pulumi/pulumi:3.107.0-arm64", - /// }, - /// }); - /// - /// var index = new DockerBuild.Index("index", new() - /// { - /// Sources = new[] - /// { - /// amd64.Ref, - /// arm64.Ref, - /// }, - /// Tag = "docker.io/pulumi/pulumi:3.107.0", - /// }); - /// - /// return new Dictionary<string, object?> - /// { - /// ["ref"] = index.Ref, - /// }; - /// }); - /// - /// ``` - /// - [DockerBuildResourceType("docker-build:index:Index")] - public partial class Index : global::Pulumi.CustomResource - { - /// - /// If true, push the index to the target registry. - /// - /// Defaults to `true`. - /// - [Output("push")] - public Output Push { get; private set; } = null!; - - /// - /// The pushed tag with digest. - /// - /// Identical to the tag if the index was not pushed. - /// - [Output("ref")] - public Output Ref { get; private set; } = null!; - - /// - /// Authentication for the registry where the tagged index will be pushed. - /// - /// Credentials can also be included with the provider's configuration. - /// - [Output("registry")] - public Output Registry { get; private set; } = null!; - - /// - /// Existing images to include in the index. - /// - [Output("sources")] - public Output> Sources { get; private set; } = null!; - - /// - /// The tag to apply to the index. - /// - [Output("tag")] - public Output Tag { get; private set; } = null!; - - - /// - /// Create a Index resource with the given unique name, arguments, and options. - /// - /// - /// The unique name of the resource - /// The arguments used to populate this resource's properties - /// A bag of options that control this resource's behavior - public Index(string name, IndexArgs args, CustomResourceOptions? options = null) - : base("docker-build:index:Index", name, args ?? new IndexArgs(), MakeResourceOptions(options, "")) - { - } - - private Index(string name, Input id, CustomResourceOptions? options = null) - : base("docker-build:index:Index", name, null, MakeResourceOptions(options, id)) - { - } - - private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) - { - var defaultOptions = new CustomResourceOptions - { - Version = Utilities.Version, - }; - var merged = CustomResourceOptions.Merge(defaultOptions, options); - // Override the ID if one was specified for consistency with other language SDKs. - merged.Id = id ?? merged.Id; - return merged; - } - /// - /// Get an existing Index resource's state with the given name, ID, and optional extra - /// properties used to qualify the lookup. - /// - /// - /// The unique name of the resulting resource. - /// The unique provider ID of the resource to lookup. - /// A bag of options that control this resource's behavior - public static Index Get(string name, Input id, CustomResourceOptions? options = null) - { - return new Index(name, id, options); - } - } - - public sealed class IndexArgs : global::Pulumi.ResourceArgs - { - /// - /// If true, push the index to the target registry. - /// - /// Defaults to `true`. - /// - [Input("push")] - public Input? Push { get; set; } - - /// - /// Authentication for the registry where the tagged index will be pushed. - /// - /// Credentials can also be included with the provider's configuration. - /// - [Input("registry")] - public Input? Registry { get; set; } - - [Input("sources", required: true)] - private InputList? _sources; - - /// - /// Existing images to include in the index. - /// - public InputList Sources - { - get => _sources ?? (_sources = new InputList()); - set => _sources = value; - } - - /// - /// The tag to apply to the index. - /// - [Input("tag", required: true)] - public Input Tag { get; set; } = null!; - - public IndexArgs() - { - Push = true; - } - public static new IndexArgs Empty => new IndexArgs(); - } -} diff --git a/sdk/dotnet/Inputs/BuildContextArgs.cs b/sdk/dotnet/Inputs/BuildContextArgs.cs deleted file mode 100644 index 77120c7..0000000 --- a/sdk/dotnet/Inputs/BuildContextArgs.cs +++ /dev/null @@ -1,50 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class BuildContextArgs : global::Pulumi.ResourceArgs - { - /// - /// Resources to use for build context. - /// - /// The location can be: - /// * A relative or absolute path to a local directory (`.`, `./app`, - /// `/app`, etc.). - /// * A remote URL of a Git repository, tarball, or plain text file - /// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - /// etc.). - /// - [Input("location", required: true)] - public Input Location { get; set; } = null!; - - [Input("named")] - private InputMap? _named; - - /// - /// Additional build contexts to use. - /// - /// These contexts are accessed with `FROM name` or `--from=name` - /// statements when using Dockerfile 1.4+ syntax. - /// - /// Values can be local paths, HTTP URLs, or `docker-image://` images. - /// - public InputMap Named - { - get => _named ?? (_named = new InputMap()); - set => _named = value; - } - - public BuildContextArgs() - { - } - public static new BuildContextArgs Empty => new BuildContextArgs(); - } -} diff --git a/sdk/dotnet/Inputs/BuilderConfigArgs.cs b/sdk/dotnet/Inputs/BuilderConfigArgs.cs deleted file mode 100644 index a252385..0000000 --- a/sdk/dotnet/Inputs/BuilderConfigArgs.cs +++ /dev/null @@ -1,31 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class BuilderConfigArgs : global::Pulumi.ResourceArgs - { - /// - /// Name of an existing buildx builder to use. - /// - /// Only `docker-container`, `kubernetes`, or `remote` drivers are - /// supported. The legacy `docker` driver is not supported. - /// - /// Equivalent to Docker's `--builder` flag. - /// - [Input("name")] - public Input? Name { get; set; } - - public BuilderConfigArgs() - { - } - public static new BuilderConfigArgs Empty => new BuilderConfigArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromArgs.cs b/sdk/dotnet/Inputs/CacheFromArgs.cs deleted file mode 100644 index f4de87a..0000000 --- a/sdk/dotnet/Inputs/CacheFromArgs.cs +++ /dev/null @@ -1,67 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromArgs : global::Pulumi.ResourceArgs - { - /// - /// Upload build caches to Azure's blob storage service. - /// - [Input("azblob")] - public Input? Azblob { get; set; } - - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - [Input("disabled")] - public Input? Disabled { get; set; } - - /// - /// Recommended for use with GitHub Actions workflows. - /// - /// An action like `crazy-max/ghaction-github-runtime` is recommended to - /// expose appropriate credentials to your GitHub workflow. - /// - [Input("gha")] - public Input? Gha { get; set; } - - /// - /// A simple backend which caches images on your local filesystem. - /// - [Input("local")] - public Input? Local { get; set; } - - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=inline`). - /// - [Input("raw")] - public Input? Raw { get; set; } - - /// - /// Upload build caches to remote registries. - /// - [Input("registry")] - public Input? Registry { get; set; } - - /// - /// Upload build caches to AWS S3 or an S3-compatible services such as - /// MinIO. - /// - [Input("s3")] - public Input? S3 { get; set; } - - public CacheFromArgs() - { - } - public static new CacheFromArgs Empty => new CacheFromArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromAzureBlobArgs.cs b/sdk/dotnet/Inputs/CacheFromAzureBlobArgs.cs deleted file mode 100644 index f5135f6..0000000 --- a/sdk/dotnet/Inputs/CacheFromAzureBlobArgs.cs +++ /dev/null @@ -1,48 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromAzureBlobArgs : global::Pulumi.ResourceArgs - { - /// - /// Base URL of the storage account. - /// - [Input("accountUrl")] - public Input? AccountUrl { get; set; } - - /// - /// The name of the cache image. - /// - [Input("name", required: true)] - public Input Name { get; set; } = null!; - - [Input("secretAccessKey")] - private Input? _secretAccessKey; - - /// - /// Blob storage account key. - /// - public Input? SecretAccessKey - { - get => _secretAccessKey; - set - { - var emptySecret = Output.CreateSecret(0); - _secretAccessKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - public CacheFromAzureBlobArgs() - { - } - public static new CacheFromAzureBlobArgs Empty => new CacheFromAzureBlobArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromGitHubActionsArgs.cs b/sdk/dotnet/Inputs/CacheFromGitHubActionsArgs.cs deleted file mode 100644 index 3dc2fd1..0000000 --- a/sdk/dotnet/Inputs/CacheFromGitHubActionsArgs.cs +++ /dev/null @@ -1,63 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromGitHubActionsArgs : global::Pulumi.ResourceArgs - { - /// - /// The scope to use for cache keys. Defaults to `buildkit`. - /// - /// This should be set if building and caching multiple images in one - /// workflow, otherwise caches will overwrite each other. - /// - [Input("scope")] - public Input? Scope { get; set; } - - [Input("token")] - private Input? _token; - - /// - /// The GitHub Actions token to use. This is not a personal access tokens - /// and is typically generated automatically as part of each job. - /// - /// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public Input? Token - { - get => _token; - set - { - var emptySecret = Output.CreateSecret(0); - _token = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - /// - /// The cache server URL to use for artifacts. - /// - /// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - [Input("url")] - public Input? Url { get; set; } - - public CacheFromGitHubActionsArgs() - { - Scope = Utilities.GetEnv("buildkit") ?? ""; - Token = Utilities.GetEnv("ACTIONS_RUNTIME_TOKEN") ?? ""; - Url = Utilities.GetEnv("ACTIONS_CACHE_URL") ?? ""; - } - public static new CacheFromGitHubActionsArgs Empty => new CacheFromGitHubActionsArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromLocalArgs.cs b/sdk/dotnet/Inputs/CacheFromLocalArgs.cs deleted file mode 100644 index e6e2b4d..0000000 --- a/sdk/dotnet/Inputs/CacheFromLocalArgs.cs +++ /dev/null @@ -1,32 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromLocalArgs : global::Pulumi.ResourceArgs - { - /// - /// Digest of manifest to import. - /// - [Input("digest")] - public Input? Digest { get; set; } - - /// - /// Path of the local directory where cache gets imported from. - /// - [Input("src", required: true)] - public Input Src { get; set; } = null!; - - public CacheFromLocalArgs() - { - } - public static new CacheFromLocalArgs Empty => new CacheFromLocalArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromRegistryArgs.cs b/sdk/dotnet/Inputs/CacheFromRegistryArgs.cs deleted file mode 100644 index b55256f..0000000 --- a/sdk/dotnet/Inputs/CacheFromRegistryArgs.cs +++ /dev/null @@ -1,26 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromRegistryArgs : global::Pulumi.ResourceArgs - { - /// - /// Fully qualified name of the cache image to import. - /// - [Input("ref", required: true)] - public Input Ref { get; set; } = null!; - - public CacheFromRegistryArgs() - { - } - public static new CacheFromRegistryArgs Empty => new CacheFromRegistryArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheFromS3Args.cs b/sdk/dotnet/Inputs/CacheFromS3Args.cs deleted file mode 100644 index 9ee8132..0000000 --- a/sdk/dotnet/Inputs/CacheFromS3Args.cs +++ /dev/null @@ -1,104 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheFromS3Args : global::Pulumi.ResourceArgs - { - /// - /// Defaults to `$AWS_ACCESS_KEY_ID`. - /// - [Input("accessKeyId")] - public Input? AccessKeyId { get; set; } - - /// - /// Prefix to prepend to blob filenames. - /// - [Input("blobsPrefix")] - public Input? BlobsPrefix { get; set; } - - /// - /// Name of the S3 bucket. - /// - [Input("bucket", required: true)] - public Input Bucket { get; set; } = null!; - - /// - /// Endpoint of the S3 bucket. - /// - [Input("endpointUrl")] - public Input? EndpointUrl { get; set; } - - /// - /// Prefix to prepend on manifest filenames. - /// - [Input("manifestsPrefix")] - public Input? ManifestsPrefix { get; set; } - - /// - /// Name of the cache image. - /// - [Input("name")] - public Input? Name { get; set; } - - /// - /// The geographic location of the bucket. Defaults to `$AWS_REGION`. - /// - [Input("region", required: true)] - public Input Region { get; set; } = null!; - - [Input("secretAccessKey")] - private Input? _secretAccessKey; - - /// - /// Defaults to `$AWS_SECRET_ACCESS_KEY`. - /// - public Input? SecretAccessKey - { - get => _secretAccessKey; - set - { - var emptySecret = Output.CreateSecret(0); - _secretAccessKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - [Input("sessionToken")] - private Input? _sessionToken; - - /// - /// Defaults to `$AWS_SESSION_TOKEN`. - /// - public Input? SessionToken - { - get => _sessionToken; - set - { - var emptySecret = Output.CreateSecret(0); - _sessionToken = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - /// - /// Uses `bucket` in the URL instead of hostname when `true`. - /// - [Input("usePathStyle")] - public Input? UsePathStyle { get; set; } - - public CacheFromS3Args() - { - AccessKeyId = Utilities.GetEnv("AWS_ACCESS_KEY_ID") ?? ""; - Region = Utilities.GetEnv("AWS_REGION") ?? ""; - SecretAccessKey = Utilities.GetEnv("AWS_SECRET_ACCESS_KEY") ?? ""; - SessionToken = Utilities.GetEnv("AWS_SESSION_TOKEN") ?? ""; - } - public static new CacheFromS3Args Empty => new CacheFromS3Args(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToArgs.cs b/sdk/dotnet/Inputs/CacheToArgs.cs deleted file mode 100644 index 5c0ede6..0000000 --- a/sdk/dotnet/Inputs/CacheToArgs.cs +++ /dev/null @@ -1,75 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToArgs : global::Pulumi.ResourceArgs - { - /// - /// Push cache to Azure's blob storage service. - /// - [Input("azblob")] - public Input? Azblob { get; set; } - - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - [Input("disabled")] - public Input? Disabled { get; set; } - - /// - /// Recommended for use with GitHub Actions workflows. - /// - /// An action like `crazy-max/ghaction-github-runtime` is recommended to - /// expose appropriate credentials to your GitHub workflow. - /// - [Input("gha")] - public Input? Gha { get; set; } - - /// - /// The inline cache storage backend is the simplest implementation to get - /// started with, but it does not handle multi-stage builds. Consider the - /// `registry` cache backend instead. - /// - [Input("inline")] - public Input? Inline { get; set; } - - /// - /// A simple backend which caches imagines on your local filesystem. - /// - [Input("local")] - public Input? Local { get; set; } - - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=inline`) - /// - [Input("raw")] - public Input? Raw { get; set; } - - /// - /// Push caches to remote registries. Incompatible with the `docker` build - /// driver. - /// - [Input("registry")] - public Input? Registry { get; set; } - - /// - /// Push cache to AWS S3 or S3-compatible services such as MinIO. - /// - [Input("s3")] - public Input? S3 { get; set; } - - public CacheToArgs() - { - } - public static new CacheToArgs Empty => new CacheToArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToAzureBlobArgs.cs b/sdk/dotnet/Inputs/CacheToAzureBlobArgs.cs deleted file mode 100644 index 5b85076..0000000 --- a/sdk/dotnet/Inputs/CacheToAzureBlobArgs.cs +++ /dev/null @@ -1,62 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToAzureBlobArgs : global::Pulumi.ResourceArgs - { - /// - /// Base URL of the storage account. - /// - [Input("accountUrl")] - public Input? AccountUrl { get; set; } - - /// - /// Ignore errors caused by failed cache exports. - /// - [Input("ignoreError")] - public Input? IgnoreError { get; set; } - - /// - /// The cache mode to use. Defaults to `min`. - /// - [Input("mode")] - public Input? Mode { get; set; } - - /// - /// The name of the cache image. - /// - [Input("name", required: true)] - public Input Name { get; set; } = null!; - - [Input("secretAccessKey")] - private Input? _secretAccessKey; - - /// - /// Blob storage account key. - /// - public Input? SecretAccessKey - { - get => _secretAccessKey; - set - { - var emptySecret = Output.CreateSecret(0); - _secretAccessKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - public CacheToAzureBlobArgs() - { - IgnoreError = false; - Mode = Pulumi.DockerBuild.CacheMode.Min; - } - public static new CacheToAzureBlobArgs Empty => new CacheToAzureBlobArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToGitHubActionsArgs.cs b/sdk/dotnet/Inputs/CacheToGitHubActionsArgs.cs deleted file mode 100644 index 7d25a6b..0000000 --- a/sdk/dotnet/Inputs/CacheToGitHubActionsArgs.cs +++ /dev/null @@ -1,77 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToGitHubActionsArgs : global::Pulumi.ResourceArgs - { - /// - /// Ignore errors caused by failed cache exports. - /// - [Input("ignoreError")] - public Input? IgnoreError { get; set; } - - /// - /// The cache mode to use. Defaults to `min`. - /// - [Input("mode")] - public Input? Mode { get; set; } - - /// - /// The scope to use for cache keys. Defaults to `buildkit`. - /// - /// This should be set if building and caching multiple images in one - /// workflow, otherwise caches will overwrite each other. - /// - [Input("scope")] - public Input? Scope { get; set; } - - [Input("token")] - private Input? _token; - - /// - /// The GitHub Actions token to use. This is not a personal access tokens - /// and is typically generated automatically as part of each job. - /// - /// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public Input? Token - { - get => _token; - set - { - var emptySecret = Output.CreateSecret(0); - _token = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - /// - /// The cache server URL to use for artifacts. - /// - /// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - [Input("url")] - public Input? Url { get; set; } - - public CacheToGitHubActionsArgs() - { - IgnoreError = false; - Mode = Pulumi.DockerBuild.CacheMode.Min; - Scope = Utilities.GetEnv("buildkit") ?? ""; - Token = Utilities.GetEnv("ACTIONS_RUNTIME_TOKEN") ?? ""; - Url = Utilities.GetEnv("ACTIONS_CACHE_URL") ?? ""; - } - public static new CacheToGitHubActionsArgs Empty => new CacheToGitHubActionsArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToInlineArgs.cs b/sdk/dotnet/Inputs/CacheToInlineArgs.cs deleted file mode 100644 index bb996af..0000000 --- a/sdk/dotnet/Inputs/CacheToInlineArgs.cs +++ /dev/null @@ -1,23 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - /// - /// Include an inline cache with the exported image. - /// - public sealed class CacheToInlineArgs : global::Pulumi.ResourceArgs - { - public CacheToInlineArgs() - { - } - public static new CacheToInlineArgs Empty => new CacheToInlineArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToLocalArgs.cs b/sdk/dotnet/Inputs/CacheToLocalArgs.cs deleted file mode 100644 index 806b3fd..0000000 --- a/sdk/dotnet/Inputs/CacheToLocalArgs.cs +++ /dev/null @@ -1,61 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToLocalArgs : global::Pulumi.ResourceArgs - { - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// Path of the local directory to export the cache. - /// - [Input("dest", required: true)] - public Input Dest { get; set; } = null!; - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - /// - /// Ignore errors caused by failed cache exports. - /// - [Input("ignoreError")] - public Input? IgnoreError { get; set; } - - /// - /// The cache mode to use. Defaults to `min`. - /// - [Input("mode")] - public Input? Mode { get; set; } - - public CacheToLocalArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - IgnoreError = false; - Mode = Pulumi.DockerBuild.CacheMode.Min; - } - public static new CacheToLocalArgs Empty => new CacheToLocalArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToRegistryArgs.cs b/sdk/dotnet/Inputs/CacheToRegistryArgs.cs deleted file mode 100644 index e26cafb..0000000 --- a/sdk/dotnet/Inputs/CacheToRegistryArgs.cs +++ /dev/null @@ -1,82 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToRegistryArgs : global::Pulumi.ResourceArgs - { - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - /// - /// Ignore errors caused by failed cache exports. - /// - [Input("ignoreError")] - public Input? IgnoreError { get; set; } - - /// - /// Export cache manifest as an OCI-compatible image manifest instead of a - /// manifest list. Requires `ociMediaTypes` to also be `true`. - /// - /// Some registries like AWS ECR will not work with caching if this is - /// `false`. - /// - /// Defaults to `false` to match Docker's default behavior. - /// - [Input("imageManifest")] - public Input? ImageManifest { get; set; } - - /// - /// The cache mode to use. Defaults to `min`. - /// - [Input("mode")] - public Input? Mode { get; set; } - - /// - /// Whether to use OCI media types in exported manifests. Defaults to - /// `true`. - /// - [Input("ociMediaTypes")] - public Input? OciMediaTypes { get; set; } - - /// - /// Fully qualified name of the cache image to import. - /// - [Input("ref", required: true)] - public Input Ref { get; set; } = null!; - - public CacheToRegistryArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - IgnoreError = false; - ImageManifest = false; - Mode = Pulumi.DockerBuild.CacheMode.Min; - OciMediaTypes = true; - } - public static new CacheToRegistryArgs Empty => new CacheToRegistryArgs(); - } -} diff --git a/sdk/dotnet/Inputs/CacheToS3Args.cs b/sdk/dotnet/Inputs/CacheToS3Args.cs deleted file mode 100644 index f0aa4a6..0000000 --- a/sdk/dotnet/Inputs/CacheToS3Args.cs +++ /dev/null @@ -1,118 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class CacheToS3Args : global::Pulumi.ResourceArgs - { - /// - /// Defaults to `$AWS_ACCESS_KEY_ID`. - /// - [Input("accessKeyId")] - public Input? AccessKeyId { get; set; } - - /// - /// Prefix to prepend to blob filenames. - /// - [Input("blobsPrefix")] - public Input? BlobsPrefix { get; set; } - - /// - /// Name of the S3 bucket. - /// - [Input("bucket", required: true)] - public Input Bucket { get; set; } = null!; - - /// - /// Endpoint of the S3 bucket. - /// - [Input("endpointUrl")] - public Input? EndpointUrl { get; set; } - - /// - /// Ignore errors caused by failed cache exports. - /// - [Input("ignoreError")] - public Input? IgnoreError { get; set; } - - /// - /// Prefix to prepend on manifest filenames. - /// - [Input("manifestsPrefix")] - public Input? ManifestsPrefix { get; set; } - - /// - /// The cache mode to use. Defaults to `min`. - /// - [Input("mode")] - public Input? Mode { get; set; } - - /// - /// Name of the cache image. - /// - [Input("name")] - public Input? Name { get; set; } - - /// - /// The geographic location of the bucket. Defaults to `$AWS_REGION`. - /// - [Input("region", required: true)] - public Input Region { get; set; } = null!; - - [Input("secretAccessKey")] - private Input? _secretAccessKey; - - /// - /// Defaults to `$AWS_SECRET_ACCESS_KEY`. - /// - public Input? SecretAccessKey - { - get => _secretAccessKey; - set - { - var emptySecret = Output.CreateSecret(0); - _secretAccessKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - [Input("sessionToken")] - private Input? _sessionToken; - - /// - /// Defaults to `$AWS_SESSION_TOKEN`. - /// - public Input? SessionToken - { - get => _sessionToken; - set - { - var emptySecret = Output.CreateSecret(0); - _sessionToken = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - /// - /// Uses `bucket` in the URL instead of hostname when `true`. - /// - [Input("usePathStyle")] - public Input? UsePathStyle { get; set; } - - public CacheToS3Args() - { - AccessKeyId = Utilities.GetEnv("AWS_ACCESS_KEY_ID") ?? ""; - IgnoreError = false; - Mode = Pulumi.DockerBuild.CacheMode.Min; - Region = Utilities.GetEnv("AWS_REGION") ?? ""; - SecretAccessKey = Utilities.GetEnv("AWS_SECRET_ACCESS_KEY") ?? ""; - SessionToken = Utilities.GetEnv("AWS_SESSION_TOKEN") ?? ""; - } - public static new CacheToS3Args Empty => new CacheToS3Args(); - } -} diff --git a/sdk/dotnet/Inputs/ContextArgs.cs b/sdk/dotnet/Inputs/ContextArgs.cs deleted file mode 100644 index e567e23..0000000 --- a/sdk/dotnet/Inputs/ContextArgs.cs +++ /dev/null @@ -1,33 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ContextArgs : global::Pulumi.ResourceArgs - { - /// - /// Resources to use for build context. - /// - /// The location can be: - /// * A relative or absolute path to a local directory (`.`, `./app`, - /// `/app`, etc.). - /// * A remote URL of a Git repository, tarball, or plain text file - /// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - /// etc.). - /// - [Input("location", required: true)] - public Input Location { get; set; } = null!; - - public ContextArgs() - { - } - public static new ContextArgs Empty => new ContextArgs(); - } -} diff --git a/sdk/dotnet/Inputs/DockerfileArgs.cs b/sdk/dotnet/Inputs/DockerfileArgs.cs deleted file mode 100644 index e787b5a..0000000 --- a/sdk/dotnet/Inputs/DockerfileArgs.cs +++ /dev/null @@ -1,42 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class DockerfileArgs : global::Pulumi.ResourceArgs - { - /// - /// Raw Dockerfile contents. - /// - /// Conflicts with `location`. - /// - /// Equivalent to invoking Docker with `-f -`. - /// - [Input("inline")] - public Input? Inline { get; set; } - - /// - /// Location of the Dockerfile to use. - /// - /// Can be a relative or absolute path to a local file, or a remote URL. - /// - /// Defaults to `${context.location}/Dockerfile` if context is on-disk. - /// - /// Conflicts with `inline`. - /// - [Input("location")] - public Input? Location { get; set; } - - public DockerfileArgs() - { - } - public static new DockerfileArgs Empty => new DockerfileArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportArgs.cs b/sdk/dotnet/Inputs/ExportArgs.cs deleted file mode 100644 index 7ac5b81..0000000 --- a/sdk/dotnet/Inputs/ExportArgs.cs +++ /dev/null @@ -1,76 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportArgs : global::Pulumi.ResourceArgs - { - /// - /// A no-op export. Helpful for silencing the 'no exports' warning if you - /// just want to populate caches. - /// - [Input("cacheonly")] - public Input? Cacheonly { get; set; } - - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - [Input("disabled")] - public Input? Disabled { get; set; } - - /// - /// Export as a Docker image layout. - /// - [Input("docker")] - public Input? Docker { get; set; } - - /// - /// Outputs the build result into a container image format. - /// - [Input("image")] - public Input? Image { get; set; } - - /// - /// Export to a local directory as files and directories. - /// - [Input("local")] - public Input? Local { get; set; } - - /// - /// Identical to the Docker exporter but uses OCI media types by default. - /// - [Input("oci")] - public Input? Oci { get; set; } - - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=docker`) - /// - [Input("raw")] - public Input? Raw { get; set; } - - /// - /// Identical to the Image exporter, but pushes by default. - /// - [Input("registry")] - public Input? Registry { get; set; } - - /// - /// Export to a local directory as a tarball. - /// - [Input("tar")] - public Input? Tar { get; set; } - - public ExportArgs() - { - } - public static new ExportArgs Empty => new ExportArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportCacheOnlyArgs.cs b/sdk/dotnet/Inputs/ExportCacheOnlyArgs.cs deleted file mode 100644 index 213dde1..0000000 --- a/sdk/dotnet/Inputs/ExportCacheOnlyArgs.cs +++ /dev/null @@ -1,20 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportCacheOnlyArgs : global::Pulumi.ResourceArgs - { - public ExportCacheOnlyArgs() - { - } - public static new ExportCacheOnlyArgs Empty => new ExportCacheOnlyArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportDockerArgs.cs b/sdk/dotnet/Inputs/ExportDockerArgs.cs deleted file mode 100644 index 194723a..0000000 --- a/sdk/dotnet/Inputs/ExportDockerArgs.cs +++ /dev/null @@ -1,85 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportDockerArgs : global::Pulumi.ResourceArgs - { - [Input("annotations")] - private InputMap? _annotations; - - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public InputMap Annotations - { - get => _annotations ?? (_annotations = new InputMap()); - set => _annotations = value; - } - - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// The local export path. - /// - [Input("dest")] - public Input? Dest { get; set; } - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - [Input("names")] - private InputList? _names; - - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public InputList Names - { - get => _names ?? (_names = new InputList()); - set => _names = value; - } - - /// - /// Use OCI media types in exporter manifests. - /// - [Input("ociMediaTypes")] - public Input? OciMediaTypes { get; set; } - - /// - /// Bundle the output into a tarball layout. - /// - [Input("tar")] - public Input? Tar { get; set; } - - public ExportDockerArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - OciMediaTypes = false; - Tar = true; - } - public static new ExportDockerArgs Empty => new ExportDockerArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportImageArgs.cs b/sdk/dotnet/Inputs/ExportImageArgs.cs deleted file mode 100644 index 25bd9bf..0000000 --- a/sdk/dotnet/Inputs/ExportImageArgs.cs +++ /dev/null @@ -1,122 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportImageArgs : global::Pulumi.ResourceArgs - { - [Input("annotations")] - private InputMap? _annotations; - - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public InputMap Annotations - { - get => _annotations ?? (_annotations = new InputMap()); - set => _annotations = value; - } - - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// Name image with `prefix@<digest>`, used for anonymous images. - /// - [Input("danglingNamePrefix")] - public Input? DanglingNamePrefix { get; set; } - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - /// - /// Allow pushing to an insecure registry. - /// - [Input("insecure")] - public Input? Insecure { get; set; } - - /// - /// Add additional canonical name (`name@<digest>`). - /// - [Input("nameCanonical")] - public Input? NameCanonical { get; set; } - - [Input("names")] - private InputList? _names; - - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public InputList Names - { - get => _names ?? (_names = new InputList()); - set => _names = value; - } - - /// - /// Use OCI media types in exporter manifests. - /// - [Input("ociMediaTypes")] - public Input? OciMediaTypes { get; set; } - - /// - /// Push after creating the image. Defaults to `false`. - /// - [Input("push")] - public Input? Push { get; set; } - - /// - /// Push image without name. - /// - [Input("pushByDigest")] - public Input? PushByDigest { get; set; } - - /// - /// Store resulting images to the worker's image store and ensure all of - /// its blobs are in the content store. - /// - /// Defaults to `true`. - /// - /// Ignored if the worker doesn't have image store (when using OCI workers, - /// for example). - /// - [Input("store")] - public Input? Store { get; set; } - - /// - /// Unpack image after creation (for use with containerd). Defaults to - /// `false`. - /// - [Input("unpack")] - public Input? Unpack { get; set; } - - public ExportImageArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - OciMediaTypes = false; - Store = true; - } - public static new ExportImageArgs Empty => new ExportImageArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportLocalArgs.cs b/sdk/dotnet/Inputs/ExportLocalArgs.cs deleted file mode 100644 index cb29334..0000000 --- a/sdk/dotnet/Inputs/ExportLocalArgs.cs +++ /dev/null @@ -1,26 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportLocalArgs : global::Pulumi.ResourceArgs - { - /// - /// Output path. - /// - [Input("dest", required: true)] - public Input Dest { get; set; } = null!; - - public ExportLocalArgs() - { - } - public static new ExportLocalArgs Empty => new ExportLocalArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportOCIArgs.cs b/sdk/dotnet/Inputs/ExportOCIArgs.cs deleted file mode 100644 index 1699dc0..0000000 --- a/sdk/dotnet/Inputs/ExportOCIArgs.cs +++ /dev/null @@ -1,85 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportOCIArgs : global::Pulumi.ResourceArgs - { - [Input("annotations")] - private InputMap? _annotations; - - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public InputMap Annotations - { - get => _annotations ?? (_annotations = new InputMap()); - set => _annotations = value; - } - - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// The local export path. - /// - [Input("dest")] - public Input? Dest { get; set; } - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - [Input("names")] - private InputList? _names; - - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public InputList Names - { - get => _names ?? (_names = new InputList()); - set => _names = value; - } - - /// - /// Use OCI media types in exporter manifests. - /// - [Input("ociMediaTypes")] - public Input? OciMediaTypes { get; set; } - - /// - /// Bundle the output into a tarball layout. - /// - [Input("tar")] - public Input? Tar { get; set; } - - public ExportOCIArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - OciMediaTypes = true; - Tar = true; - } - public static new ExportOCIArgs Empty => new ExportOCIArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportRegistryArgs.cs b/sdk/dotnet/Inputs/ExportRegistryArgs.cs deleted file mode 100644 index 5884a30..0000000 --- a/sdk/dotnet/Inputs/ExportRegistryArgs.cs +++ /dev/null @@ -1,123 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportRegistryArgs : global::Pulumi.ResourceArgs - { - [Input("annotations")] - private InputMap? _annotations; - - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public InputMap Annotations - { - get => _annotations ?? (_annotations = new InputMap()); - set => _annotations = value; - } - - /// - /// The compression type to use. - /// - [Input("compression")] - public Input? Compression { get; set; } - - /// - /// Compression level from 0 to 22. - /// - [Input("compressionLevel")] - public Input? CompressionLevel { get; set; } - - /// - /// Name image with `prefix@<digest>`, used for anonymous images. - /// - [Input("danglingNamePrefix")] - public Input? DanglingNamePrefix { get; set; } - - /// - /// Forcefully apply compression. - /// - [Input("forceCompression")] - public Input? ForceCompression { get; set; } - - /// - /// Allow pushing to an insecure registry. - /// - [Input("insecure")] - public Input? Insecure { get; set; } - - /// - /// Add additional canonical name (`name@<digest>`). - /// - [Input("nameCanonical")] - public Input? NameCanonical { get; set; } - - [Input("names")] - private InputList? _names; - - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public InputList Names - { - get => _names ?? (_names = new InputList()); - set => _names = value; - } - - /// - /// Use OCI media types in exporter manifests. - /// - [Input("ociMediaTypes")] - public Input? OciMediaTypes { get; set; } - - /// - /// Push after creating the image. Defaults to `true`. - /// - [Input("push")] - public Input? Push { get; set; } - - /// - /// Push image without name. - /// - [Input("pushByDigest")] - public Input? PushByDigest { get; set; } - - /// - /// Store resulting images to the worker's image store and ensure all of - /// its blobs are in the content store. - /// - /// Defaults to `true`. - /// - /// Ignored if the worker doesn't have image store (when using OCI workers, - /// for example). - /// - [Input("store")] - public Input? Store { get; set; } - - /// - /// Unpack image after creation (for use with containerd). Defaults to - /// `false`. - /// - [Input("unpack")] - public Input? Unpack { get; set; } - - public ExportRegistryArgs() - { - Compression = Pulumi.DockerBuild.CompressionType.Gzip; - CompressionLevel = 0; - ForceCompression = false; - OciMediaTypes = false; - Push = true; - Store = true; - } - public static new ExportRegistryArgs Empty => new ExportRegistryArgs(); - } -} diff --git a/sdk/dotnet/Inputs/ExportTarArgs.cs b/sdk/dotnet/Inputs/ExportTarArgs.cs deleted file mode 100644 index 376d4c9..0000000 --- a/sdk/dotnet/Inputs/ExportTarArgs.cs +++ /dev/null @@ -1,26 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class ExportTarArgs : global::Pulumi.ResourceArgs - { - /// - /// Output path. - /// - [Input("dest", required: true)] - public Input Dest { get; set; } = null!; - - public ExportTarArgs() - { - } - public static new ExportTarArgs Empty => new ExportTarArgs(); - } -} diff --git a/sdk/dotnet/Inputs/RegistryArgs.cs b/sdk/dotnet/Inputs/RegistryArgs.cs deleted file mode 100644 index d058be0..0000000 --- a/sdk/dotnet/Inputs/RegistryArgs.cs +++ /dev/null @@ -1,48 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class RegistryArgs : global::Pulumi.ResourceArgs - { - /// - /// The registry's address (e.g. "docker.io"). - /// - [Input("address", required: true)] - public Input Address { get; set; } = null!; - - [Input("password")] - private Input? _password; - - /// - /// Password or token for the registry. - /// - public Input? Password - { - get => _password; - set - { - var emptySecret = Output.CreateSecret(0); - _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); - } - } - - /// - /// Username for the registry. - /// - [Input("username")] - public Input? Username { get; set; } - - public RegistryArgs() - { - } - public static new RegistryArgs Empty => new RegistryArgs(); - } -} diff --git a/sdk/dotnet/Inputs/SSHArgs.cs b/sdk/dotnet/Inputs/SSHArgs.cs deleted file mode 100644 index c9def6e..0000000 --- a/sdk/dotnet/Inputs/SSHArgs.cs +++ /dev/null @@ -1,48 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Inputs -{ - - public sealed class SSHArgs : global::Pulumi.ResourceArgs - { - /// - /// Useful for distinguishing different servers that are part of the same - /// build. - /// - /// A value of `default` is appropriate if only dealing with a single host. - /// - [Input("id", required: true)] - public Input Id { get; set; } = null!; - - [Input("paths")] - private InputList? _paths; - - /// - /// SSH agent socket or private keys to expose to the build under the given - /// identifier. - /// - /// Defaults to `[$SSH_AUTH_SOCK]`. - /// - /// Note that your keys are **not** automatically added when using an - /// agent. Run `ssh-add -l` locally to confirm which public keys are - /// visible to the agent; these will be exposed to your build. - /// - public InputList Paths - { - get => _paths ?? (_paths = new InputList()); - set => _paths = value; - } - - public SSHArgs() - { - } - public static new SSHArgs Empty => new SSHArgs(); - } -} diff --git a/sdk/dotnet/Outputs/BuildContext.cs b/sdk/dotnet/Outputs/BuildContext.cs deleted file mode 100644 index db1e183..0000000 --- a/sdk/dotnet/Outputs/BuildContext.cs +++ /dev/null @@ -1,47 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class BuildContext - { - /// - /// Resources to use for build context. - /// - /// The location can be: - /// * A relative or absolute path to a local directory (`.`, `./app`, - /// `/app`, etc.). - /// * A remote URL of a Git repository, tarball, or plain text file - /// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - /// etc.). - /// - public readonly string Location; - /// - /// Additional build contexts to use. - /// - /// These contexts are accessed with `FROM name` or `--from=name` - /// statements when using Dockerfile 1.4+ syntax. - /// - /// Values can be local paths, HTTP URLs, or `docker-image://` images. - /// - public readonly ImmutableDictionary? Named; - - [OutputConstructor] - private BuildContext( - string location, - - ImmutableDictionary? named) - { - Location = location; - Named = named; - } - } -} diff --git a/sdk/dotnet/Outputs/BuilderConfig.cs b/sdk/dotnet/Outputs/BuilderConfig.cs deleted file mode 100644 index 9504359..0000000 --- a/sdk/dotnet/Outputs/BuilderConfig.cs +++ /dev/null @@ -1,32 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class BuilderConfig - { - /// - /// Name of an existing buildx builder to use. - /// - /// Only `docker-container`, `kubernetes`, or `remote` drivers are - /// supported. The legacy `docker` driver is not supported. - /// - /// Equivalent to Docker's `--builder` flag. - /// - public readonly string? Name; - - [OutputConstructor] - private BuilderConfig(string? name) - { - Name = name; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFrom.cs b/sdk/dotnet/Outputs/CacheFrom.cs deleted file mode 100644 index def5872..0000000 --- a/sdk/dotnet/Outputs/CacheFrom.cs +++ /dev/null @@ -1,75 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFrom - { - /// - /// Upload build caches to Azure's blob storage service. - /// - public readonly Outputs.CacheFromAzureBlob? Azblob; - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - public readonly bool? Disabled; - /// - /// Recommended for use with GitHub Actions workflows. - /// - /// An action like `crazy-max/ghaction-github-runtime` is recommended to - /// expose appropriate credentials to your GitHub workflow. - /// - public readonly Outputs.CacheFromGitHubActions? Gha; - /// - /// A simple backend which caches images on your local filesystem. - /// - public readonly Outputs.CacheFromLocal? Local; - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=inline`). - /// - public readonly string? Raw; - /// - /// Upload build caches to remote registries. - /// - public readonly Outputs.CacheFromRegistry? Registry; - /// - /// Upload build caches to AWS S3 or an S3-compatible services such as - /// MinIO. - /// - public readonly Outputs.CacheFromS3? S3; - - [OutputConstructor] - private CacheFrom( - Outputs.CacheFromAzureBlob? azblob, - - bool? disabled, - - Outputs.CacheFromGitHubActions? gha, - - Outputs.CacheFromLocal? local, - - string? raw, - - Outputs.CacheFromRegistry? registry, - - Outputs.CacheFromS3? s3) - { - Azblob = azblob; - Disabled = disabled; - Gha = gha; - Local = local; - Raw = raw; - Registry = registry; - S3 = s3; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFromAzureBlob.cs b/sdk/dotnet/Outputs/CacheFromAzureBlob.cs deleted file mode 100644 index 5f14148..0000000 --- a/sdk/dotnet/Outputs/CacheFromAzureBlob.cs +++ /dev/null @@ -1,42 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFromAzureBlob - { - /// - /// Base URL of the storage account. - /// - public readonly string? AccountUrl; - /// - /// The name of the cache image. - /// - public readonly string Name; - /// - /// Blob storage account key. - /// - public readonly string? SecretAccessKey; - - [OutputConstructor] - private CacheFromAzureBlob( - string? accountUrl, - - string name, - - string? secretAccessKey) - { - AccountUrl = accountUrl; - Name = name; - SecretAccessKey = secretAccessKey; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFromGitHubActions.cs b/sdk/dotnet/Outputs/CacheFromGitHubActions.cs deleted file mode 100644 index d13db31..0000000 --- a/sdk/dotnet/Outputs/CacheFromGitHubActions.cs +++ /dev/null @@ -1,54 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFromGitHubActions - { - /// - /// The scope to use for cache keys. Defaults to `buildkit`. - /// - /// This should be set if building and caching multiple images in one - /// workflow, otherwise caches will overwrite each other. - /// - public readonly string? Scope; - /// - /// The GitHub Actions token to use. This is not a personal access tokens - /// and is typically generated automatically as part of each job. - /// - /// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public readonly string? Token; - /// - /// The cache server URL to use for artifacts. - /// - /// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public readonly string? Url; - - [OutputConstructor] - private CacheFromGitHubActions( - string? scope, - - string? token, - - string? url) - { - Scope = scope; - Token = token; - Url = url; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFromLocal.cs b/sdk/dotnet/Outputs/CacheFromLocal.cs deleted file mode 100644 index dca9d07..0000000 --- a/sdk/dotnet/Outputs/CacheFromLocal.cs +++ /dev/null @@ -1,35 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFromLocal - { - /// - /// Digest of manifest to import. - /// - public readonly string? Digest; - /// - /// Path of the local directory where cache gets imported from. - /// - public readonly string Src; - - [OutputConstructor] - private CacheFromLocal( - string? digest, - - string src) - { - Digest = digest; - Src = src; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFromRegistry.cs b/sdk/dotnet/Outputs/CacheFromRegistry.cs deleted file mode 100644 index 0215928..0000000 --- a/sdk/dotnet/Outputs/CacheFromRegistry.cs +++ /dev/null @@ -1,27 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFromRegistry - { - /// - /// Fully qualified name of the cache image to import. - /// - public readonly string Ref; - - [OutputConstructor] - private CacheFromRegistry(string @ref) - { - Ref = @ref; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheFromS3.cs b/sdk/dotnet/Outputs/CacheFromS3.cs deleted file mode 100644 index 4e62d0d..0000000 --- a/sdk/dotnet/Outputs/CacheFromS3.cs +++ /dev/null @@ -1,91 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheFromS3 - { - /// - /// Defaults to `$AWS_ACCESS_KEY_ID`. - /// - public readonly string? AccessKeyId; - /// - /// Prefix to prepend to blob filenames. - /// - public readonly string? BlobsPrefix; - /// - /// Name of the S3 bucket. - /// - public readonly string Bucket; - /// - /// Endpoint of the S3 bucket. - /// - public readonly string? EndpointUrl; - /// - /// Prefix to prepend on manifest filenames. - /// - public readonly string? ManifestsPrefix; - /// - /// Name of the cache image. - /// - public readonly string? Name; - /// - /// The geographic location of the bucket. Defaults to `$AWS_REGION`. - /// - public readonly string Region; - /// - /// Defaults to `$AWS_SECRET_ACCESS_KEY`. - /// - public readonly string? SecretAccessKey; - /// - /// Defaults to `$AWS_SESSION_TOKEN`. - /// - public readonly string? SessionToken; - /// - /// Uses `bucket` in the URL instead of hostname when `true`. - /// - public readonly bool? UsePathStyle; - - [OutputConstructor] - private CacheFromS3( - string? accessKeyId, - - string? blobsPrefix, - - string bucket, - - string? endpointUrl, - - string? manifestsPrefix, - - string? name, - - string region, - - string? secretAccessKey, - - string? sessionToken, - - bool? usePathStyle) - { - AccessKeyId = accessKeyId; - BlobsPrefix = blobsPrefix; - Bucket = bucket; - EndpointUrl = endpointUrl; - ManifestsPrefix = manifestsPrefix; - Name = name; - Region = region; - SecretAccessKey = secretAccessKey; - SessionToken = sessionToken; - UsePathStyle = usePathStyle; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheTo.cs b/sdk/dotnet/Outputs/CacheTo.cs deleted file mode 100644 index 7a2aa23..0000000 --- a/sdk/dotnet/Outputs/CacheTo.cs +++ /dev/null @@ -1,84 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheTo - { - /// - /// Push cache to Azure's blob storage service. - /// - public readonly Outputs.CacheToAzureBlob? Azblob; - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - public readonly bool? Disabled; - /// - /// Recommended for use with GitHub Actions workflows. - /// - /// An action like `crazy-max/ghaction-github-runtime` is recommended to - /// expose appropriate credentials to your GitHub workflow. - /// - public readonly Outputs.CacheToGitHubActions? Gha; - /// - /// The inline cache storage backend is the simplest implementation to get - /// started with, but it does not handle multi-stage builds. Consider the - /// `registry` cache backend instead. - /// - public readonly Outputs.CacheToInline? Inline; - /// - /// A simple backend which caches imagines on your local filesystem. - /// - public readonly Outputs.CacheToLocal? Local; - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=inline`) - /// - public readonly string? Raw; - /// - /// Push caches to remote registries. Incompatible with the `docker` build - /// driver. - /// - public readonly Outputs.CacheToRegistry? Registry; - /// - /// Push cache to AWS S3 or S3-compatible services such as MinIO. - /// - public readonly Outputs.CacheToS3? S3; - - [OutputConstructor] - private CacheTo( - Outputs.CacheToAzureBlob? azblob, - - bool? disabled, - - Outputs.CacheToGitHubActions? gha, - - Outputs.CacheToInline? inline, - - Outputs.CacheToLocal? local, - - string? raw, - - Outputs.CacheToRegistry? registry, - - Outputs.CacheToS3? s3) - { - Azblob = azblob; - Disabled = disabled; - Gha = gha; - Inline = inline; - Local = local; - Raw = raw; - Registry = registry; - S3 = s3; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToAzureBlob.cs b/sdk/dotnet/Outputs/CacheToAzureBlob.cs deleted file mode 100644 index 25cb62e..0000000 --- a/sdk/dotnet/Outputs/CacheToAzureBlob.cs +++ /dev/null @@ -1,56 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheToAzureBlob - { - /// - /// Base URL of the storage account. - /// - public readonly string? AccountUrl; - /// - /// Ignore errors caused by failed cache exports. - /// - public readonly bool? IgnoreError; - /// - /// The cache mode to use. Defaults to `min`. - /// - public readonly Pulumi.DockerBuild.CacheMode? Mode; - /// - /// The name of the cache image. - /// - public readonly string Name; - /// - /// Blob storage account key. - /// - public readonly string? SecretAccessKey; - - [OutputConstructor] - private CacheToAzureBlob( - string? accountUrl, - - bool? ignoreError, - - Pulumi.DockerBuild.CacheMode? mode, - - string name, - - string? secretAccessKey) - { - AccountUrl = accountUrl; - IgnoreError = ignoreError; - Mode = mode; - Name = name; - SecretAccessKey = secretAccessKey; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToGitHubActions.cs b/sdk/dotnet/Outputs/CacheToGitHubActions.cs deleted file mode 100644 index 6d5da23..0000000 --- a/sdk/dotnet/Outputs/CacheToGitHubActions.cs +++ /dev/null @@ -1,68 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheToGitHubActions - { - /// - /// Ignore errors caused by failed cache exports. - /// - public readonly bool? IgnoreError; - /// - /// The cache mode to use. Defaults to `min`. - /// - public readonly Pulumi.DockerBuild.CacheMode? Mode; - /// - /// The scope to use for cache keys. Defaults to `buildkit`. - /// - /// This should be set if building and caching multiple images in one - /// workflow, otherwise caches will overwrite each other. - /// - public readonly string? Scope; - /// - /// The GitHub Actions token to use. This is not a personal access tokens - /// and is typically generated automatically as part of each job. - /// - /// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public readonly string? Token; - /// - /// The cache server URL to use for artifacts. - /// - /// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - /// `crazy-max/ghaction-github-runtime` is recommended to expose this - /// environment variable to your jobs. - /// - public readonly string? Url; - - [OutputConstructor] - private CacheToGitHubActions( - bool? ignoreError, - - Pulumi.DockerBuild.CacheMode? mode, - - string? scope, - - string? token, - - string? url) - { - IgnoreError = ignoreError; - Mode = mode; - Scope = scope; - Token = token; - Url = url; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToInline.cs b/sdk/dotnet/Outputs/CacheToInline.cs deleted file mode 100644 index 4a37cd5..0000000 --- a/sdk/dotnet/Outputs/CacheToInline.cs +++ /dev/null @@ -1,24 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - /// - /// Include an inline cache with the exported image. - /// - [OutputType] - public sealed class CacheToInline - { - [OutputConstructor] - private CacheToInline() - { - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToLocal.cs b/sdk/dotnet/Outputs/CacheToLocal.cs deleted file mode 100644 index 23ee20f..0000000 --- a/sdk/dotnet/Outputs/CacheToLocal.cs +++ /dev/null @@ -1,63 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheToLocal - { - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// Path of the local directory to export the cache. - /// - public readonly string Dest; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Ignore errors caused by failed cache exports. - /// - public readonly bool? IgnoreError; - /// - /// The cache mode to use. Defaults to `min`. - /// - public readonly Pulumi.DockerBuild.CacheMode? Mode; - - [OutputConstructor] - private CacheToLocal( - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - string dest, - - bool? forceCompression, - - bool? ignoreError, - - Pulumi.DockerBuild.CacheMode? mode) - { - Compression = compression; - CompressionLevel = compressionLevel; - Dest = dest; - ForceCompression = forceCompression; - IgnoreError = ignoreError; - Mode = mode; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToRegistry.cs b/sdk/dotnet/Outputs/CacheToRegistry.cs deleted file mode 100644 index f8197a6..0000000 --- a/sdk/dotnet/Outputs/CacheToRegistry.cs +++ /dev/null @@ -1,84 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheToRegistry - { - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Ignore errors caused by failed cache exports. - /// - public readonly bool? IgnoreError; - /// - /// Export cache manifest as an OCI-compatible image manifest instead of a - /// manifest list. Requires `ociMediaTypes` to also be `true`. - /// - /// Some registries like AWS ECR will not work with caching if this is - /// `false`. - /// - /// Defaults to `false` to match Docker's default behavior. - /// - public readonly bool? ImageManifest; - /// - /// The cache mode to use. Defaults to `min`. - /// - public readonly Pulumi.DockerBuild.CacheMode? Mode; - /// - /// Whether to use OCI media types in exported manifests. Defaults to - /// `true`. - /// - public readonly bool? OciMediaTypes; - /// - /// Fully qualified name of the cache image to import. - /// - public readonly string Ref; - - [OutputConstructor] - private CacheToRegistry( - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - bool? forceCompression, - - bool? ignoreError, - - bool? imageManifest, - - Pulumi.DockerBuild.CacheMode? mode, - - bool? ociMediaTypes, - - string @ref) - { - Compression = compression; - CompressionLevel = compressionLevel; - ForceCompression = forceCompression; - IgnoreError = ignoreError; - ImageManifest = imageManifest; - Mode = mode; - OciMediaTypes = ociMediaTypes; - Ref = @ref; - } - } -} diff --git a/sdk/dotnet/Outputs/CacheToS3.cs b/sdk/dotnet/Outputs/CacheToS3.cs deleted file mode 100644 index b6c94ca..0000000 --- a/sdk/dotnet/Outputs/CacheToS3.cs +++ /dev/null @@ -1,105 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class CacheToS3 - { - /// - /// Defaults to `$AWS_ACCESS_KEY_ID`. - /// - public readonly string? AccessKeyId; - /// - /// Prefix to prepend to blob filenames. - /// - public readonly string? BlobsPrefix; - /// - /// Name of the S3 bucket. - /// - public readonly string Bucket; - /// - /// Endpoint of the S3 bucket. - /// - public readonly string? EndpointUrl; - /// - /// Ignore errors caused by failed cache exports. - /// - public readonly bool? IgnoreError; - /// - /// Prefix to prepend on manifest filenames. - /// - public readonly string? ManifestsPrefix; - /// - /// The cache mode to use. Defaults to `min`. - /// - public readonly Pulumi.DockerBuild.CacheMode? Mode; - /// - /// Name of the cache image. - /// - public readonly string? Name; - /// - /// The geographic location of the bucket. Defaults to `$AWS_REGION`. - /// - public readonly string Region; - /// - /// Defaults to `$AWS_SECRET_ACCESS_KEY`. - /// - public readonly string? SecretAccessKey; - /// - /// Defaults to `$AWS_SESSION_TOKEN`. - /// - public readonly string? SessionToken; - /// - /// Uses `bucket` in the URL instead of hostname when `true`. - /// - public readonly bool? UsePathStyle; - - [OutputConstructor] - private CacheToS3( - string? accessKeyId, - - string? blobsPrefix, - - string bucket, - - string? endpointUrl, - - bool? ignoreError, - - string? manifestsPrefix, - - Pulumi.DockerBuild.CacheMode? mode, - - string? name, - - string region, - - string? secretAccessKey, - - string? sessionToken, - - bool? usePathStyle) - { - AccessKeyId = accessKeyId; - BlobsPrefix = blobsPrefix; - Bucket = bucket; - EndpointUrl = endpointUrl; - IgnoreError = ignoreError; - ManifestsPrefix = manifestsPrefix; - Mode = mode; - Name = name; - Region = region; - SecretAccessKey = secretAccessKey; - SessionToken = sessionToken; - UsePathStyle = usePathStyle; - } - } -} diff --git a/sdk/dotnet/Outputs/Context.cs b/sdk/dotnet/Outputs/Context.cs deleted file mode 100644 index afd954d..0000000 --- a/sdk/dotnet/Outputs/Context.cs +++ /dev/null @@ -1,34 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class Context - { - /// - /// Resources to use for build context. - /// - /// The location can be: - /// * A relative or absolute path to a local directory (`.`, `./app`, - /// `/app`, etc.). - /// * A remote URL of a Git repository, tarball, or plain text file - /// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - /// etc.). - /// - public readonly string Location; - - [OutputConstructor] - private Context(string location) - { - Location = location; - } - } -} diff --git a/sdk/dotnet/Outputs/Dockerfile.cs b/sdk/dotnet/Outputs/Dockerfile.cs deleted file mode 100644 index 141e32d..0000000 --- a/sdk/dotnet/Outputs/Dockerfile.cs +++ /dev/null @@ -1,45 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class Dockerfile - { - /// - /// Raw Dockerfile contents. - /// - /// Conflicts with `location`. - /// - /// Equivalent to invoking Docker with `-f -`. - /// - public readonly string? Inline; - /// - /// Location of the Dockerfile to use. - /// - /// Can be a relative or absolute path to a local file, or a remote URL. - /// - /// Defaults to `${context.location}/Dockerfile` if context is on-disk. - /// - /// Conflicts with `inline`. - /// - public readonly string? Location; - - [OutputConstructor] - private Dockerfile( - string? inline, - - string? location) - { - Inline = inline; - Location = location; - } - } -} diff --git a/sdk/dotnet/Outputs/Export.cs b/sdk/dotnet/Outputs/Export.cs deleted file mode 100644 index 2620d7e..0000000 --- a/sdk/dotnet/Outputs/Export.cs +++ /dev/null @@ -1,86 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class Export - { - /// - /// A no-op export. Helpful for silencing the 'no exports' warning if you - /// just want to populate caches. - /// - public readonly Outputs.ExportCacheOnly? Cacheonly; - /// - /// When `true` this entry will be excluded. Defaults to `false`. - /// - public readonly bool? Disabled; - /// - /// Export as a Docker image layout. - /// - public readonly Outputs.ExportDocker? Docker; - /// - /// Outputs the build result into a container image format. - /// - public readonly Outputs.ExportImage? Image; - /// - /// Export to a local directory as files and directories. - /// - public readonly Outputs.ExportLocal? Local; - /// - /// Identical to the Docker exporter but uses OCI media types by default. - /// - public readonly Outputs.ExportOCI? Oci; - /// - /// A raw string as you would provide it to the Docker CLI (e.g., - /// `type=docker`) - /// - public readonly string? Raw; - /// - /// Identical to the Image exporter, but pushes by default. - /// - public readonly Outputs.ExportRegistry? Registry; - /// - /// Export to a local directory as a tarball. - /// - public readonly Outputs.ExportTar? Tar; - - [OutputConstructor] - private Export( - Outputs.ExportCacheOnly? cacheonly, - - bool? disabled, - - Outputs.ExportDocker? docker, - - Outputs.ExportImage? image, - - Outputs.ExportLocal? local, - - Outputs.ExportOCI? oci, - - string? raw, - - Outputs.ExportRegistry? registry, - - Outputs.ExportTar? tar) - { - Cacheonly = cacheonly; - Disabled = disabled; - Docker = docker; - Image = image; - Local = local; - Oci = oci; - Raw = raw; - Registry = registry; - Tar = tar; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportCacheOnly.cs b/sdk/dotnet/Outputs/ExportCacheOnly.cs deleted file mode 100644 index 74eb8df..0000000 --- a/sdk/dotnet/Outputs/ExportCacheOnly.cs +++ /dev/null @@ -1,21 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportCacheOnly - { - [OutputConstructor] - private ExportCacheOnly() - { - } - } -} diff --git a/sdk/dotnet/Outputs/ExportDocker.cs b/sdk/dotnet/Outputs/ExportDocker.cs deleted file mode 100644 index e6f7723..0000000 --- a/sdk/dotnet/Outputs/ExportDocker.cs +++ /dev/null @@ -1,77 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportDocker - { - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public readonly ImmutableDictionary? Annotations; - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// The local export path. - /// - public readonly string? Dest; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public readonly ImmutableArray Names; - /// - /// Use OCI media types in exporter manifests. - /// - public readonly bool? OciMediaTypes; - /// - /// Bundle the output into a tarball layout. - /// - public readonly bool? Tar; - - [OutputConstructor] - private ExportDocker( - ImmutableDictionary? annotations, - - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - string? dest, - - bool? forceCompression, - - ImmutableArray names, - - bool? ociMediaTypes, - - bool? tar) - { - Annotations = annotations; - Compression = compression; - CompressionLevel = compressionLevel; - Dest = dest; - ForceCompression = forceCompression; - Names = names; - OciMediaTypes = ociMediaTypes; - Tar = tar; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportImage.cs b/sdk/dotnet/Outputs/ExportImage.cs deleted file mode 100644 index f6fee83..0000000 --- a/sdk/dotnet/Outputs/ExportImage.cs +++ /dev/null @@ -1,119 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportImage - { - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public readonly ImmutableDictionary? Annotations; - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// Name image with `prefix@<digest>`, used for anonymous images. - /// - public readonly string? DanglingNamePrefix; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Allow pushing to an insecure registry. - /// - public readonly bool? Insecure; - /// - /// Add additional canonical name (`name@<digest>`). - /// - public readonly bool? NameCanonical; - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public readonly ImmutableArray Names; - /// - /// Use OCI media types in exporter manifests. - /// - public readonly bool? OciMediaTypes; - /// - /// Push after creating the image. Defaults to `false`. - /// - public readonly bool? Push; - /// - /// Push image without name. - /// - public readonly bool? PushByDigest; - /// - /// Store resulting images to the worker's image store and ensure all of - /// its blobs are in the content store. - /// - /// Defaults to `true`. - /// - /// Ignored if the worker doesn't have image store (when using OCI workers, - /// for example). - /// - public readonly bool? Store; - /// - /// Unpack image after creation (for use with containerd). Defaults to - /// `false`. - /// - public readonly bool? Unpack; - - [OutputConstructor] - private ExportImage( - ImmutableDictionary? annotations, - - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - string? danglingNamePrefix, - - bool? forceCompression, - - bool? insecure, - - bool? nameCanonical, - - ImmutableArray names, - - bool? ociMediaTypes, - - bool? push, - - bool? pushByDigest, - - bool? store, - - bool? unpack) - { - Annotations = annotations; - Compression = compression; - CompressionLevel = compressionLevel; - DanglingNamePrefix = danglingNamePrefix; - ForceCompression = forceCompression; - Insecure = insecure; - NameCanonical = nameCanonical; - Names = names; - OciMediaTypes = ociMediaTypes; - Push = push; - PushByDigest = pushByDigest; - Store = store; - Unpack = unpack; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportLocal.cs b/sdk/dotnet/Outputs/ExportLocal.cs deleted file mode 100644 index 3612deb..0000000 --- a/sdk/dotnet/Outputs/ExportLocal.cs +++ /dev/null @@ -1,27 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportLocal - { - /// - /// Output path. - /// - public readonly string Dest; - - [OutputConstructor] - private ExportLocal(string dest) - { - Dest = dest; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportOCI.cs b/sdk/dotnet/Outputs/ExportOCI.cs deleted file mode 100644 index 14dd1d6..0000000 --- a/sdk/dotnet/Outputs/ExportOCI.cs +++ /dev/null @@ -1,77 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportOCI - { - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public readonly ImmutableDictionary? Annotations; - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// The local export path. - /// - public readonly string? Dest; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public readonly ImmutableArray Names; - /// - /// Use OCI media types in exporter manifests. - /// - public readonly bool? OciMediaTypes; - /// - /// Bundle the output into a tarball layout. - /// - public readonly bool? Tar; - - [OutputConstructor] - private ExportOCI( - ImmutableDictionary? annotations, - - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - string? dest, - - bool? forceCompression, - - ImmutableArray names, - - bool? ociMediaTypes, - - bool? tar) - { - Annotations = annotations; - Compression = compression; - CompressionLevel = compressionLevel; - Dest = dest; - ForceCompression = forceCompression; - Names = names; - OciMediaTypes = ociMediaTypes; - Tar = tar; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportRegistry.cs b/sdk/dotnet/Outputs/ExportRegistry.cs deleted file mode 100644 index 6a96dc8..0000000 --- a/sdk/dotnet/Outputs/ExportRegistry.cs +++ /dev/null @@ -1,119 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportRegistry - { - /// - /// Attach an arbitrary key/value annotation to the image. - /// - public readonly ImmutableDictionary? Annotations; - /// - /// The compression type to use. - /// - public readonly Pulumi.DockerBuild.CompressionType? Compression; - /// - /// Compression level from 0 to 22. - /// - public readonly int? CompressionLevel; - /// - /// Name image with `prefix@<digest>`, used for anonymous images. - /// - public readonly string? DanglingNamePrefix; - /// - /// Forcefully apply compression. - /// - public readonly bool? ForceCompression; - /// - /// Allow pushing to an insecure registry. - /// - public readonly bool? Insecure; - /// - /// Add additional canonical name (`name@<digest>`). - /// - public readonly bool? NameCanonical; - /// - /// Specify images names to export. This is overridden if tags are already specified. - /// - public readonly ImmutableArray Names; - /// - /// Use OCI media types in exporter manifests. - /// - public readonly bool? OciMediaTypes; - /// - /// Push after creating the image. Defaults to `true`. - /// - public readonly bool? Push; - /// - /// Push image without name. - /// - public readonly bool? PushByDigest; - /// - /// Store resulting images to the worker's image store and ensure all of - /// its blobs are in the content store. - /// - /// Defaults to `true`. - /// - /// Ignored if the worker doesn't have image store (when using OCI workers, - /// for example). - /// - public readonly bool? Store; - /// - /// Unpack image after creation (for use with containerd). Defaults to - /// `false`. - /// - public readonly bool? Unpack; - - [OutputConstructor] - private ExportRegistry( - ImmutableDictionary? annotations, - - Pulumi.DockerBuild.CompressionType? compression, - - int? compressionLevel, - - string? danglingNamePrefix, - - bool? forceCompression, - - bool? insecure, - - bool? nameCanonical, - - ImmutableArray names, - - bool? ociMediaTypes, - - bool? push, - - bool? pushByDigest, - - bool? store, - - bool? unpack) - { - Annotations = annotations; - Compression = compression; - CompressionLevel = compressionLevel; - DanglingNamePrefix = danglingNamePrefix; - ForceCompression = forceCompression; - Insecure = insecure; - NameCanonical = nameCanonical; - Names = names; - OciMediaTypes = ociMediaTypes; - Push = push; - PushByDigest = pushByDigest; - Store = store; - Unpack = unpack; - } - } -} diff --git a/sdk/dotnet/Outputs/ExportTar.cs b/sdk/dotnet/Outputs/ExportTar.cs deleted file mode 100644 index 8bba255..0000000 --- a/sdk/dotnet/Outputs/ExportTar.cs +++ /dev/null @@ -1,27 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class ExportTar - { - /// - /// Output path. - /// - public readonly string Dest; - - [OutputConstructor] - private ExportTar(string dest) - { - Dest = dest; - } - } -} diff --git a/sdk/dotnet/Outputs/Registry.cs b/sdk/dotnet/Outputs/Registry.cs deleted file mode 100644 index 2bf1996..0000000 --- a/sdk/dotnet/Outputs/Registry.cs +++ /dev/null @@ -1,42 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class Registry - { - /// - /// The registry's address (e.g. "docker.io"). - /// - public readonly string Address; - /// - /// Password or token for the registry. - /// - public readonly string? Password; - /// - /// Username for the registry. - /// - public readonly string? Username; - - [OutputConstructor] - private Registry( - string address, - - string? password, - - string? username) - { - Address = address; - Password = password; - Username = username; - } - } -} diff --git a/sdk/dotnet/Outputs/SSH.cs b/sdk/dotnet/Outputs/SSH.cs deleted file mode 100644 index b111110..0000000 --- a/sdk/dotnet/Outputs/SSH.cs +++ /dev/null @@ -1,45 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild.Outputs -{ - - [OutputType] - public sealed class SSH - { - /// - /// Useful for distinguishing different servers that are part of the same - /// build. - /// - /// A value of `default` is appropriate if only dealing with a single host. - /// - public readonly string Id; - /// - /// SSH agent socket or private keys to expose to the build under the given - /// identifier. - /// - /// Defaults to `[$SSH_AUTH_SOCK]`. - /// - /// Note that your keys are **not** automatically added when using an - /// agent. Run `ssh-add -l` locally to confirm which public keys are - /// visible to the agent; these will be exposed to your build. - /// - public readonly ImmutableArray Paths; - - [OutputConstructor] - private SSH( - string id, - - ImmutableArray paths) - { - Id = id; - Paths = paths; - } - } -} diff --git a/sdk/dotnet/Provider.cs b/sdk/dotnet/Provider.cs deleted file mode 100644 index 3801824..0000000 --- a/sdk/dotnet/Provider.cs +++ /dev/null @@ -1,69 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Threading.Tasks; -using Pulumi.Serialization; - -namespace Pulumi.DockerBuild -{ - [DockerBuildResourceType("pulumi:providers:docker-build")] - public partial class Provider : global::Pulumi.ProviderResource - { - /// - /// The build daemon's address. - /// - [Output("host")] - public Output Host { get; private set; } = null!; - - - /// - /// Create a Provider resource with the given unique name, arguments, and options. - /// - /// - /// The unique name of the resource - /// The arguments used to populate this resource's properties - /// A bag of options that control this resource's behavior - public Provider(string name, ProviderArgs? args = null, CustomResourceOptions? options = null) - : base("docker-build", name, args ?? new ProviderArgs(), MakeResourceOptions(options, "")) - { - } - - private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) - { - var defaultOptions = new CustomResourceOptions - { - Version = Utilities.Version, - }; - var merged = CustomResourceOptions.Merge(defaultOptions, options); - // Override the ID if one was specified for consistency with other language SDKs. - merged.Id = id ?? merged.Id; - return merged; - } - } - - public sealed class ProviderArgs : global::Pulumi.ResourceArgs - { - /// - /// The build daemon's address. - /// - [Input("host")] - public Input? Host { get; set; } - - [Input("registries", json: true)] - private InputList? _registries; - public InputList Registries - { - get => _registries ?? (_registries = new InputList()); - set => _registries = value; - } - - public ProviderArgs() - { - Host = Utilities.GetEnv("DOCKER_HOST") ?? ""; - } - public static new ProviderArgs Empty => new ProviderArgs(); - } -} diff --git a/sdk/dotnet/Pulumi.DockerBuild.csproj b/sdk/dotnet/Pulumi.DockerBuild.csproj deleted file mode 100644 index f6b646e..0000000 --- a/sdk/dotnet/Pulumi.DockerBuild.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - true - Pulumi - Pulumi - A Pulumi provider for building modern Docker images with buildx and BuildKit. - Apache-2.0 - https://pulumi.com - https://github.com/pulumi/pulumi-docker-build - logo.png - 0.1.0-alpha.0+dev - - net6.0 - enable - - - - true - 1701;1702;1591 - - - - $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - true - true - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - True - - - - - diff --git a/sdk/dotnet/README.md b/sdk/dotnet/README.md deleted file mode 100644 index a778720..0000000 --- a/sdk/dotnet/README.md +++ /dev/null @@ -1 +0,0 @@ -A Pulumi provider for building modern Docker images with buildx and BuildKit. diff --git a/sdk/dotnet/Utilities.cs b/sdk/dotnet/Utilities.cs deleted file mode 100644 index 41c642f..0000000 --- a/sdk/dotnet/Utilities.cs +++ /dev/null @@ -1,83 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -namespace Pulumi.DockerBuild -{ - static class Utilities - { - public static string? GetEnv(params string[] names) - { - foreach (var n in names) - { - var value = global::System.Environment.GetEnvironmentVariable(n); - if (value != null) - { - return value; - } - } - return null; - } - - static string[] trueValues = { "1", "t", "T", "true", "TRUE", "True" }; - static string[] falseValues = { "0", "f", "F", "false", "FALSE", "False" }; - public static bool? GetEnvBoolean(params string[] names) - { - var s = GetEnv(names); - if (s != null) - { - if (global::System.Array.IndexOf(trueValues, s) != -1) - { - return true; - } - if (global::System.Array.IndexOf(falseValues, s) != -1) - { - return false; - } - } - return null; - } - - public static int? GetEnvInt32(params string[] names) => int.TryParse(GetEnv(names), out int v) ? (int?)v : null; - - public static double? GetEnvDouble(params string[] names) => double.TryParse(GetEnv(names), out double v) ? (double?)v : null; - - [global::System.Obsolete("Please use WithDefaults instead")] - public static global::Pulumi.InvokeOptions WithVersion(this global::Pulumi.InvokeOptions? options) - { - var dst = options ?? new global::Pulumi.InvokeOptions{}; - dst.Version = options?.Version ?? Version; - return dst; - } - - public static global::Pulumi.InvokeOptions WithDefaults(this global::Pulumi.InvokeOptions? src) - { - var dst = src ?? new global::Pulumi.InvokeOptions{}; - dst.Version = src?.Version ?? Version; - return dst; - } - - private readonly static string version; - public static string Version => version; - - static Utilities() - { - var assembly = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(Utilities)).Assembly; - using var stream = assembly.GetManifestResourceStream("Pulumi.DockerBuild.version.txt"); - using var reader = new global::System.IO.StreamReader(stream ?? throw new global::System.NotSupportedException("Missing embedded version.txt file")); - version = reader.ReadToEnd().Trim(); - var parts = version.Split("\n"); - if (parts.Length == 2) - { - // The first part is the provider name. - version = parts[1].Trim(); - } - } - } - - internal sealed class DockerBuildResourceTypeAttribute : global::Pulumi.ResourceTypeAttribute - { - public DockerBuildResourceTypeAttribute(string type) : base(type, Utilities.Version) - { - } - } -} diff --git a/sdk/dotnet/logo.png b/sdk/dotnet/logo.png deleted file mode 100644 index 181f421..0000000 Binary files a/sdk/dotnet/logo.png and /dev/null differ diff --git a/sdk/dotnet/pulumi-plugin.json b/sdk/dotnet/pulumi-plugin.json deleted file mode 100644 index 5ec7f95..0000000 --- a/sdk/dotnet/pulumi-plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "resource": true, - "name": "docker-build", - "version": "0.1.0-alpha.0+dev" -} diff --git a/sdk/go/dockerbuild/config/config.go b/sdk/go/dockerbuild/config/config.go deleted file mode 100644 index 26bba90..0000000 --- a/sdk/go/dockerbuild/config/config.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package config - -import ( - "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/config" -) - -var _ = internal.GetEnvOrDefault - -// The build daemon's address. -func GetHost(ctx *pulumi.Context) string { - v, err := config.Try(ctx, "docker-build:host") - if err == nil { - return v - } - var value string - if d := internal.GetEnvOrDefault("", nil, "DOCKER_HOST"); d != nil { - value = d.(string) - } - return value -} -func GetRegistries(ctx *pulumi.Context) string { - return config.Get(ctx, "docker-build:registries") -} diff --git a/sdk/go/dockerbuild/doc.go b/sdk/go/dockerbuild/doc.go deleted file mode 100644 index e798e27..0000000 --- a/sdk/go/dockerbuild/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// A Pulumi provider for building modern Docker images with buildx and BuildKit. -package dockerbuild diff --git a/sdk/go/dockerbuild/image.go b/sdk/go/dockerbuild/image.go deleted file mode 100644 index 7c2fb34..0000000 --- a/sdk/go/dockerbuild/image.go +++ /dev/null @@ -1,1363 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "errors" - "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/pulumix" -) - -// A Docker image built using buildx -- Docker's interface to the improved -// BuildKit backend. -// -// ## Stability -// -// **This resource is pre-1.0 and in public preview.** -// -// We will strive to keep APIs and behavior as stable as possible, but we -// cannot guarantee stability until version 1.0. -// -// ## Migrating Pulumi Docker v3 and v4 Image resources -// -// This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. -// Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. -// -// ### Behavioral differences -// -// There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. -// -// #### Previews -// -// Version `3.x` of the Pulumi Docker provider always builds images during preview operations. -// This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. -// -// Version `4.x` changed build-on-preview behavior to be opt-in. -// By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. -// Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. -// -// The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. -// This behavior can be changed by specifying `buildOnPreview`. -// -// #### Push behavior -// -// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. -// They expose a `skipPush: true` option to disable pushing. -// -// This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. -// -// To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). -// Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. -// -// #### Secrets -// -// Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. -// -// Version `4.x` of the Pulumi Docker provider does not support secrets. -// -// The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. -// Instead, they should be passed directly as values. -// (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) -// Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. -// -// #### Caching -// -// Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. -// It builds targets individually and pushes them to separate images for caching. -// -// Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. -// -// Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. -// This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. -// -// The `Image` resource delegates all caching behavior to Docker. -// `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. -// -// #### Outputs -// -// Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. -// In `4.x` this could also be a single sha256 hash if the image wasn't pushed. -// -// Unlike earlier providers the `Image` resource can push multiple tags. -// As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. -// If multiple tags were pushed this uses one at random. -// -// If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. -// -// #### Tag deletion and refreshes -// -// Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. -// -// The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. -// If any are missing a subsequent `update` will push them. -// -// When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. -// Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). -// Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. -// -// Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. -// -// ### Example migration -// -// Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. -// -// The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. -// After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. -// In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. -// -// The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. -// It it is shown with parameters similar to the `v3` example for completeness. -// -// ## Example Usage -// -// ## Example Usage -// ### Push to AWS ECR with caching -// ```go -// package main -// -// import ( -// -// "fmt" -// -// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// ecrRepository, err := ecr.NewRepository(ctx, "ecr-repository", nil) -// if err != nil { -// return err -// } -// authToken := ecr.GetAuthorizationTokenOutput(ctx, ecr.GetAuthorizationTokenOutputArgs{ -// RegistryId: ecrRepository.RegistryId, -// }, nil) -// myImage, err := dockerbuild.NewImage(ctx, "my-image", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:cache", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// ImageManifest: pulumi.Bool(true), -// OciMediaTypes: pulumi.Bool(true), -// Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:cache", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("./app"), -// }, -// Push: pulumi.Bool(true), -// Registries: dockerbuild.RegistryArray{ -// &dockerbuild.RegistryArgs{ -// Address: ecrRepository.RepositoryUrl, -// Password: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { -// return &authToken.Password, nil -// }).(pulumi.StringPtrOutput), -// Username: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { -// return &authToken.UserName, nil -// }).(pulumi.StringPtrOutput), -// }, -// }, -// Tags: pulumi.StringArray{ -// ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:latest", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", myImage.Ref) -// return nil -// }) -// } -// -// ``` -// ### Multi-platform image -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Plan9_amd64, -// dockerbuild.Platform_Plan9_386, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Registry export -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(true), -// Registries: dockerbuild.RegistryArray{ -// &dockerbuild.RegistryArgs{ -// Address: pulumi.String("docker.io"), -// Password: pulumi.Any(dockerHubPassword), -// Username: pulumi.String("pulumibot"), -// }, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0"), -// }, -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", myImage.Ref) -// return nil -// }) -// } -// -// ``` -// ### Caching -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Local: &dockerbuild.CacheFromLocalArgs{ -// Src: pulumi.String("tmp/cache"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Local: &dockerbuild.CacheToLocalArgs{ -// Dest: pulumi.String("tmp/cache"), -// Mode: dockerbuild.CacheModeMax, -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Docker Build Cloud -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Builder: &dockerbuild.BuilderConfigArgs{ -// Name: pulumi.String("cloud-builder-name"), -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Exec: pulumi.Bool(true), -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Build arguments -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// BuildArgs: pulumi.StringMap{ -// "SET_ME_TO_TRUE": pulumi.String("true"), -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Build target -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// Target: pulumi.String("build-me"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Named contexts -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// Named: dockerbuild.ContextMap{ -// "golang:latest": &dockerbuild.ContextArgs{ -// Location: pulumi.String("docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"), -// }, -// }, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Remote context -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Inline Dockerfile -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Dockerfile: &dockerbuild.DockerfileArgs{ -// Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Remote context -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("https://github.com/docker-library/hello-world.git"), -// }, -// Dockerfile: &dockerbuild.DockerfileArgs{ -// Location: pulumi.String("app/Dockerfile"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Local export -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Exports: dockerbuild.ExportArray{ -// &dockerbuild.ExportArgs{ -// Docker: &dockerbuild.ExportDockerArgs{ -// Tar: pulumi.Bool(true), -// }, -// }, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -type Image struct { - pulumi.CustomResourceState - - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts pulumi.StringArrayOutput `pulumi:"addHosts"` - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs pulumi.StringMapOutput `pulumi:"buildArgs"` - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview pulumi.BoolPtrOutput `pulumi:"buildOnPreview"` - // Builder configuration. - Builder BuilderConfigPtrOutput `pulumi:"builder"` - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom CacheFromArrayOutput `pulumi:"cacheFrom"` - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo CacheToArrayOutput `pulumi:"cacheTo"` - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context BuildContextPtrOutput `pulumi:"context"` - // A preliminary hash of the image's build context. - // - // Pulumi uses this to determine if an image _may_ need to be re-built. - ContextHash pulumi.StringOutput `pulumi:"contextHash"` - // A SHA256 digest of the image if it was exported to a registry or - // elsewhere. - // - // Empty if the image was not exported. - // - // Registry images can be referenced precisely as `@`. The - // `ref` output provides one such reference as a convenience. - Digest pulumi.StringOutput `pulumi:"digest"` - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile DockerfilePtrOutput `pulumi:"dockerfile"` - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec pulumi.BoolPtrOutput `pulumi:"exec"` - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports ExportArrayOutput `pulumi:"exports"` - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels pulumi.StringMapOutput `pulumi:"labels"` - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load pulumi.BoolPtrOutput `pulumi:"load"` - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network NetworkModePtrOutput `pulumi:"network"` - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache pulumi.BoolPtrOutput `pulumi:"noCache"` - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms PlatformArrayOutput `pulumi:"platforms"` - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull pulumi.BoolPtrOutput `pulumi:"pull"` - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push pulumi.BoolOutput `pulumi:"push"` - // If the image was pushed to any registries then this will contain a - // single fully-qualified tag including the build's digest. - // - // If the image had tags but was not exported, this will take on a value - // of one of those tags. - // - // This will be empty if the image had no exports and no tags. - // - // This is only for convenience and may not be appropriate for situations - // where multiple tags or registries are involved. In those cases this - // output is not guaranteed to be stable. - // - // For more control over tags consumed by downstream resources you should - // use the `digest` output. - Ref pulumi.StringOutput `pulumi:"ref"` - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries RegistryArrayOutput `pulumi:"registries"` - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets pulumi.StringMapOutput `pulumi:"secrets"` - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh SSHArrayOutput `pulumi:"ssh"` - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags pulumi.StringArrayOutput `pulumi:"tags"` - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target pulumi.StringPtrOutput `pulumi:"target"` -} - -// NewImage registers a new resource with the given unique name, arguments, and options. -func NewImage(ctx *pulumi.Context, - name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { - if args == nil { - 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 { - args.Network = NetworkMode("default") - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Image - err := ctx.RegisterResource("docker-build:index:Image", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// GetImage gets an existing Image resource's state with the given name, ID, and optional -// state properties that are used to uniquely qualify the lookup (nil if not required). -func GetImage(ctx *pulumi.Context, - name string, id pulumi.IDInput, state *ImageState, opts ...pulumi.ResourceOption) (*Image, error) { - var resource Image - err := ctx.ReadResource("docker-build:index:Image", name, id, state, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// Input properties used for looking up and filtering Image resources. -type imageState struct { -} - -type ImageState struct { -} - -func (ImageState) ElementType() reflect.Type { - return reflect.TypeOf((*imageState)(nil)).Elem() -} - -type imageArgs struct { - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts []string `pulumi:"addHosts"` - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs map[string]string `pulumi:"buildArgs"` - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview *bool `pulumi:"buildOnPreview"` - // Builder configuration. - Builder *BuilderConfig `pulumi:"builder"` - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom []CacheFrom `pulumi:"cacheFrom"` - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo []CacheTo `pulumi:"cacheTo"` - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context *BuildContext `pulumi:"context"` - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile *Dockerfile `pulumi:"dockerfile"` - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec *bool `pulumi:"exec"` - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports []Export `pulumi:"exports"` - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels map[string]string `pulumi:"labels"` - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load *bool `pulumi:"load"` - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network *NetworkMode `pulumi:"network"` - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache *bool `pulumi:"noCache"` - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms []Platform `pulumi:"platforms"` - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull *bool `pulumi:"pull"` - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push bool `pulumi:"push"` - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries []Registry `pulumi:"registries"` - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets map[string]string `pulumi:"secrets"` - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh []SSH `pulumi:"ssh"` - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags []string `pulumi:"tags"` - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target *string `pulumi:"target"` -} - -// The set of arguments for constructing a Image resource. -type ImageArgs struct { - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts pulumi.StringArrayInput - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs pulumi.StringMapInput - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview pulumi.BoolPtrInput - // Builder configuration. - Builder BuilderConfigPtrInput - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom CacheFromArrayInput - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo CacheToArrayInput - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context BuildContextPtrInput - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile DockerfilePtrInput - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec pulumi.BoolPtrInput - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports ExportArrayInput - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels pulumi.StringMapInput - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load pulumi.BoolPtrInput - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network NetworkModePtrInput - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache pulumi.BoolPtrInput - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms PlatformArrayInput - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull pulumi.BoolPtrInput - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push pulumi.BoolInput - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries RegistryArrayInput - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets pulumi.StringMapInput - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh SSHArrayInput - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags pulumi.StringArrayInput - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target pulumi.StringPtrInput -} - -func (ImageArgs) ElementType() reflect.Type { - return reflect.TypeOf((*imageArgs)(nil)).Elem() -} - -type ImageInput interface { - pulumi.Input - - ToImageOutput() ImageOutput - ToImageOutputWithContext(ctx context.Context) ImageOutput -} - -func (*Image) ElementType() reflect.Type { - return reflect.TypeOf((**Image)(nil)).Elem() -} - -func (i *Image) ToImageOutput() ImageOutput { - return i.ToImageOutputWithContext(context.Background()) -} - -func (i *Image) ToImageOutputWithContext(ctx context.Context) ImageOutput { - return pulumi.ToOutputWithContext(ctx, i).(ImageOutput) -} - -func (i *Image) ToOutput(ctx context.Context) pulumix.Output[*Image] { - return pulumix.Output[*Image]{ - OutputState: i.ToImageOutputWithContext(ctx).OutputState, - } -} - -type ImageOutput struct{ *pulumi.OutputState } - -func (ImageOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Image)(nil)).Elem() -} - -func (o ImageOutput) ToImageOutput() ImageOutput { - return o -} - -func (o ImageOutput) ToImageOutputWithContext(ctx context.Context) ImageOutput { - return o -} - -func (o ImageOutput) ToOutput(ctx context.Context) pulumix.Output[*Image] { - return pulumix.Output[*Image]{ - OutputState: o.OutputState, - } -} - -// Custom `host:ip` mappings to use during the build. -// -// Equivalent to Docker's `--add-host` flag. -func (o ImageOutput) AddHosts() pulumi.StringArrayOutput { - return o.ApplyT(func(v *Image) pulumi.StringArrayOutput { return v.AddHosts }).(pulumi.StringArrayOutput) -} - -// `ARG` names and values to set during the build. -// -// These variables are accessed like environment variables inside `RUN` -// instructions. -// -// Build arguments are persisted in the image, so you should use `secrets` -// if these arguments are sensitive. -// -// Equivalent to Docker's `--build-arg` flag. -func (o ImageOutput) BuildArgs() pulumi.StringMapOutput { - return o.ApplyT(func(v *Image) pulumi.StringMapOutput { return v.BuildArgs }).(pulumi.StringMapOutput) -} - -// Setting this to `false` will always skip image builds during previews, -// and setting it to `true` will always build images during previews. -// -// Images built during previews are never exported to registries, however -// cache manifests are still exported. -// -// On-disk Dockerfiles are always validated for syntactic correctness -// regardless of this setting. -// -// Defaults to `true` as a safeguard against broken images merging as part -// of CI pipelines. -func (o ImageOutput) BuildOnPreview() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.BuildOnPreview }).(pulumi.BoolPtrOutput) -} - -// Builder configuration. -func (o ImageOutput) Builder() BuilderConfigPtrOutput { - return o.ApplyT(func(v *Image) BuilderConfigPtrOutput { return v.Builder }).(BuilderConfigPtrOutput) -} - -// Cache export configuration. -// -// Equivalent to Docker's `--cache-from` flag. -func (o ImageOutput) CacheFrom() CacheFromArrayOutput { - return o.ApplyT(func(v *Image) CacheFromArrayOutput { return v.CacheFrom }).(CacheFromArrayOutput) -} - -// Cache import configuration. -// -// Equivalent to Docker's `--cache-to` flag. -func (o ImageOutput) CacheTo() CacheToArrayOutput { - return o.ApplyT(func(v *Image) CacheToArrayOutput { return v.CacheTo }).(CacheToArrayOutput) -} - -// Build context settings. Defaults to the current directory. -// -// Equivalent to Docker's `PATH | URL | -` positional argument. -func (o ImageOutput) Context() BuildContextPtrOutput { - return o.ApplyT(func(v *Image) BuildContextPtrOutput { return v.Context }).(BuildContextPtrOutput) -} - -// A preliminary hash of the image's build context. -// -// Pulumi uses this to determine if an image _may_ need to be re-built. -func (o ImageOutput) ContextHash() pulumi.StringOutput { - return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.ContextHash }).(pulumi.StringOutput) -} - -// A SHA256 digest of the image if it was exported to a registry or -// elsewhere. -// -// Empty if the image was not exported. -// -// Registry images can be referenced precisely as `@`. The -// `ref` output provides one such reference as a convenience. -func (o ImageOutput) Digest() pulumi.StringOutput { - return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.Digest }).(pulumi.StringOutput) -} - -// Dockerfile settings. -// -// Equivalent to Docker's `--file` flag. -func (o ImageOutput) Dockerfile() DockerfilePtrOutput { - return o.ApplyT(func(v *Image) DockerfilePtrOutput { return v.Dockerfile }).(DockerfilePtrOutput) -} - -// Use `exec` mode to build this image. -// -// By default the provider embeds a v25 Docker client with v0.12 buildx -// support. This helps ensure consistent behavior across environments and -// is compatible with alternative build backends (e.g. `buildkitd`), but -// it may not be desirable if you require a specific version of buildx. -// For example you may want to run a custom `docker-buildx` binary with -// support for [Docker Build -// Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). -// -// When this is set to `true` the provider will instead execute the -// `docker-buildx` binary directly to perform its operations. The user is -// responsible for ensuring this binary exists, with correct permissions -// and pre-configured builders, at a path Docker expects (e.g. -// `~/.docker/cli-plugins`). -// -// Debugging `exec` mode may be more difficult as Pulumi will not be able -// to surface fine-grained errors and warnings. Additionally credentials -// are temporarily written to disk in order to provide them to the -// `docker-buildx` binary. -func (o ImageOutput) Exec() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.Exec }).(pulumi.BoolPtrOutput) -} - -// Controls where images are persisted after building. -// -// Images are only stored in the local cache unless `exports` are -// explicitly configured. -// -// Exporting to multiple destinations requires a daemon running BuildKit -// 0.13 or later. -// -// Equivalent to Docker's `--output` flag. -func (o ImageOutput) Exports() ExportArrayOutput { - return o.ApplyT(func(v *Image) ExportArrayOutput { return v.Exports }).(ExportArrayOutput) -} - -// Attach arbitrary key/value metadata to the image. -// -// Equivalent to Docker's `--label` flag. -func (o ImageOutput) Labels() pulumi.StringMapOutput { - return o.ApplyT(func(v *Image) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) -} - -// When `true` the build will automatically include a `docker` export. -// -// Defaults to `false`. -// -// Equivalent to Docker's `--load` flag. -func (o ImageOutput) Load() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.Load }).(pulumi.BoolPtrOutput) -} - -// Set the network mode for `RUN` instructions. Defaults to `default`. -// -// For custom networks, configure your builder with `--driver-opt network=...`. -// -// Equivalent to Docker's `--network` flag. -func (o ImageOutput) Network() NetworkModePtrOutput { - return o.ApplyT(func(v *Image) NetworkModePtrOutput { return v.Network }).(NetworkModePtrOutput) -} - -// Do not import cache manifests when building the image. -// -// Equivalent to Docker's `--no-cache` flag. -func (o ImageOutput) NoCache() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.NoCache }).(pulumi.BoolPtrOutput) -} - -// Set target platform(s) for the build. Defaults to the host's platform. -// -// Equivalent to Docker's `--platform` flag. -func (o ImageOutput) Platforms() PlatformArrayOutput { - return o.ApplyT(func(v *Image) PlatformArrayOutput { return v.Platforms }).(PlatformArrayOutput) -} - -// Always pull referenced images. -// -// Equivalent to Docker's `--pull` flag. -func (o ImageOutput) Pull() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Image) pulumi.BoolPtrOutput { return v.Pull }).(pulumi.BoolPtrOutput) -} - -// When `true` the build will automatically include a `registry` export. -// -// Defaults to `false`. -// -// Equivalent to Docker's `--push` flag. -func (o ImageOutput) Push() pulumi.BoolOutput { - 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 -// single fully-qualified tag including the build's digest. -// -// If the image had tags but was not exported, this will take on a value -// of one of those tags. -// -// This will be empty if the image had no exports and no tags. -// -// This is only for convenience and may not be appropriate for situations -// where multiple tags or registries are involved. In those cases this -// output is not guaranteed to be stable. -// -// For more control over tags consumed by downstream resources you should -// use the `digest` output. -func (o ImageOutput) Ref() pulumi.StringOutput { - return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.Ref }).(pulumi.StringOutput) -} - -// Registry credentials. Required if reading or exporting to private -// repositories. -// -// Credentials are kept in-memory and do not pollute pre-existing -// credentials on the host. -// -// Similar to `docker login`. -func (o ImageOutput) Registries() RegistryArrayOutput { - return o.ApplyT(func(v *Image) RegistryArrayOutput { return v.Registries }).(RegistryArrayOutput) -} - -// A mapping of secret names to their corresponding values. -// -// Unlike the Docker CLI, these can be passed by value and do not need to -// exist on-disk or in environment variables. -// -// Build arguments and environment variables are persistent in the final -// image, so you should use this for sensitive values. -// -// Similar to Docker's `--secret` flag. -func (o ImageOutput) Secrets() pulumi.StringMapOutput { - return o.ApplyT(func(v *Image) pulumi.StringMapOutput { return v.Secrets }).(pulumi.StringMapOutput) -} - -// SSH agent socket or keys to expose to the build. -// -// Equivalent to Docker's `--ssh` flag. -func (o ImageOutput) Ssh() SSHArrayOutput { - return o.ApplyT(func(v *Image) SSHArrayOutput { return v.Ssh }).(SSHArrayOutput) -} - -// Name and optionally a tag (format: `name:tag`). -// -// If exporting to a registry, the name should include the fully qualified -// registry address (e.g. `docker.io/pulumi/pulumi:latest`). -// -// Equivalent to Docker's `--tag` flag. -func (o ImageOutput) Tags() pulumi.StringArrayOutput { - return o.ApplyT(func(v *Image) pulumi.StringArrayOutput { return v.Tags }).(pulumi.StringArrayOutput) -} - -// Set the target build stage(s) to build. -// -// If not specified all targets will be built by default. -// -// Equivalent to Docker's `--target` flag. -func (o ImageOutput) Target() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Image) pulumi.StringPtrOutput { return v.Target }).(pulumi.StringPtrOutput) -} - -func init() { - pulumi.RegisterInputType(reflect.TypeOf((*ImageInput)(nil)).Elem(), &Image{}) - pulumi.RegisterOutputType(ImageOutput{}) -} diff --git a/sdk/go/dockerbuild/index.go b/sdk/go/dockerbuild/index.go deleted file mode 100644 index 2429e89..0000000 --- a/sdk/go/dockerbuild/index.go +++ /dev/null @@ -1,307 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "errors" - "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/pulumix" -) - -// A wrapper around `docker buildx imagetools create` to create an index -// (or manifest list) referencing one or more existing images. -// -// In most cases you do not need an `Index` to build a multi-platform -// image -- specifying multiple platforms on the `Image` will handle this -// for you automatically. -// -// However, as of April 2024, building multi-platform images _with -// caching_ will only export a cache for one platform at a time (see [this -// discussion](https://github.com/docker/buildx/discussions/1382) for more -// details). -// -// Therefore this resource can be helpful if you are building -// multi-platform images with caching: each platform can be built and -// cached separately, and an `Index` can join them all together. An -// example of this is shown below. -// -// This resource creates an OCI image index or a Docker manifest list -// depending on the media types of the source images. -// -// ## Example Usage -// ### Multi-platform registry caching -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// amd64, err := dockerbuild.NewImage(ctx, "amd64", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// Mode: dockerbuild.CacheModeMax, -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Linux_amd64, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0-amd64"), -// }, -// }) -// if err != nil { -// return err -// } -// arm64, err := dockerbuild.NewImage(ctx, "arm64", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// Mode: dockerbuild.CacheModeMax, -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Linux_arm64, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0-arm64"), -// }, -// }) -// if err != nil { -// return err -// } -// index, err := dockerbuild.NewIndex(ctx, "index", &dockerbuild.IndexArgs{ -// Sources: pulumi.StringArray{ -// amd64.Ref, -// arm64.Ref, -// }, -// Tag: pulumi.String("docker.io/pulumi/pulumi:3.107.0"), -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", index.Ref) -// return nil -// }) -// } -// -// ``` -type Index struct { - pulumi.CustomResourceState - - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push pulumi.BoolPtrOutput `pulumi:"push"` - // The pushed tag with digest. - // - // Identical to the tag if the index was not pushed. - Ref pulumi.StringOutput `pulumi:"ref"` - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry RegistryPtrOutput `pulumi:"registry"` - // Existing images to include in the index. - Sources pulumi.StringArrayOutput `pulumi:"sources"` - // The tag to apply to the index. - Tag pulumi.StringOutput `pulumi:"tag"` -} - -// NewIndex registers a new resource with the given unique name, arguments, and options. -func NewIndex(ctx *pulumi.Context, - name string, args *IndexArgs, opts ...pulumi.ResourceOption) (*Index, error) { - if args == nil { - return nil, errors.New("missing one or more required arguments") - } - - if args.Sources == nil { - return nil, errors.New("invalid value for required argument 'Sources'") - } - if args.Tag == nil { - return nil, errors.New("invalid value for required argument 'Tag'") - } - if args.Push == nil { - args.Push = pulumi.BoolPtr(true) - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Index - err := ctx.RegisterResource("docker-build:index:Index", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// GetIndex gets an existing Index resource's state with the given name, ID, and optional -// state properties that are used to uniquely qualify the lookup (nil if not required). -func GetIndex(ctx *pulumi.Context, - name string, id pulumi.IDInput, state *IndexState, opts ...pulumi.ResourceOption) (*Index, error) { - var resource Index - err := ctx.ReadResource("docker-build:index:Index", name, id, state, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// Input properties used for looking up and filtering Index resources. -type indexState struct { -} - -type IndexState struct { -} - -func (IndexState) ElementType() reflect.Type { - return reflect.TypeOf((*indexState)(nil)).Elem() -} - -type indexArgs struct { - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push *bool `pulumi:"push"` - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry *Registry `pulumi:"registry"` - // Existing images to include in the index. - Sources []string `pulumi:"sources"` - // The tag to apply to the index. - Tag string `pulumi:"tag"` -} - -// The set of arguments for constructing a Index resource. -type IndexArgs struct { - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push pulumi.BoolPtrInput - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry RegistryPtrInput - // Existing images to include in the index. - Sources pulumi.StringArrayInput - // The tag to apply to the index. - Tag pulumi.StringInput -} - -func (IndexArgs) ElementType() reflect.Type { - return reflect.TypeOf((*indexArgs)(nil)).Elem() -} - -type IndexInput interface { - pulumi.Input - - ToIndexOutput() IndexOutput - ToIndexOutputWithContext(ctx context.Context) IndexOutput -} - -func (*Index) ElementType() reflect.Type { - return reflect.TypeOf((**Index)(nil)).Elem() -} - -func (i *Index) ToIndexOutput() IndexOutput { - return i.ToIndexOutputWithContext(context.Background()) -} - -func (i *Index) ToIndexOutputWithContext(ctx context.Context) IndexOutput { - return pulumi.ToOutputWithContext(ctx, i).(IndexOutput) -} - -func (i *Index) ToOutput(ctx context.Context) pulumix.Output[*Index] { - return pulumix.Output[*Index]{ - OutputState: i.ToIndexOutputWithContext(ctx).OutputState, - } -} - -type IndexOutput struct{ *pulumi.OutputState } - -func (IndexOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Index)(nil)).Elem() -} - -func (o IndexOutput) ToIndexOutput() IndexOutput { - return o -} - -func (o IndexOutput) ToIndexOutputWithContext(ctx context.Context) IndexOutput { - return o -} - -func (o IndexOutput) ToOutput(ctx context.Context) pulumix.Output[*Index] { - return pulumix.Output[*Index]{ - OutputState: o.OutputState, - } -} - -// If true, push the index to the target registry. -// -// Defaults to `true`. -func (o IndexOutput) Push() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *Index) pulumi.BoolPtrOutput { return v.Push }).(pulumi.BoolPtrOutput) -} - -// The pushed tag with digest. -// -// Identical to the tag if the index was not pushed. -func (o IndexOutput) Ref() pulumi.StringOutput { - return o.ApplyT(func(v *Index) pulumi.StringOutput { return v.Ref }).(pulumi.StringOutput) -} - -// Authentication for the registry where the tagged index will be pushed. -// -// Credentials can also be included with the provider's configuration. -func (o IndexOutput) Registry() RegistryPtrOutput { - return o.ApplyT(func(v *Index) RegistryPtrOutput { return v.Registry }).(RegistryPtrOutput) -} - -// Existing images to include in the index. -func (o IndexOutput) Sources() pulumi.StringArrayOutput { - return o.ApplyT(func(v *Index) pulumi.StringArrayOutput { return v.Sources }).(pulumi.StringArrayOutput) -} - -// The tag to apply to the index. -func (o IndexOutput) Tag() pulumi.StringOutput { - return o.ApplyT(func(v *Index) pulumi.StringOutput { return v.Tag }).(pulumi.StringOutput) -} - -func init() { - pulumi.RegisterInputType(reflect.TypeOf((*IndexInput)(nil)).Elem(), &Index{}) - pulumi.RegisterOutputType(IndexOutput{}) -} diff --git a/sdk/go/dockerbuild/init.go b/sdk/go/dockerbuild/init.go deleted file mode 100644 index 33469af..0000000 --- a/sdk/go/dockerbuild/init.go +++ /dev/null @@ -1,68 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "fmt" - - "github.com/blang/semver" - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -type module struct { - version semver.Version -} - -func (m *module) Version() semver.Version { - return m.version -} - -func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { - switch typ { - case "docker-build:index:Image": - r = &Image{} - case "docker-build:index:Index": - r = &Index{} - default: - return nil, fmt.Errorf("unknown resource type: %s", typ) - } - - err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) - return -} - -type pkg struct { - version semver.Version -} - -func (p *pkg) Version() semver.Version { - return p.version -} - -func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) { - if typ != "pulumi:providers:docker-build" { - return nil, fmt.Errorf("unknown provider type: %s", typ) - } - - r := &Provider{} - err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) - return r, err -} - -func init() { - version, err := internal.PkgVersion() - if err != nil { - version = semver.Version{Major: 1} - } - pulumi.RegisterResourceModule( - "docker-build", - "index", - &module{version}, - ) - pulumi.RegisterResourcePackage( - "docker-build", - &pkg{version}, - ) -} diff --git a/sdk/go/dockerbuild/internal/pulumiUtilities.go b/sdk/go/dockerbuild/internal/pulumiUtilities.go deleted file mode 100644 index aad87cd..0000000 --- a/sdk/go/dockerbuild/internal/pulumiUtilities.go +++ /dev/null @@ -1,184 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package internal - -import ( - "fmt" - "os" - "reflect" - "regexp" - "strconv" - "strings" - - "github.com/blang/semver" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -import ( - "github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals" -) - -type envParser func(v string) interface{} - -func ParseEnvBool(v string) interface{} { - b, err := strconv.ParseBool(v) - if err != nil { - return nil - } - return b -} - -func ParseEnvInt(v string) interface{} { - i, err := strconv.ParseInt(v, 0, 0) - if err != nil { - return nil - } - return int(i) -} - -func ParseEnvFloat(v string) interface{} { - f, err := strconv.ParseFloat(v, 64) - if err != nil { - return nil - } - return f -} - -func ParseEnvStringArray(v string) interface{} { - var result pulumi.StringArray - for _, item := range strings.Split(v, ";") { - result = append(result, pulumi.String(item)) - } - return result -} - -func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} { - for _, v := range vars { - if value, ok := os.LookupEnv(v); ok { - if parser != nil { - return parser(value) - } - return value - } - } - return def -} - -// PkgVersion uses reflection to determine the version of the current package. -// If a version cannot be determined, v1 will be assumed. The second return -// value is always nil. -func PkgVersion() (semver.Version, error) { - // emptyVersion defaults to v0.0.0 - if !SdkVersion.Equals(semver.Version{}) { - return SdkVersion, nil - } - type sentinal struct{} - pkgPath := reflect.TypeOf(sentinal{}).PkgPath() - re := regexp.MustCompile("^.*/pulumi-docker-build/sdk(/v\\d+)?") - if match := re.FindStringSubmatch(pkgPath); match != nil { - vStr := match[1] - if len(vStr) == 0 { // If the version capture group was empty, default to v1. - return semver.Version{Major: 1}, nil - } - return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil - } - return semver.Version{Major: 1}, nil -} - -// isZero is a null safe check for if a value is it's types zero value. -func IsZero(v interface{}) bool { - if v == nil { - return true - } - return reflect.ValueOf(v).IsZero() -} - -func CallPlain( - ctx *pulumi.Context, - tok string, - args pulumi.Input, - output pulumi.Output, - self pulumi.Resource, - property string, - resultPtr reflect.Value, - errorPtr *error, - opts ...pulumi.InvokeOption, -) { - res, err := callPlainInner(ctx, tok, args, output, self, opts...) - if err != nil { - *errorPtr = err - return - } - - v := reflect.ValueOf(res) - - // extract res.property field if asked to do so - if property != "" { - v = v.FieldByName("Res") - } - - // return by setting the result pointer; this style of returns shortens the generated code without generics - resultPtr.Elem().Set(v) -} - -func callPlainInner( - ctx *pulumi.Context, - tok string, - args pulumi.Input, - output pulumi.Output, - self pulumi.Resource, - opts ...pulumi.InvokeOption, -) (any, error) { - o, err := ctx.Call(tok, args, output, self, opts...) - if err != nil { - return nil, err - } - - outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o) - if err != nil { - return nil, err - } - - // Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. - known := outputData.Known - value := outputData.Value - secret := outputData.Secret - - problem := "" - if !known { - problem = "an unknown value" - } else if secret { - problem = "a secret value" - } - - if problem != "" { - return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+ - "This is an error in the provider, please report this to the provider developer.", - tok, problem) - } - - return value, nil -} - -// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. -func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { - defaults := []pulumi.ResourceOption{} - - version := semver.MustParse("0.1.0-alpha.0+dev") - if !version.Equals(semver.Version{}) { - defaults = append(defaults, pulumi.Version(version.String())) - } - return append(defaults, opts...) -} - -// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. -func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { - defaults := []pulumi.InvokeOption{} - - version := semver.MustParse("0.1.0-alpha.0+dev") - if !version.Equals(semver.Version{}) { - defaults = append(defaults, pulumi.Version(version.String())) - } - return append(defaults, opts...) -} diff --git a/sdk/go/dockerbuild/internal/pulumiVersion.go b/sdk/go/dockerbuild/internal/pulumiVersion.go deleted file mode 100644 index 4ad7cb8..0000000 --- a/sdk/go/dockerbuild/internal/pulumiVersion.go +++ /dev/null @@ -1,11 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package internal - -import ( - "github.com/blang/semver" -) - -var SdkVersion semver.Version = semver.Version{} -var pluginDownloadURL string = "" diff --git a/sdk/go/dockerbuild/provider.go b/sdk/go/dockerbuild/provider.go deleted file mode 100644 index 15b1b77..0000000 --- a/sdk/go/dockerbuild/provider.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "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/pulumix" -) - -type Provider struct { - pulumi.ProviderResourceState - - // The build daemon's address. - Host pulumi.StringPtrOutput `pulumi:"host"` -} - -// NewProvider registers a new resource with the given unique name, arguments, and options. -func NewProvider(ctx *pulumi.Context, - name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) { - if args == nil { - args = &ProviderArgs{} - } - - if args.Host == nil { - if d := internal.GetEnvOrDefault("", nil, "DOCKER_HOST"); d != nil { - args.Host = pulumi.StringPtr(d.(string)) - } - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Provider - err := ctx.RegisterResource("pulumi:providers:docker-build", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -type providerArgs struct { - // The build daemon's address. - Host *string `pulumi:"host"` - Registries []Registry `pulumi:"registries"` -} - -// The set of arguments for constructing a Provider resource. -type ProviderArgs struct { - // The build daemon's address. - Host pulumi.StringPtrInput - Registries RegistryArrayInput -} - -func (ProviderArgs) ElementType() reflect.Type { - return reflect.TypeOf((*providerArgs)(nil)).Elem() -} - -type ProviderInput interface { - pulumi.Input - - ToProviderOutput() ProviderOutput - ToProviderOutputWithContext(ctx context.Context) ProviderOutput -} - -func (*Provider) ElementType() reflect.Type { - return reflect.TypeOf((**Provider)(nil)).Elem() -} - -func (i *Provider) ToProviderOutput() ProviderOutput { - return i.ToProviderOutputWithContext(context.Background()) -} - -func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { - return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput) -} - -func (i *Provider) ToOutput(ctx context.Context) pulumix.Output[*Provider] { - return pulumix.Output[*Provider]{ - OutputState: i.ToProviderOutputWithContext(ctx).OutputState, - } -} - -type ProviderOutput struct{ *pulumi.OutputState } - -func (ProviderOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Provider)(nil)).Elem() -} - -func (o ProviderOutput) ToProviderOutput() ProviderOutput { - return o -} - -func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { - return o -} - -func (o ProviderOutput) ToOutput(ctx context.Context) pulumix.Output[*Provider] { - return pulumix.Output[*Provider]{ - OutputState: o.OutputState, - } -} - -// The build daemon's address. -func (o ProviderOutput) Host() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Host }).(pulumi.StringPtrOutput) -} - -func init() { - pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{}) - pulumi.RegisterOutputType(ProviderOutput{}) -} diff --git a/sdk/go/dockerbuild/pulumi-plugin.json b/sdk/go/dockerbuild/pulumi-plugin.json deleted file mode 100644 index 5ec7f95..0000000 --- a/sdk/go/dockerbuild/pulumi-plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "resource": true, - "name": "docker-build", - "version": "0.1.0-alpha.0+dev" -} diff --git a/sdk/go/dockerbuild/pulumiEnums.go b/sdk/go/dockerbuild/pulumiEnums.go deleted file mode 100644 index a5a8a3b..0000000 --- a/sdk/go/dockerbuild/pulumiEnums.go +++ /dev/null @@ -1,886 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" - "github.com/pulumi/pulumi/sdk/v3/go/pulumix" -) - -type CacheMode string - -const ( - // Only layers that are exported into the resulting image are cached. - CacheModeMin = CacheMode("min") - // All layers are cached, even those of intermediate steps. - CacheModeMax = CacheMode("max") -) - -func (CacheMode) ElementType() reflect.Type { - return reflect.TypeOf((*CacheMode)(nil)).Elem() -} - -func (e CacheMode) ToCacheModeOutput() CacheModeOutput { - return pulumi.ToOutput(e).(CacheModeOutput) -} - -func (e CacheMode) ToCacheModeOutputWithContext(ctx context.Context) CacheModeOutput { - return pulumi.ToOutputWithContext(ctx, e).(CacheModeOutput) -} - -func (e CacheMode) ToCacheModePtrOutput() CacheModePtrOutput { - return e.ToCacheModePtrOutputWithContext(context.Background()) -} - -func (e CacheMode) ToCacheModePtrOutputWithContext(ctx context.Context) CacheModePtrOutput { - return CacheMode(e).ToCacheModeOutputWithContext(ctx).ToCacheModePtrOutputWithContext(ctx) -} - -func (e CacheMode) ToStringOutput() pulumi.StringOutput { - return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) -} - -func (e CacheMode) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) -} - -func (e CacheMode) ToStringPtrOutput() pulumi.StringPtrOutput { - return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) -} - -func (e CacheMode) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) -} - -type CacheModeOutput struct{ *pulumi.OutputState } - -func (CacheModeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheMode)(nil)).Elem() -} - -func (o CacheModeOutput) ToCacheModeOutput() CacheModeOutput { - return o -} - -func (o CacheModeOutput) ToCacheModeOutputWithContext(ctx context.Context) CacheModeOutput { - return o -} - -func (o CacheModeOutput) ToCacheModePtrOutput() CacheModePtrOutput { - return o.ToCacheModePtrOutputWithContext(context.Background()) -} - -func (o CacheModeOutput) ToCacheModePtrOutputWithContext(ctx context.Context) CacheModePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheMode) *CacheMode { - return &v - }).(CacheModePtrOutput) -} - -func (o CacheModeOutput) ToOutput(ctx context.Context) pulumix.Output[CacheMode] { - return pulumix.Output[CacheMode]{ - OutputState: o.OutputState, - } -} - -func (o CacheModeOutput) ToStringOutput() pulumi.StringOutput { - return o.ToStringOutputWithContext(context.Background()) -} - -func (o CacheModeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e CacheMode) string { - return string(e) - }).(pulumi.StringOutput) -} - -func (o CacheModeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o CacheModeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e CacheMode) *string { - v := string(e) - return &v - }).(pulumi.StringPtrOutput) -} - -type CacheModePtrOutput struct{ *pulumi.OutputState } - -func (CacheModePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheMode)(nil)).Elem() -} - -func (o CacheModePtrOutput) ToCacheModePtrOutput() CacheModePtrOutput { - return o -} - -func (o CacheModePtrOutput) ToCacheModePtrOutputWithContext(ctx context.Context) CacheModePtrOutput { - return o -} - -func (o CacheModePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheMode] { - return pulumix.Output[*CacheMode]{ - OutputState: o.OutputState, - } -} - -func (o CacheModePtrOutput) Elem() CacheModeOutput { - return o.ApplyT(func(v *CacheMode) CacheMode { - if v != nil { - return *v - } - var ret CacheMode - return ret - }).(CacheModeOutput) -} - -func (o CacheModePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o CacheModePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e *CacheMode) *string { - if e == nil { - return nil - } - v := string(*e) - return &v - }).(pulumi.StringPtrOutput) -} - -// CacheModeInput is an input type that accepts values of the CacheMode enum -// A concrete instance of `CacheModeInput` can be one of the following: -// -// CacheModeMin -// CacheModeMax -type CacheModeInput interface { - pulumi.Input - - ToCacheModeOutput() CacheModeOutput - ToCacheModeOutputWithContext(context.Context) CacheModeOutput -} - -var cacheModePtrType = reflect.TypeOf((**CacheMode)(nil)).Elem() - -type CacheModePtrInput interface { - pulumi.Input - - ToCacheModePtrOutput() CacheModePtrOutput - ToCacheModePtrOutputWithContext(context.Context) CacheModePtrOutput -} - -type cacheModePtr string - -func CacheModePtr(v string) CacheModePtrInput { - return (*cacheModePtr)(&v) -} - -func (*cacheModePtr) ElementType() reflect.Type { - return cacheModePtrType -} - -func (in *cacheModePtr) ToCacheModePtrOutput() CacheModePtrOutput { - return pulumi.ToOutput(in).(CacheModePtrOutput) -} - -func (in *cacheModePtr) ToCacheModePtrOutputWithContext(ctx context.Context) CacheModePtrOutput { - return pulumi.ToOutputWithContext(ctx, in).(CacheModePtrOutput) -} - -func (in *cacheModePtr) ToOutput(ctx context.Context) pulumix.Output[*CacheMode] { - return pulumix.Output[*CacheMode]{ - OutputState: in.ToCacheModePtrOutputWithContext(ctx).OutputState, - } -} - -type CompressionType string - -const ( - // Use `gzip` for compression. - CompressionTypeGzip = CompressionType("gzip") - // Use `estargz` for compression. - CompressionTypeEstargz = CompressionType("estargz") - // Use `zstd` for compression. - CompressionTypeZstd = CompressionType("zstd") -) - -func (CompressionType) ElementType() reflect.Type { - return reflect.TypeOf((*CompressionType)(nil)).Elem() -} - -func (e CompressionType) ToCompressionTypeOutput() CompressionTypeOutput { - return pulumi.ToOutput(e).(CompressionTypeOutput) -} - -func (e CompressionType) ToCompressionTypeOutputWithContext(ctx context.Context) CompressionTypeOutput { - return pulumi.ToOutputWithContext(ctx, e).(CompressionTypeOutput) -} - -func (e CompressionType) ToCompressionTypePtrOutput() CompressionTypePtrOutput { - return e.ToCompressionTypePtrOutputWithContext(context.Background()) -} - -func (e CompressionType) ToCompressionTypePtrOutputWithContext(ctx context.Context) CompressionTypePtrOutput { - return CompressionType(e).ToCompressionTypeOutputWithContext(ctx).ToCompressionTypePtrOutputWithContext(ctx) -} - -func (e CompressionType) ToStringOutput() pulumi.StringOutput { - return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) -} - -func (e CompressionType) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) -} - -func (e CompressionType) ToStringPtrOutput() pulumi.StringPtrOutput { - return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) -} - -func (e CompressionType) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) -} - -type CompressionTypeOutput struct{ *pulumi.OutputState } - -func (CompressionTypeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CompressionType)(nil)).Elem() -} - -func (o CompressionTypeOutput) ToCompressionTypeOutput() CompressionTypeOutput { - return o -} - -func (o CompressionTypeOutput) ToCompressionTypeOutputWithContext(ctx context.Context) CompressionTypeOutput { - return o -} - -func (o CompressionTypeOutput) ToCompressionTypePtrOutput() CompressionTypePtrOutput { - return o.ToCompressionTypePtrOutputWithContext(context.Background()) -} - -func (o CompressionTypeOutput) ToCompressionTypePtrOutputWithContext(ctx context.Context) CompressionTypePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CompressionType) *CompressionType { - return &v - }).(CompressionTypePtrOutput) -} - -func (o CompressionTypeOutput) ToOutput(ctx context.Context) pulumix.Output[CompressionType] { - return pulumix.Output[CompressionType]{ - OutputState: o.OutputState, - } -} - -func (o CompressionTypeOutput) ToStringOutput() pulumi.StringOutput { - return o.ToStringOutputWithContext(context.Background()) -} - -func (o CompressionTypeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e CompressionType) string { - return string(e) - }).(pulumi.StringOutput) -} - -func (o CompressionTypeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o CompressionTypeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e CompressionType) *string { - v := string(e) - return &v - }).(pulumi.StringPtrOutput) -} - -type CompressionTypePtrOutput struct{ *pulumi.OutputState } - -func (CompressionTypePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CompressionType)(nil)).Elem() -} - -func (o CompressionTypePtrOutput) ToCompressionTypePtrOutput() CompressionTypePtrOutput { - return o -} - -func (o CompressionTypePtrOutput) ToCompressionTypePtrOutputWithContext(ctx context.Context) CompressionTypePtrOutput { - return o -} - -func (o CompressionTypePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CompressionType] { - return pulumix.Output[*CompressionType]{ - OutputState: o.OutputState, - } -} - -func (o CompressionTypePtrOutput) Elem() CompressionTypeOutput { - return o.ApplyT(func(v *CompressionType) CompressionType { - if v != nil { - return *v - } - var ret CompressionType - return ret - }).(CompressionTypeOutput) -} - -func (o CompressionTypePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o CompressionTypePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e *CompressionType) *string { - if e == nil { - return nil - } - v := string(*e) - return &v - }).(pulumi.StringPtrOutput) -} - -// CompressionTypeInput is an input type that accepts values of the CompressionType enum -// A concrete instance of `CompressionTypeInput` can be one of the following: -// -// CompressionTypeGzip -// CompressionTypeEstargz -// CompressionTypeZstd -type CompressionTypeInput interface { - pulumi.Input - - ToCompressionTypeOutput() CompressionTypeOutput - ToCompressionTypeOutputWithContext(context.Context) CompressionTypeOutput -} - -var compressionTypePtrType = reflect.TypeOf((**CompressionType)(nil)).Elem() - -type CompressionTypePtrInput interface { - pulumi.Input - - ToCompressionTypePtrOutput() CompressionTypePtrOutput - ToCompressionTypePtrOutputWithContext(context.Context) CompressionTypePtrOutput -} - -type compressionTypePtr string - -func CompressionTypePtr(v string) CompressionTypePtrInput { - return (*compressionTypePtr)(&v) -} - -func (*compressionTypePtr) ElementType() reflect.Type { - return compressionTypePtrType -} - -func (in *compressionTypePtr) ToCompressionTypePtrOutput() CompressionTypePtrOutput { - return pulumi.ToOutput(in).(CompressionTypePtrOutput) -} - -func (in *compressionTypePtr) ToCompressionTypePtrOutputWithContext(ctx context.Context) CompressionTypePtrOutput { - return pulumi.ToOutputWithContext(ctx, in).(CompressionTypePtrOutput) -} - -func (in *compressionTypePtr) ToOutput(ctx context.Context) pulumix.Output[*CompressionType] { - return pulumix.Output[*CompressionType]{ - OutputState: in.ToCompressionTypePtrOutputWithContext(ctx).OutputState, - } -} - -type NetworkMode string - -const ( - // The default sandbox network mode. - NetworkModeDefault = NetworkMode("default") - // Host network mode. - NetworkModeHost = NetworkMode("host") - // Disable network access. - NetworkModeNone = NetworkMode("none") -) - -func (NetworkMode) ElementType() reflect.Type { - return reflect.TypeOf((*NetworkMode)(nil)).Elem() -} - -func (e NetworkMode) ToNetworkModeOutput() NetworkModeOutput { - return pulumi.ToOutput(e).(NetworkModeOutput) -} - -func (e NetworkMode) ToNetworkModeOutputWithContext(ctx context.Context) NetworkModeOutput { - return pulumi.ToOutputWithContext(ctx, e).(NetworkModeOutput) -} - -func (e NetworkMode) ToNetworkModePtrOutput() NetworkModePtrOutput { - return e.ToNetworkModePtrOutputWithContext(context.Background()) -} - -func (e NetworkMode) ToNetworkModePtrOutputWithContext(ctx context.Context) NetworkModePtrOutput { - return NetworkMode(e).ToNetworkModeOutputWithContext(ctx).ToNetworkModePtrOutputWithContext(ctx) -} - -func (e NetworkMode) ToStringOutput() pulumi.StringOutput { - return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) -} - -func (e NetworkMode) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) -} - -func (e NetworkMode) ToStringPtrOutput() pulumi.StringPtrOutput { - return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) -} - -func (e NetworkMode) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) -} - -type NetworkModeOutput struct{ *pulumi.OutputState } - -func (NetworkModeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*NetworkMode)(nil)).Elem() -} - -func (o NetworkModeOutput) ToNetworkModeOutput() NetworkModeOutput { - return o -} - -func (o NetworkModeOutput) ToNetworkModeOutputWithContext(ctx context.Context) NetworkModeOutput { - return o -} - -func (o NetworkModeOutput) ToNetworkModePtrOutput() NetworkModePtrOutput { - return o.ToNetworkModePtrOutputWithContext(context.Background()) -} - -func (o NetworkModeOutput) ToNetworkModePtrOutputWithContext(ctx context.Context) NetworkModePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v NetworkMode) *NetworkMode { - return &v - }).(NetworkModePtrOutput) -} - -func (o NetworkModeOutput) ToOutput(ctx context.Context) pulumix.Output[NetworkMode] { - return pulumix.Output[NetworkMode]{ - OutputState: o.OutputState, - } -} - -func (o NetworkModeOutput) ToStringOutput() pulumi.StringOutput { - return o.ToStringOutputWithContext(context.Background()) -} - -func (o NetworkModeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e NetworkMode) string { - return string(e) - }).(pulumi.StringOutput) -} - -func (o NetworkModeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o NetworkModeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e NetworkMode) *string { - v := string(e) - return &v - }).(pulumi.StringPtrOutput) -} - -type NetworkModePtrOutput struct{ *pulumi.OutputState } - -func (NetworkModePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**NetworkMode)(nil)).Elem() -} - -func (o NetworkModePtrOutput) ToNetworkModePtrOutput() NetworkModePtrOutput { - return o -} - -func (o NetworkModePtrOutput) ToNetworkModePtrOutputWithContext(ctx context.Context) NetworkModePtrOutput { - return o -} - -func (o NetworkModePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*NetworkMode] { - return pulumix.Output[*NetworkMode]{ - OutputState: o.OutputState, - } -} - -func (o NetworkModePtrOutput) Elem() NetworkModeOutput { - return o.ApplyT(func(v *NetworkMode) NetworkMode { - if v != nil { - return *v - } - var ret NetworkMode - return ret - }).(NetworkModeOutput) -} - -func (o NetworkModePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o NetworkModePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e *NetworkMode) *string { - if e == nil { - return nil - } - v := string(*e) - return &v - }).(pulumi.StringPtrOutput) -} - -// NetworkModeInput is an input type that accepts values of the NetworkMode enum -// A concrete instance of `NetworkModeInput` can be one of the following: -// -// NetworkModeDefault -// NetworkModeHost -// NetworkModeNone -type NetworkModeInput interface { - pulumi.Input - - ToNetworkModeOutput() NetworkModeOutput - ToNetworkModeOutputWithContext(context.Context) NetworkModeOutput -} - -var networkModePtrType = reflect.TypeOf((**NetworkMode)(nil)).Elem() - -type NetworkModePtrInput interface { - pulumi.Input - - ToNetworkModePtrOutput() NetworkModePtrOutput - ToNetworkModePtrOutputWithContext(context.Context) NetworkModePtrOutput -} - -type networkModePtr string - -func NetworkModePtr(v string) NetworkModePtrInput { - return (*networkModePtr)(&v) -} - -func (*networkModePtr) ElementType() reflect.Type { - return networkModePtrType -} - -func (in *networkModePtr) ToNetworkModePtrOutput() NetworkModePtrOutput { - return pulumi.ToOutput(in).(NetworkModePtrOutput) -} - -func (in *networkModePtr) ToNetworkModePtrOutputWithContext(ctx context.Context) NetworkModePtrOutput { - return pulumi.ToOutputWithContext(ctx, in).(NetworkModePtrOutput) -} - -func (in *networkModePtr) ToOutput(ctx context.Context) pulumix.Output[*NetworkMode] { - return pulumix.Output[*NetworkMode]{ - OutputState: in.ToNetworkModePtrOutputWithContext(ctx).OutputState, - } -} - -type Platform string - -const ( - Platform_Darwin_386 = Platform("darwin/386") - Platform_Darwin_amd64 = Platform("darwin/amd64") - Platform_Darwin_arm = Platform("darwin/arm") - Platform_Darwin_arm64 = Platform("darwin/arm64") - Platform_Dragonfly_amd64 = Platform("dragonfly/amd64") - Platform_Freebsd_386 = Platform("freebsd/386") - Platform_Freebsd_amd64 = Platform("freebsd/amd64") - Platform_Freebsd_arm = Platform("freebsd/arm") - Platform_Linux_386 = Platform("linux/386") - Platform_Linux_amd64 = Platform("linux/amd64") - Platform_Linux_arm = Platform("linux/arm") - Platform_Linux_arm64 = Platform("linux/arm64") - Platform_Linux_mips64 = Platform("linux/mips64") - Platform_Linux_mips64le = Platform("linux/mips64le") - Platform_Linux_ppc64le = Platform("linux/ppc64le") - Platform_Linux_riscv64 = Platform("linux/riscv64") - Platform_Linux_s390x = Platform("linux/s390x") - Platform_Netbsd_386 = Platform("netbsd/386") - Platform_Netbsd_amd64 = Platform("netbsd/amd64") - Platform_Netbsd_arm = Platform("netbsd/arm") - Platform_Openbsd_386 = Platform("openbsd/386") - Platform_Openbsd_amd64 = Platform("openbsd/amd64") - Platform_Openbsd_arm = Platform("openbsd/arm") - Platform_Plan9_386 = Platform("plan9/386") - Platform_Plan9_amd64 = Platform("plan9/amd64") - Platform_Solaris_amd64 = Platform("solaris/amd64") - Platform_Windows_386 = Platform("windows/386") - Platform_Windows_amd64 = Platform("windows/amd64") -) - -func (Platform) ElementType() reflect.Type { - return reflect.TypeOf((*Platform)(nil)).Elem() -} - -func (e Platform) ToPlatformOutput() PlatformOutput { - return pulumi.ToOutput(e).(PlatformOutput) -} - -func (e Platform) ToPlatformOutputWithContext(ctx context.Context) PlatformOutput { - return pulumi.ToOutputWithContext(ctx, e).(PlatformOutput) -} - -func (e Platform) ToPlatformPtrOutput() PlatformPtrOutput { - return e.ToPlatformPtrOutputWithContext(context.Background()) -} - -func (e Platform) ToPlatformPtrOutputWithContext(ctx context.Context) PlatformPtrOutput { - return Platform(e).ToPlatformOutputWithContext(ctx).ToPlatformPtrOutputWithContext(ctx) -} - -func (e Platform) ToStringOutput() pulumi.StringOutput { - return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) -} - -func (e Platform) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) -} - -func (e Platform) ToStringPtrOutput() pulumi.StringPtrOutput { - return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) -} - -func (e Platform) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) -} - -type PlatformOutput struct{ *pulumi.OutputState } - -func (PlatformOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Platform)(nil)).Elem() -} - -func (o PlatformOutput) ToPlatformOutput() PlatformOutput { - return o -} - -func (o PlatformOutput) ToPlatformOutputWithContext(ctx context.Context) PlatformOutput { - return o -} - -func (o PlatformOutput) ToPlatformPtrOutput() PlatformPtrOutput { - return o.ToPlatformPtrOutputWithContext(context.Background()) -} - -func (o PlatformOutput) ToPlatformPtrOutputWithContext(ctx context.Context) PlatformPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v Platform) *Platform { - return &v - }).(PlatformPtrOutput) -} - -func (o PlatformOutput) ToOutput(ctx context.Context) pulumix.Output[Platform] { - return pulumix.Output[Platform]{ - OutputState: o.OutputState, - } -} - -func (o PlatformOutput) ToStringOutput() pulumi.StringOutput { - return o.ToStringOutputWithContext(context.Background()) -} - -func (o PlatformOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e Platform) string { - return string(e) - }).(pulumi.StringOutput) -} - -func (o PlatformOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o PlatformOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e Platform) *string { - v := string(e) - return &v - }).(pulumi.StringPtrOutput) -} - -type PlatformPtrOutput struct{ *pulumi.OutputState } - -func (PlatformPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Platform)(nil)).Elem() -} - -func (o PlatformPtrOutput) ToPlatformPtrOutput() PlatformPtrOutput { - return o -} - -func (o PlatformPtrOutput) ToPlatformPtrOutputWithContext(ctx context.Context) PlatformPtrOutput { - return o -} - -func (o PlatformPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*Platform] { - return pulumix.Output[*Platform]{ - OutputState: o.OutputState, - } -} - -func (o PlatformPtrOutput) Elem() PlatformOutput { - return o.ApplyT(func(v *Platform) Platform { - if v != nil { - return *v - } - var ret Platform - return ret - }).(PlatformOutput) -} - -func (o PlatformPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { - return o.ToStringPtrOutputWithContext(context.Background()) -} - -func (o PlatformPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, e *Platform) *string { - if e == nil { - return nil - } - v := string(*e) - return &v - }).(pulumi.StringPtrOutput) -} - -// PlatformInput is an input type that accepts values of the Platform enum -// A concrete instance of `PlatformInput` can be one of the following: -// -// Platform_Darwin_386 -// Platform_Darwin_amd64 -// Platform_Darwin_arm -// Platform_Darwin_arm64 -// Platform_Dragonfly_amd64 -// Platform_Freebsd_386 -// Platform_Freebsd_amd64 -// Platform_Freebsd_arm -// Platform_Linux_386 -// Platform_Linux_amd64 -// Platform_Linux_arm -// Platform_Linux_arm64 -// Platform_Linux_mips64 -// Platform_Linux_mips64le -// Platform_Linux_ppc64le -// Platform_Linux_riscv64 -// Platform_Linux_s390x -// Platform_Netbsd_386 -// Platform_Netbsd_amd64 -// Platform_Netbsd_arm -// Platform_Openbsd_386 -// Platform_Openbsd_amd64 -// Platform_Openbsd_arm -// Platform_Plan9_386 -// Platform_Plan9_amd64 -// Platform_Solaris_amd64 -// Platform_Windows_386 -// Platform_Windows_amd64 -type PlatformInput interface { - pulumi.Input - - ToPlatformOutput() PlatformOutput - ToPlatformOutputWithContext(context.Context) PlatformOutput -} - -var platformPtrType = reflect.TypeOf((**Platform)(nil)).Elem() - -type PlatformPtrInput interface { - pulumi.Input - - ToPlatformPtrOutput() PlatformPtrOutput - ToPlatformPtrOutputWithContext(context.Context) PlatformPtrOutput -} - -type platformPtr string - -func PlatformPtr(v string) PlatformPtrInput { - return (*platformPtr)(&v) -} - -func (*platformPtr) ElementType() reflect.Type { - return platformPtrType -} - -func (in *platformPtr) ToPlatformPtrOutput() PlatformPtrOutput { - return pulumi.ToOutput(in).(PlatformPtrOutput) -} - -func (in *platformPtr) ToPlatformPtrOutputWithContext(ctx context.Context) PlatformPtrOutput { - return pulumi.ToOutputWithContext(ctx, in).(PlatformPtrOutput) -} - -func (in *platformPtr) ToOutput(ctx context.Context) pulumix.Output[*Platform] { - return pulumix.Output[*Platform]{ - OutputState: in.ToPlatformPtrOutputWithContext(ctx).OutputState, - } -} - -// PlatformArrayInput is an input type that accepts PlatformArray and PlatformArrayOutput values. -// You can construct a concrete instance of `PlatformArrayInput` via: -// -// PlatformArray{ PlatformArgs{...} } -type PlatformArrayInput interface { - pulumi.Input - - ToPlatformArrayOutput() PlatformArrayOutput - ToPlatformArrayOutputWithContext(context.Context) PlatformArrayOutput -} - -type PlatformArray []Platform - -func (PlatformArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]Platform)(nil)).Elem() -} - -func (i PlatformArray) ToPlatformArrayOutput() PlatformArrayOutput { - return i.ToPlatformArrayOutputWithContext(context.Background()) -} - -func (i PlatformArray) ToPlatformArrayOutputWithContext(ctx context.Context) PlatformArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(PlatformArrayOutput) -} - -func (i PlatformArray) ToOutput(ctx context.Context) pulumix.Output[[]Platform] { - return pulumix.Output[[]Platform]{ - OutputState: i.ToPlatformArrayOutputWithContext(ctx).OutputState, - } -} - -type PlatformArrayOutput struct{ *pulumi.OutputState } - -func (PlatformArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]Platform)(nil)).Elem() -} - -func (o PlatformArrayOutput) ToPlatformArrayOutput() PlatformArrayOutput { - return o -} - -func (o PlatformArrayOutput) ToPlatformArrayOutputWithContext(ctx context.Context) PlatformArrayOutput { - return o -} - -func (o PlatformArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]Platform] { - return pulumix.Output[[]Platform]{ - OutputState: o.OutputState, - } -} - -func (o PlatformArrayOutput) Index(i pulumi.IntInput) PlatformOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) Platform { - return vs[0].([]Platform)[vs[1].(int)] - }).(PlatformOutput) -} - -func init() { - pulumi.RegisterInputType(reflect.TypeOf((*CacheModeInput)(nil)).Elem(), CacheMode("min")) - pulumi.RegisterInputType(reflect.TypeOf((*CacheModePtrInput)(nil)).Elem(), CacheMode("min")) - pulumi.RegisterInputType(reflect.TypeOf((*CompressionTypeInput)(nil)).Elem(), CompressionType("gzip")) - pulumi.RegisterInputType(reflect.TypeOf((*CompressionTypePtrInput)(nil)).Elem(), CompressionType("gzip")) - pulumi.RegisterInputType(reflect.TypeOf((*NetworkModeInput)(nil)).Elem(), NetworkMode("default")) - pulumi.RegisterInputType(reflect.TypeOf((*NetworkModePtrInput)(nil)).Elem(), NetworkMode("default")) - pulumi.RegisterInputType(reflect.TypeOf((*PlatformInput)(nil)).Elem(), Platform("darwin/386")) - pulumi.RegisterInputType(reflect.TypeOf((*PlatformPtrInput)(nil)).Elem(), Platform("darwin/386")) - pulumi.RegisterInputType(reflect.TypeOf((*PlatformArrayInput)(nil)).Elem(), PlatformArray{}) - pulumi.RegisterOutputType(CacheModeOutput{}) - pulumi.RegisterOutputType(CacheModePtrOutput{}) - pulumi.RegisterOutputType(CompressionTypeOutput{}) - pulumi.RegisterOutputType(CompressionTypePtrOutput{}) - pulumi.RegisterOutputType(NetworkModeOutput{}) - pulumi.RegisterOutputType(NetworkModePtrOutput{}) - pulumi.RegisterOutputType(PlatformOutput{}) - pulumi.RegisterOutputType(PlatformPtrOutput{}) - pulumi.RegisterOutputType(PlatformArrayOutput{}) -} diff --git a/sdk/go/dockerbuild/pulumiTypes.go b/sdk/go/dockerbuild/pulumiTypes.go deleted file mode 100644 index b60c722..0000000 --- a/sdk/go/dockerbuild/pulumiTypes.go +++ /dev/null @@ -1,7217 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "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/pulumix" -) - -var _ = internal.GetEnvOrDefault - -type BuildContext struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location string `pulumi:"location"` - // Additional build contexts to use. - // - // These contexts are accessed with `FROM name` or `--from=name` - // statements when using Dockerfile 1.4+ syntax. - // - // Values can be local paths, HTTP URLs, or `docker-image://` images. - Named map[string]Context `pulumi:"named"` -} - -// BuildContextInput is an input type that accepts BuildContextArgs and BuildContextOutput values. -// You can construct a concrete instance of `BuildContextInput` via: -// -// BuildContextArgs{...} -type BuildContextInput interface { - pulumi.Input - - ToBuildContextOutput() BuildContextOutput - ToBuildContextOutputWithContext(context.Context) BuildContextOutput -} - -type BuildContextArgs struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location pulumi.StringInput `pulumi:"location"` - // Additional build contexts to use. - // - // These contexts are accessed with `FROM name` or `--from=name` - // statements when using Dockerfile 1.4+ syntax. - // - // Values can be local paths, HTTP URLs, or `docker-image://` images. - Named ContextMapInput `pulumi:"named"` -} - -func (BuildContextArgs) ElementType() reflect.Type { - return reflect.TypeOf((*BuildContext)(nil)).Elem() -} - -func (i BuildContextArgs) ToBuildContextOutput() BuildContextOutput { - return i.ToBuildContextOutputWithContext(context.Background()) -} - -func (i BuildContextArgs) ToBuildContextOutputWithContext(ctx context.Context) BuildContextOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuildContextOutput) -} - -func (i BuildContextArgs) ToOutput(ctx context.Context) pulumix.Output[BuildContext] { - return pulumix.Output[BuildContext]{ - OutputState: i.ToBuildContextOutputWithContext(ctx).OutputState, - } -} - -func (i BuildContextArgs) ToBuildContextPtrOutput() BuildContextPtrOutput { - return i.ToBuildContextPtrOutputWithContext(context.Background()) -} - -func (i BuildContextArgs) ToBuildContextPtrOutputWithContext(ctx context.Context) BuildContextPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuildContextOutput).ToBuildContextPtrOutputWithContext(ctx) -} - -// BuildContextPtrInput is an input type that accepts BuildContextArgs, BuildContextPtr and BuildContextPtrOutput values. -// You can construct a concrete instance of `BuildContextPtrInput` via: -// -// BuildContextArgs{...} -// -// or: -// -// nil -type BuildContextPtrInput interface { - pulumi.Input - - ToBuildContextPtrOutput() BuildContextPtrOutput - ToBuildContextPtrOutputWithContext(context.Context) BuildContextPtrOutput -} - -type buildContextPtrType BuildContextArgs - -func BuildContextPtr(v *BuildContextArgs) BuildContextPtrInput { - return (*buildContextPtrType)(v) -} - -func (*buildContextPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**BuildContext)(nil)).Elem() -} - -func (i *buildContextPtrType) ToBuildContextPtrOutput() BuildContextPtrOutput { - return i.ToBuildContextPtrOutputWithContext(context.Background()) -} - -func (i *buildContextPtrType) ToBuildContextPtrOutputWithContext(ctx context.Context) BuildContextPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuildContextPtrOutput) -} - -func (i *buildContextPtrType) ToOutput(ctx context.Context) pulumix.Output[*BuildContext] { - return pulumix.Output[*BuildContext]{ - OutputState: i.ToBuildContextPtrOutputWithContext(ctx).OutputState, - } -} - -type BuildContextOutput struct{ *pulumi.OutputState } - -func (BuildContextOutput) ElementType() reflect.Type { - return reflect.TypeOf((*BuildContext)(nil)).Elem() -} - -func (o BuildContextOutput) ToBuildContextOutput() BuildContextOutput { - return o -} - -func (o BuildContextOutput) ToBuildContextOutputWithContext(ctx context.Context) BuildContextOutput { - return o -} - -func (o BuildContextOutput) ToBuildContextPtrOutput() BuildContextPtrOutput { - return o.ToBuildContextPtrOutputWithContext(context.Background()) -} - -func (o BuildContextOutput) ToBuildContextPtrOutputWithContext(ctx context.Context) BuildContextPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v BuildContext) *BuildContext { - return &v - }).(BuildContextPtrOutput) -} - -func (o BuildContextOutput) ToOutput(ctx context.Context) pulumix.Output[BuildContext] { - return pulumix.Output[BuildContext]{ - OutputState: o.OutputState, - } -} - -// Resources to use for build context. -// -// The location can be: -// - A relative or absolute path to a local directory (`.`, `./app`, -// `/app`, etc.). -// - A remote URL of a Git repository, tarball, or plain text file -// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, -// etc.). -func (o BuildContextOutput) Location() pulumi.StringOutput { - return o.ApplyT(func(v BuildContext) string { return v.Location }).(pulumi.StringOutput) -} - -// Additional build contexts to use. -// -// These contexts are accessed with `FROM name` or `--from=name` -// statements when using Dockerfile 1.4+ syntax. -// -// Values can be local paths, HTTP URLs, or `docker-image://` images. -func (o BuildContextOutput) Named() ContextMapOutput { - return o.ApplyT(func(v BuildContext) map[string]Context { return v.Named }).(ContextMapOutput) -} - -type BuildContextPtrOutput struct{ *pulumi.OutputState } - -func (BuildContextPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**BuildContext)(nil)).Elem() -} - -func (o BuildContextPtrOutput) ToBuildContextPtrOutput() BuildContextPtrOutput { - return o -} - -func (o BuildContextPtrOutput) ToBuildContextPtrOutputWithContext(ctx context.Context) BuildContextPtrOutput { - return o -} - -func (o BuildContextPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*BuildContext] { - return pulumix.Output[*BuildContext]{ - OutputState: o.OutputState, - } -} - -func (o BuildContextPtrOutput) Elem() BuildContextOutput { - return o.ApplyT(func(v *BuildContext) BuildContext { - if v != nil { - return *v - } - var ret BuildContext - return ret - }).(BuildContextOutput) -} - -// Resources to use for build context. -// -// The location can be: -// - A relative or absolute path to a local directory (`.`, `./app`, -// `/app`, etc.). -// - A remote URL of a Git repository, tarball, or plain text file -// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, -// etc.). -func (o BuildContextPtrOutput) Location() pulumi.StringPtrOutput { - return o.ApplyT(func(v *BuildContext) *string { - if v == nil { - return nil - } - return &v.Location - }).(pulumi.StringPtrOutput) -} - -// Additional build contexts to use. -// -// These contexts are accessed with `FROM name` or `--from=name` -// statements when using Dockerfile 1.4+ syntax. -// -// Values can be local paths, HTTP URLs, or `docker-image://` images. -func (o BuildContextPtrOutput) Named() ContextMapOutput { - return o.ApplyT(func(v *BuildContext) map[string]Context { - if v == nil { - return nil - } - return v.Named - }).(ContextMapOutput) -} - -type BuilderConfig struct { - // Name of an existing buildx builder to use. - // - // Only `docker-container`, `kubernetes`, or `remote` drivers are - // supported. The legacy `docker` driver is not supported. - // - // Equivalent to Docker's `--builder` flag. - Name *string `pulumi:"name"` -} - -// BuilderConfigInput is an input type that accepts BuilderConfigArgs and BuilderConfigOutput values. -// You can construct a concrete instance of `BuilderConfigInput` via: -// -// BuilderConfigArgs{...} -type BuilderConfigInput interface { - pulumi.Input - - ToBuilderConfigOutput() BuilderConfigOutput - ToBuilderConfigOutputWithContext(context.Context) BuilderConfigOutput -} - -type BuilderConfigArgs struct { - // Name of an existing buildx builder to use. - // - // Only `docker-container`, `kubernetes`, or `remote` drivers are - // supported. The legacy `docker` driver is not supported. - // - // Equivalent to Docker's `--builder` flag. - Name pulumi.StringPtrInput `pulumi:"name"` -} - -func (BuilderConfigArgs) ElementType() reflect.Type { - return reflect.TypeOf((*BuilderConfig)(nil)).Elem() -} - -func (i BuilderConfigArgs) ToBuilderConfigOutput() BuilderConfigOutput { - return i.ToBuilderConfigOutputWithContext(context.Background()) -} - -func (i BuilderConfigArgs) ToBuilderConfigOutputWithContext(ctx context.Context) BuilderConfigOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuilderConfigOutput) -} - -func (i BuilderConfigArgs) ToOutput(ctx context.Context) pulumix.Output[BuilderConfig] { - return pulumix.Output[BuilderConfig]{ - OutputState: i.ToBuilderConfigOutputWithContext(ctx).OutputState, - } -} - -func (i BuilderConfigArgs) ToBuilderConfigPtrOutput() BuilderConfigPtrOutput { - return i.ToBuilderConfigPtrOutputWithContext(context.Background()) -} - -func (i BuilderConfigArgs) ToBuilderConfigPtrOutputWithContext(ctx context.Context) BuilderConfigPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuilderConfigOutput).ToBuilderConfigPtrOutputWithContext(ctx) -} - -// BuilderConfigPtrInput is an input type that accepts BuilderConfigArgs, BuilderConfigPtr and BuilderConfigPtrOutput values. -// You can construct a concrete instance of `BuilderConfigPtrInput` via: -// -// BuilderConfigArgs{...} -// -// or: -// -// nil -type BuilderConfigPtrInput interface { - pulumi.Input - - ToBuilderConfigPtrOutput() BuilderConfigPtrOutput - ToBuilderConfigPtrOutputWithContext(context.Context) BuilderConfigPtrOutput -} - -type builderConfigPtrType BuilderConfigArgs - -func BuilderConfigPtr(v *BuilderConfigArgs) BuilderConfigPtrInput { - return (*builderConfigPtrType)(v) -} - -func (*builderConfigPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**BuilderConfig)(nil)).Elem() -} - -func (i *builderConfigPtrType) ToBuilderConfigPtrOutput() BuilderConfigPtrOutput { - return i.ToBuilderConfigPtrOutputWithContext(context.Background()) -} - -func (i *builderConfigPtrType) ToBuilderConfigPtrOutputWithContext(ctx context.Context) BuilderConfigPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuilderConfigPtrOutput) -} - -func (i *builderConfigPtrType) ToOutput(ctx context.Context) pulumix.Output[*BuilderConfig] { - return pulumix.Output[*BuilderConfig]{ - OutputState: i.ToBuilderConfigPtrOutputWithContext(ctx).OutputState, - } -} - -type BuilderConfigOutput struct{ *pulumi.OutputState } - -func (BuilderConfigOutput) ElementType() reflect.Type { - return reflect.TypeOf((*BuilderConfig)(nil)).Elem() -} - -func (o BuilderConfigOutput) ToBuilderConfigOutput() BuilderConfigOutput { - return o -} - -func (o BuilderConfigOutput) ToBuilderConfigOutputWithContext(ctx context.Context) BuilderConfigOutput { - return o -} - -func (o BuilderConfigOutput) ToBuilderConfigPtrOutput() BuilderConfigPtrOutput { - return o.ToBuilderConfigPtrOutputWithContext(context.Background()) -} - -func (o BuilderConfigOutput) ToBuilderConfigPtrOutputWithContext(ctx context.Context) BuilderConfigPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v BuilderConfig) *BuilderConfig { - return &v - }).(BuilderConfigPtrOutput) -} - -func (o BuilderConfigOutput) ToOutput(ctx context.Context) pulumix.Output[BuilderConfig] { - return pulumix.Output[BuilderConfig]{ - OutputState: o.OutputState, - } -} - -// Name of an existing buildx builder to use. -// -// Only `docker-container`, `kubernetes`, or `remote` drivers are -// supported. The legacy `docker` driver is not supported. -// -// Equivalent to Docker's `--builder` flag. -func (o BuilderConfigOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v BuilderConfig) *string { return v.Name }).(pulumi.StringPtrOutput) -} - -type BuilderConfigPtrOutput struct{ *pulumi.OutputState } - -func (BuilderConfigPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**BuilderConfig)(nil)).Elem() -} - -func (o BuilderConfigPtrOutput) ToBuilderConfigPtrOutput() BuilderConfigPtrOutput { - return o -} - -func (o BuilderConfigPtrOutput) ToBuilderConfigPtrOutputWithContext(ctx context.Context) BuilderConfigPtrOutput { - return o -} - -func (o BuilderConfigPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*BuilderConfig] { - return pulumix.Output[*BuilderConfig]{ - OutputState: o.OutputState, - } -} - -func (o BuilderConfigPtrOutput) Elem() BuilderConfigOutput { - return o.ApplyT(func(v *BuilderConfig) BuilderConfig { - if v != nil { - return *v - } - var ret BuilderConfig - return ret - }).(BuilderConfigOutput) -} - -// Name of an existing buildx builder to use. -// -// Only `docker-container`, `kubernetes`, or `remote` drivers are -// supported. The legacy `docker` driver is not supported. -// -// Equivalent to Docker's `--builder` flag. -func (o BuilderConfigPtrOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v *BuilderConfig) *string { - if v == nil { - return nil - } - return v.Name - }).(pulumi.StringPtrOutput) -} - -type CacheFrom struct { - // Upload build caches to Azure's blob storage service. - Azblob *CacheFromAzureBlob `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha *CacheFromGitHubActions `pulumi:"gha"` - // A simple backend which caches images on your local filesystem. - Local *CacheFromLocal `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`). - Raw *string `pulumi:"raw"` - // Upload build caches to remote registries. - Registry *CacheFromRegistry `pulumi:"registry"` - // Upload build caches to AWS S3 or an S3-compatible services such as - // MinIO. - S3 *CacheFromS3 `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheFrom -func (val *CacheFrom) Defaults() *CacheFrom { - if val == nil { - return nil - } - tmp := *val - tmp.Gha = tmp.Gha.Defaults() - - tmp.S3 = tmp.S3.Defaults() - - return &tmp -} - -// CacheFromInput is an input type that accepts CacheFromArgs and CacheFromOutput values. -// You can construct a concrete instance of `CacheFromInput` via: -// -// CacheFromArgs{...} -type CacheFromInput interface { - pulumi.Input - - ToCacheFromOutput() CacheFromOutput - ToCacheFromOutputWithContext(context.Context) CacheFromOutput -} - -type CacheFromArgs struct { - // Upload build caches to Azure's blob storage service. - Azblob CacheFromAzureBlobPtrInput `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumi.BoolPtrInput `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha CacheFromGitHubActionsPtrInput `pulumi:"gha"` - // A simple backend which caches images on your local filesystem. - Local CacheFromLocalPtrInput `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`). - Raw pulumi.StringPtrInput `pulumi:"raw"` - // Upload build caches to remote registries. - Registry CacheFromRegistryPtrInput `pulumi:"registry"` - // Upload build caches to AWS S3 or an S3-compatible services such as - // MinIO. - S3 CacheFromS3PtrInput `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheFromArgs -func (val *CacheFromArgs) Defaults() *CacheFromArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (CacheFromArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFrom)(nil)).Elem() -} - -func (i CacheFromArgs) ToCacheFromOutput() CacheFromOutput { - return i.ToCacheFromOutputWithContext(context.Background()) -} - -func (i CacheFromArgs) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromOutput) -} - -func (i CacheFromArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFrom] { - return pulumix.Output[CacheFrom]{ - OutputState: i.ToCacheFromOutputWithContext(ctx).OutputState, - } -} - -// CacheFromArrayInput is an input type that accepts CacheFromArray and CacheFromArrayOutput values. -// You can construct a concrete instance of `CacheFromArrayInput` via: -// -// CacheFromArray{ CacheFromArgs{...} } -type CacheFromArrayInput interface { - pulumi.Input - - ToCacheFromArrayOutput() CacheFromArrayOutput - ToCacheFromArrayOutputWithContext(context.Context) CacheFromArrayOutput -} - -type CacheFromArray []CacheFromInput - -func (CacheFromArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]CacheFrom)(nil)).Elem() -} - -func (i CacheFromArray) ToCacheFromArrayOutput() CacheFromArrayOutput { - return i.ToCacheFromArrayOutputWithContext(context.Background()) -} - -func (i CacheFromArray) ToCacheFromArrayOutputWithContext(ctx context.Context) CacheFromArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromArrayOutput) -} - -func (i CacheFromArray) ToOutput(ctx context.Context) pulumix.Output[[]CacheFrom] { - return pulumix.Output[[]CacheFrom]{ - OutputState: i.ToCacheFromArrayOutputWithContext(ctx).OutputState, - } -} - -type CacheFromOutput struct{ *pulumi.OutputState } - -func (CacheFromOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFrom)(nil)).Elem() -} - -func (o CacheFromOutput) ToCacheFromOutput() CacheFromOutput { - return o -} - -func (o CacheFromOutput) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { - return o -} - -func (o CacheFromOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFrom] { - return pulumix.Output[CacheFrom]{ - OutputState: o.OutputState, - } -} - -// Upload build caches to Azure's blob storage service. -func (o CacheFromOutput) Azblob() CacheFromAzureBlobPtrOutput { - return o.ApplyT(func(v CacheFrom) *CacheFromAzureBlob { return v.Azblob }).(CacheFromAzureBlobPtrOutput) -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o CacheFromOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheFrom) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) -} - -// Recommended for use with GitHub Actions workflows. -// -// An action like `crazy-max/ghaction-github-runtime` is recommended to -// expose appropriate credentials to your GitHub workflow. -func (o CacheFromOutput) Gha() CacheFromGitHubActionsPtrOutput { - return o.ApplyT(func(v CacheFrom) *CacheFromGitHubActions { return v.Gha }).(CacheFromGitHubActionsPtrOutput) -} - -// A simple backend which caches images on your local filesystem. -func (o CacheFromOutput) Local() CacheFromLocalPtrOutput { - return o.ApplyT(func(v CacheFrom) *CacheFromLocal { return v.Local }).(CacheFromLocalPtrOutput) -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=inline`). -func (o CacheFromOutput) Raw() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFrom) *string { return v.Raw }).(pulumi.StringPtrOutput) -} - -// Upload build caches to remote registries. -func (o CacheFromOutput) Registry() CacheFromRegistryPtrOutput { - return o.ApplyT(func(v CacheFrom) *CacheFromRegistry { return v.Registry }).(CacheFromRegistryPtrOutput) -} - -// Upload build caches to AWS S3 or an S3-compatible services such as -// MinIO. -func (o CacheFromOutput) S3() CacheFromS3PtrOutput { - return o.ApplyT(func(v CacheFrom) *CacheFromS3 { return v.S3 }).(CacheFromS3PtrOutput) -} - -type CacheFromArrayOutput struct{ *pulumi.OutputState } - -func (CacheFromArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]CacheFrom)(nil)).Elem() -} - -func (o CacheFromArrayOutput) ToCacheFromArrayOutput() CacheFromArrayOutput { - return o -} - -func (o CacheFromArrayOutput) ToCacheFromArrayOutputWithContext(ctx context.Context) CacheFromArrayOutput { - return o -} - -func (o CacheFromArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]CacheFrom] { - return pulumix.Output[[]CacheFrom]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromArrayOutput) Index(i pulumi.IntInput) CacheFromOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) CacheFrom { - return vs[0].([]CacheFrom)[vs[1].(int)] - }).(CacheFromOutput) -} - -type CacheFromAzureBlob struct { - // Base URL of the storage account. - AccountUrl *string `pulumi:"accountUrl"` - // The name of the cache image. - Name string `pulumi:"name"` - // Blob storage account key. - SecretAccessKey *string `pulumi:"secretAccessKey"` -} - -// CacheFromAzureBlobInput is an input type that accepts CacheFromAzureBlobArgs and CacheFromAzureBlobOutput values. -// You can construct a concrete instance of `CacheFromAzureBlobInput` via: -// -// CacheFromAzureBlobArgs{...} -type CacheFromAzureBlobInput interface { - pulumi.Input - - ToCacheFromAzureBlobOutput() CacheFromAzureBlobOutput - ToCacheFromAzureBlobOutputWithContext(context.Context) CacheFromAzureBlobOutput -} - -type CacheFromAzureBlobArgs struct { - // Base URL of the storage account. - AccountUrl pulumi.StringPtrInput `pulumi:"accountUrl"` - // The name of the cache image. - Name pulumi.StringInput `pulumi:"name"` - // Blob storage account key. - SecretAccessKey pulumi.StringPtrInput `pulumi:"secretAccessKey"` -} - -func (CacheFromAzureBlobArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromAzureBlob)(nil)).Elem() -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobOutput() CacheFromAzureBlobOutput { - return i.ToCacheFromAzureBlobOutputWithContext(context.Background()) -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobOutputWithContext(ctx context.Context) CacheFromAzureBlobOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromAzureBlobOutput) -} - -func (i CacheFromAzureBlobArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFromAzureBlob] { - return pulumix.Output[CacheFromAzureBlob]{ - OutputState: i.ToCacheFromAzureBlobOutputWithContext(ctx).OutputState, - } -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobPtrOutput() CacheFromAzureBlobPtrOutput { - return i.ToCacheFromAzureBlobPtrOutputWithContext(context.Background()) -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobPtrOutputWithContext(ctx context.Context) CacheFromAzureBlobPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromAzureBlobOutput).ToCacheFromAzureBlobPtrOutputWithContext(ctx) -} - -// CacheFromAzureBlobPtrInput is an input type that accepts CacheFromAzureBlobArgs, CacheFromAzureBlobPtr and CacheFromAzureBlobPtrOutput values. -// You can construct a concrete instance of `CacheFromAzureBlobPtrInput` via: -// -// CacheFromAzureBlobArgs{...} -// -// or: -// -// nil -type CacheFromAzureBlobPtrInput interface { - pulumi.Input - - ToCacheFromAzureBlobPtrOutput() CacheFromAzureBlobPtrOutput - ToCacheFromAzureBlobPtrOutputWithContext(context.Context) CacheFromAzureBlobPtrOutput -} - -type cacheFromAzureBlobPtrType CacheFromAzureBlobArgs - -func CacheFromAzureBlobPtr(v *CacheFromAzureBlobArgs) CacheFromAzureBlobPtrInput { - return (*cacheFromAzureBlobPtrType)(v) -} - -func (*cacheFromAzureBlobPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromAzureBlob)(nil)).Elem() -} - -func (i *cacheFromAzureBlobPtrType) ToCacheFromAzureBlobPtrOutput() CacheFromAzureBlobPtrOutput { - return i.ToCacheFromAzureBlobPtrOutputWithContext(context.Background()) -} - -func (i *cacheFromAzureBlobPtrType) ToCacheFromAzureBlobPtrOutputWithContext(ctx context.Context) CacheFromAzureBlobPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromAzureBlobPtrOutput) -} - -func (i *cacheFromAzureBlobPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFromAzureBlob] { - return pulumix.Output[*CacheFromAzureBlob]{ - OutputState: i.ToCacheFromAzureBlobPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheFromAzureBlobOutput struct{ *pulumi.OutputState } - -func (CacheFromAzureBlobOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromAzureBlob)(nil)).Elem() -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobOutput() CacheFromAzureBlobOutput { - return o -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobOutputWithContext(ctx context.Context) CacheFromAzureBlobOutput { - return o -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobPtrOutput() CacheFromAzureBlobPtrOutput { - return o.ToCacheFromAzureBlobPtrOutputWithContext(context.Background()) -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobPtrOutputWithContext(ctx context.Context) CacheFromAzureBlobPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFromAzureBlob) *CacheFromAzureBlob { - return &v - }).(CacheFromAzureBlobPtrOutput) -} - -func (o CacheFromAzureBlobOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromAzureBlob] { - return pulumix.Output[CacheFromAzureBlob]{ - OutputState: o.OutputState, - } -} - -// Base URL of the storage account. -func (o CacheFromAzureBlobOutput) AccountUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromAzureBlob) *string { return v.AccountUrl }).(pulumi.StringPtrOutput) -} - -// The name of the cache image. -func (o CacheFromAzureBlobOutput) Name() pulumi.StringOutput { - return o.ApplyT(func(v CacheFromAzureBlob) string { return v.Name }).(pulumi.StringOutput) -} - -// Blob storage account key. -func (o CacheFromAzureBlobOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromAzureBlob) *string { return v.SecretAccessKey }).(pulumi.StringPtrOutput) -} - -type CacheFromAzureBlobPtrOutput struct{ *pulumi.OutputState } - -func (CacheFromAzureBlobPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromAzureBlob)(nil)).Elem() -} - -func (o CacheFromAzureBlobPtrOutput) ToCacheFromAzureBlobPtrOutput() CacheFromAzureBlobPtrOutput { - return o -} - -func (o CacheFromAzureBlobPtrOutput) ToCacheFromAzureBlobPtrOutputWithContext(ctx context.Context) CacheFromAzureBlobPtrOutput { - return o -} - -func (o CacheFromAzureBlobPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFromAzureBlob] { - return pulumix.Output[*CacheFromAzureBlob]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromAzureBlobPtrOutput) Elem() CacheFromAzureBlobOutput { - return o.ApplyT(func(v *CacheFromAzureBlob) CacheFromAzureBlob { - if v != nil { - return *v - } - var ret CacheFromAzureBlob - return ret - }).(CacheFromAzureBlobOutput) -} - -// Base URL of the storage account. -func (o CacheFromAzureBlobPtrOutput) AccountUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromAzureBlob) *string { - if v == nil { - return nil - } - return v.AccountUrl - }).(pulumi.StringPtrOutput) -} - -// The name of the cache image. -func (o CacheFromAzureBlobPtrOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromAzureBlob) *string { - if v == nil { - return nil - } - return &v.Name - }).(pulumi.StringPtrOutput) -} - -// Blob storage account key. -func (o CacheFromAzureBlobPtrOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromAzureBlob) *string { - if v == nil { - return nil - } - return v.SecretAccessKey - }).(pulumi.StringPtrOutput) -} - -type CacheFromGitHubActions struct { - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope *string `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token *string `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url *string `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheFromGitHubActions -func (val *CacheFromGitHubActions) Defaults() *CacheFromGitHubActions { - if val == nil { - return nil - } - tmp := *val - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - scope_ := d.(string) - tmp.Scope = &scope_ - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - token_ := d.(string) - tmp.Token = &token_ - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - url_ := d.(string) - tmp.Url = &url_ - } - } - return &tmp -} - -// CacheFromGitHubActionsInput is an input type that accepts CacheFromGitHubActionsArgs and CacheFromGitHubActionsOutput values. -// You can construct a concrete instance of `CacheFromGitHubActionsInput` via: -// -// CacheFromGitHubActionsArgs{...} -type CacheFromGitHubActionsInput interface { - pulumi.Input - - ToCacheFromGitHubActionsOutput() CacheFromGitHubActionsOutput - ToCacheFromGitHubActionsOutputWithContext(context.Context) CacheFromGitHubActionsOutput -} - -type CacheFromGitHubActionsArgs struct { - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope pulumi.StringPtrInput `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token pulumi.StringPtrInput `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url pulumi.StringPtrInput `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheFromGitHubActionsArgs -func (val *CacheFromGitHubActionsArgs) Defaults() *CacheFromGitHubActionsArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - tmp.Scope = pulumi.StringPtr(d.(string)) - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - tmp.Token = pulumi.StringPtr(d.(string)) - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - tmp.Url = pulumi.StringPtr(d.(string)) - } - } - return &tmp -} -func (CacheFromGitHubActionsArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromGitHubActions)(nil)).Elem() -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsOutput() CacheFromGitHubActionsOutput { - return i.ToCacheFromGitHubActionsOutputWithContext(context.Background()) -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsOutputWithContext(ctx context.Context) CacheFromGitHubActionsOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromGitHubActionsOutput) -} - -func (i CacheFromGitHubActionsArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFromGitHubActions] { - return pulumix.Output[CacheFromGitHubActions]{ - OutputState: i.ToCacheFromGitHubActionsOutputWithContext(ctx).OutputState, - } -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsPtrOutput() CacheFromGitHubActionsPtrOutput { - return i.ToCacheFromGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsPtrOutputWithContext(ctx context.Context) CacheFromGitHubActionsPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromGitHubActionsOutput).ToCacheFromGitHubActionsPtrOutputWithContext(ctx) -} - -// CacheFromGitHubActionsPtrInput is an input type that accepts CacheFromGitHubActionsArgs, CacheFromGitHubActionsPtr and CacheFromGitHubActionsPtrOutput values. -// You can construct a concrete instance of `CacheFromGitHubActionsPtrInput` via: -// -// CacheFromGitHubActionsArgs{...} -// -// or: -// -// nil -type CacheFromGitHubActionsPtrInput interface { - pulumi.Input - - ToCacheFromGitHubActionsPtrOutput() CacheFromGitHubActionsPtrOutput - ToCacheFromGitHubActionsPtrOutputWithContext(context.Context) CacheFromGitHubActionsPtrOutput -} - -type cacheFromGitHubActionsPtrType CacheFromGitHubActionsArgs - -func CacheFromGitHubActionsPtr(v *CacheFromGitHubActionsArgs) CacheFromGitHubActionsPtrInput { - return (*cacheFromGitHubActionsPtrType)(v) -} - -func (*cacheFromGitHubActionsPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromGitHubActions)(nil)).Elem() -} - -func (i *cacheFromGitHubActionsPtrType) ToCacheFromGitHubActionsPtrOutput() CacheFromGitHubActionsPtrOutput { - return i.ToCacheFromGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (i *cacheFromGitHubActionsPtrType) ToCacheFromGitHubActionsPtrOutputWithContext(ctx context.Context) CacheFromGitHubActionsPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromGitHubActionsPtrOutput) -} - -func (i *cacheFromGitHubActionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFromGitHubActions] { - return pulumix.Output[*CacheFromGitHubActions]{ - OutputState: i.ToCacheFromGitHubActionsPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheFromGitHubActionsOutput struct{ *pulumi.OutputState } - -func (CacheFromGitHubActionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromGitHubActions)(nil)).Elem() -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsOutput() CacheFromGitHubActionsOutput { - return o -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsOutputWithContext(ctx context.Context) CacheFromGitHubActionsOutput { - return o -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsPtrOutput() CacheFromGitHubActionsPtrOutput { - return o.ToCacheFromGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsPtrOutputWithContext(ctx context.Context) CacheFromGitHubActionsPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFromGitHubActions) *CacheFromGitHubActions { - return &v - }).(CacheFromGitHubActionsPtrOutput) -} - -func (o CacheFromGitHubActionsOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromGitHubActions] { - return pulumix.Output[CacheFromGitHubActions]{ - OutputState: o.OutputState, - } -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheFromGitHubActionsOutput) Scope() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromGitHubActions) *string { return v.Scope }).(pulumi.StringPtrOutput) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsOutput) Token() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromGitHubActions) *string { return v.Token }).(pulumi.StringPtrOutput) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsOutput) Url() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromGitHubActions) *string { return v.Url }).(pulumi.StringPtrOutput) -} - -type CacheFromGitHubActionsPtrOutput struct{ *pulumi.OutputState } - -func (CacheFromGitHubActionsPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromGitHubActions)(nil)).Elem() -} - -func (o CacheFromGitHubActionsPtrOutput) ToCacheFromGitHubActionsPtrOutput() CacheFromGitHubActionsPtrOutput { - return o -} - -func (o CacheFromGitHubActionsPtrOutput) ToCacheFromGitHubActionsPtrOutputWithContext(ctx context.Context) CacheFromGitHubActionsPtrOutput { - return o -} - -func (o CacheFromGitHubActionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFromGitHubActions] { - return pulumix.Output[*CacheFromGitHubActions]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromGitHubActionsPtrOutput) Elem() CacheFromGitHubActionsOutput { - return o.ApplyT(func(v *CacheFromGitHubActions) CacheFromGitHubActions { - if v != nil { - return *v - } - var ret CacheFromGitHubActions - return ret - }).(CacheFromGitHubActionsOutput) -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheFromGitHubActionsPtrOutput) Scope() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromGitHubActions) *string { - if v == nil { - return nil - } - return v.Scope - }).(pulumi.StringPtrOutput) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsPtrOutput) Token() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromGitHubActions) *string { - if v == nil { - return nil - } - return v.Token - }).(pulumi.StringPtrOutput) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsPtrOutput) Url() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromGitHubActions) *string { - if v == nil { - return nil - } - return v.Url - }).(pulumi.StringPtrOutput) -} - -type CacheFromLocal struct { - // Digest of manifest to import. - Digest *string `pulumi:"digest"` - // Path of the local directory where cache gets imported from. - Src string `pulumi:"src"` -} - -// CacheFromLocalInput is an input type that accepts CacheFromLocalArgs and CacheFromLocalOutput values. -// You can construct a concrete instance of `CacheFromLocalInput` via: -// -// CacheFromLocalArgs{...} -type CacheFromLocalInput interface { - pulumi.Input - - ToCacheFromLocalOutput() CacheFromLocalOutput - ToCacheFromLocalOutputWithContext(context.Context) CacheFromLocalOutput -} - -type CacheFromLocalArgs struct { - // Digest of manifest to import. - Digest pulumi.StringPtrInput `pulumi:"digest"` - // Path of the local directory where cache gets imported from. - Src pulumi.StringInput `pulumi:"src"` -} - -func (CacheFromLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromLocal)(nil)).Elem() -} - -func (i CacheFromLocalArgs) ToCacheFromLocalOutput() CacheFromLocalOutput { - return i.ToCacheFromLocalOutputWithContext(context.Background()) -} - -func (i CacheFromLocalArgs) ToCacheFromLocalOutputWithContext(ctx context.Context) CacheFromLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromLocalOutput) -} - -func (i CacheFromLocalArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFromLocal] { - return pulumix.Output[CacheFromLocal]{ - OutputState: i.ToCacheFromLocalOutputWithContext(ctx).OutputState, - } -} - -func (i CacheFromLocalArgs) ToCacheFromLocalPtrOutput() CacheFromLocalPtrOutput { - return i.ToCacheFromLocalPtrOutputWithContext(context.Background()) -} - -func (i CacheFromLocalArgs) ToCacheFromLocalPtrOutputWithContext(ctx context.Context) CacheFromLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromLocalOutput).ToCacheFromLocalPtrOutputWithContext(ctx) -} - -// CacheFromLocalPtrInput is an input type that accepts CacheFromLocalArgs, CacheFromLocalPtr and CacheFromLocalPtrOutput values. -// You can construct a concrete instance of `CacheFromLocalPtrInput` via: -// -// CacheFromLocalArgs{...} -// -// or: -// -// nil -type CacheFromLocalPtrInput interface { - pulumi.Input - - ToCacheFromLocalPtrOutput() CacheFromLocalPtrOutput - ToCacheFromLocalPtrOutputWithContext(context.Context) CacheFromLocalPtrOutput -} - -type cacheFromLocalPtrType CacheFromLocalArgs - -func CacheFromLocalPtr(v *CacheFromLocalArgs) CacheFromLocalPtrInput { - return (*cacheFromLocalPtrType)(v) -} - -func (*cacheFromLocalPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromLocal)(nil)).Elem() -} - -func (i *cacheFromLocalPtrType) ToCacheFromLocalPtrOutput() CacheFromLocalPtrOutput { - return i.ToCacheFromLocalPtrOutputWithContext(context.Background()) -} - -func (i *cacheFromLocalPtrType) ToCacheFromLocalPtrOutputWithContext(ctx context.Context) CacheFromLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromLocalPtrOutput) -} - -func (i *cacheFromLocalPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFromLocal] { - return pulumix.Output[*CacheFromLocal]{ - OutputState: i.ToCacheFromLocalPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheFromLocalOutput struct{ *pulumi.OutputState } - -func (CacheFromLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromLocal)(nil)).Elem() -} - -func (o CacheFromLocalOutput) ToCacheFromLocalOutput() CacheFromLocalOutput { - return o -} - -func (o CacheFromLocalOutput) ToCacheFromLocalOutputWithContext(ctx context.Context) CacheFromLocalOutput { - return o -} - -func (o CacheFromLocalOutput) ToCacheFromLocalPtrOutput() CacheFromLocalPtrOutput { - return o.ToCacheFromLocalPtrOutputWithContext(context.Background()) -} - -func (o CacheFromLocalOutput) ToCacheFromLocalPtrOutputWithContext(ctx context.Context) CacheFromLocalPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFromLocal) *CacheFromLocal { - return &v - }).(CacheFromLocalPtrOutput) -} - -func (o CacheFromLocalOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromLocal] { - return pulumix.Output[CacheFromLocal]{ - OutputState: o.OutputState, - } -} - -// Digest of manifest to import. -func (o CacheFromLocalOutput) Digest() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromLocal) *string { return v.Digest }).(pulumi.StringPtrOutput) -} - -// Path of the local directory where cache gets imported from. -func (o CacheFromLocalOutput) Src() pulumi.StringOutput { - return o.ApplyT(func(v CacheFromLocal) string { return v.Src }).(pulumi.StringOutput) -} - -type CacheFromLocalPtrOutput struct{ *pulumi.OutputState } - -func (CacheFromLocalPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromLocal)(nil)).Elem() -} - -func (o CacheFromLocalPtrOutput) ToCacheFromLocalPtrOutput() CacheFromLocalPtrOutput { - return o -} - -func (o CacheFromLocalPtrOutput) ToCacheFromLocalPtrOutputWithContext(ctx context.Context) CacheFromLocalPtrOutput { - return o -} - -func (o CacheFromLocalPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFromLocal] { - return pulumix.Output[*CacheFromLocal]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromLocalPtrOutput) Elem() CacheFromLocalOutput { - return o.ApplyT(func(v *CacheFromLocal) CacheFromLocal { - if v != nil { - return *v - } - var ret CacheFromLocal - return ret - }).(CacheFromLocalOutput) -} - -// Digest of manifest to import. -func (o CacheFromLocalPtrOutput) Digest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromLocal) *string { - if v == nil { - return nil - } - return v.Digest - }).(pulumi.StringPtrOutput) -} - -// Path of the local directory where cache gets imported from. -func (o CacheFromLocalPtrOutput) Src() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromLocal) *string { - if v == nil { - return nil - } - return &v.Src - }).(pulumi.StringPtrOutput) -} - -type CacheFromRegistry struct { - // Fully qualified name of the cache image to import. - Ref string `pulumi:"ref"` -} - -// CacheFromRegistryInput is an input type that accepts CacheFromRegistryArgs and CacheFromRegistryOutput values. -// You can construct a concrete instance of `CacheFromRegistryInput` via: -// -// CacheFromRegistryArgs{...} -type CacheFromRegistryInput interface { - pulumi.Input - - ToCacheFromRegistryOutput() CacheFromRegistryOutput - ToCacheFromRegistryOutputWithContext(context.Context) CacheFromRegistryOutput -} - -type CacheFromRegistryArgs struct { - // Fully qualified name of the cache image to import. - Ref pulumi.StringInput `pulumi:"ref"` -} - -func (CacheFromRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromRegistry)(nil)).Elem() -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryOutput() CacheFromRegistryOutput { - return i.ToCacheFromRegistryOutputWithContext(context.Background()) -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryOutputWithContext(ctx context.Context) CacheFromRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromRegistryOutput) -} - -func (i CacheFromRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFromRegistry] { - return pulumix.Output[CacheFromRegistry]{ - OutputState: i.ToCacheFromRegistryOutputWithContext(ctx).OutputState, - } -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryPtrOutput() CacheFromRegistryPtrOutput { - return i.ToCacheFromRegistryPtrOutputWithContext(context.Background()) -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryPtrOutputWithContext(ctx context.Context) CacheFromRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromRegistryOutput).ToCacheFromRegistryPtrOutputWithContext(ctx) -} - -// CacheFromRegistryPtrInput is an input type that accepts CacheFromRegistryArgs, CacheFromRegistryPtr and CacheFromRegistryPtrOutput values. -// You can construct a concrete instance of `CacheFromRegistryPtrInput` via: -// -// CacheFromRegistryArgs{...} -// -// or: -// -// nil -type CacheFromRegistryPtrInput interface { - pulumi.Input - - ToCacheFromRegistryPtrOutput() CacheFromRegistryPtrOutput - ToCacheFromRegistryPtrOutputWithContext(context.Context) CacheFromRegistryPtrOutput -} - -type cacheFromRegistryPtrType CacheFromRegistryArgs - -func CacheFromRegistryPtr(v *CacheFromRegistryArgs) CacheFromRegistryPtrInput { - return (*cacheFromRegistryPtrType)(v) -} - -func (*cacheFromRegistryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromRegistry)(nil)).Elem() -} - -func (i *cacheFromRegistryPtrType) ToCacheFromRegistryPtrOutput() CacheFromRegistryPtrOutput { - return i.ToCacheFromRegistryPtrOutputWithContext(context.Background()) -} - -func (i *cacheFromRegistryPtrType) ToCacheFromRegistryPtrOutputWithContext(ctx context.Context) CacheFromRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromRegistryPtrOutput) -} - -func (i *cacheFromRegistryPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFromRegistry] { - return pulumix.Output[*CacheFromRegistry]{ - OutputState: i.ToCacheFromRegistryPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheFromRegistryOutput struct{ *pulumi.OutputState } - -func (CacheFromRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromRegistry)(nil)).Elem() -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryOutput() CacheFromRegistryOutput { - return o -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryOutputWithContext(ctx context.Context) CacheFromRegistryOutput { - return o -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryPtrOutput() CacheFromRegistryPtrOutput { - return o.ToCacheFromRegistryPtrOutputWithContext(context.Background()) -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryPtrOutputWithContext(ctx context.Context) CacheFromRegistryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFromRegistry) *CacheFromRegistry { - return &v - }).(CacheFromRegistryPtrOutput) -} - -func (o CacheFromRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromRegistry] { - return pulumix.Output[CacheFromRegistry]{ - OutputState: o.OutputState, - } -} - -// Fully qualified name of the cache image to import. -func (o CacheFromRegistryOutput) Ref() pulumi.StringOutput { - return o.ApplyT(func(v CacheFromRegistry) string { return v.Ref }).(pulumi.StringOutput) -} - -type CacheFromRegistryPtrOutput struct{ *pulumi.OutputState } - -func (CacheFromRegistryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromRegistry)(nil)).Elem() -} - -func (o CacheFromRegistryPtrOutput) ToCacheFromRegistryPtrOutput() CacheFromRegistryPtrOutput { - return o -} - -func (o CacheFromRegistryPtrOutput) ToCacheFromRegistryPtrOutputWithContext(ctx context.Context) CacheFromRegistryPtrOutput { - return o -} - -func (o CacheFromRegistryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFromRegistry] { - return pulumix.Output[*CacheFromRegistry]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromRegistryPtrOutput) Elem() CacheFromRegistryOutput { - return o.ApplyT(func(v *CacheFromRegistry) CacheFromRegistry { - if v != nil { - return *v - } - var ret CacheFromRegistry - return ret - }).(CacheFromRegistryOutput) -} - -// Fully qualified name of the cache image to import. -func (o CacheFromRegistryPtrOutput) Ref() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromRegistry) *string { - if v == nil { - return nil - } - return &v.Ref - }).(pulumi.StringPtrOutput) -} - -type CacheFromS3 struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId *string `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix *string `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket string `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl *string `pulumi:"endpointUrl"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix *string `pulumi:"manifestsPrefix"` - // Name of the cache image. - Name *string `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region string `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey *string `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken *string `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle *bool `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheFromS3 -func (val *CacheFromS3) Defaults() *CacheFromS3 { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - accessKeyId_ := d.(string) - tmp.AccessKeyId = &accessKeyId_ - } - } - if internal.IsZero(tmp.Region) { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = d.(string) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - secretAccessKey_ := d.(string) - tmp.SecretAccessKey = &secretAccessKey_ - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - sessionToken_ := d.(string) - tmp.SessionToken = &sessionToken_ - } - } - return &tmp -} - -// CacheFromS3Input is an input type that accepts CacheFromS3Args and CacheFromS3Output values. -// You can construct a concrete instance of `CacheFromS3Input` via: -// -// CacheFromS3Args{...} -type CacheFromS3Input interface { - pulumi.Input - - ToCacheFromS3Output() CacheFromS3Output - ToCacheFromS3OutputWithContext(context.Context) CacheFromS3Output -} - -type CacheFromS3Args struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId pulumi.StringPtrInput `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix pulumi.StringPtrInput `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket pulumi.StringInput `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl pulumi.StringPtrInput `pulumi:"endpointUrl"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix pulumi.StringPtrInput `pulumi:"manifestsPrefix"` - // Name of the cache image. - Name pulumi.StringPtrInput `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region pulumi.StringInput `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey pulumi.StringPtrInput `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken pulumi.StringPtrInput `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle pulumi.BoolPtrInput `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheFromS3Args -func (val *CacheFromS3Args) Defaults() *CacheFromS3Args { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - tmp.AccessKeyId = pulumi.StringPtr(d.(string)) - } - } - if tmp.Region == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = pulumi.String(d.(string)) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - tmp.SecretAccessKey = pulumi.StringPtr(d.(string)) - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - tmp.SessionToken = pulumi.StringPtr(d.(string)) - } - } - return &tmp -} -func (CacheFromS3Args) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromS3)(nil)).Elem() -} - -func (i CacheFromS3Args) ToCacheFromS3Output() CacheFromS3Output { - return i.ToCacheFromS3OutputWithContext(context.Background()) -} - -func (i CacheFromS3Args) ToCacheFromS3OutputWithContext(ctx context.Context) CacheFromS3Output { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromS3Output) -} - -func (i CacheFromS3Args) ToOutput(ctx context.Context) pulumix.Output[CacheFromS3] { - return pulumix.Output[CacheFromS3]{ - OutputState: i.ToCacheFromS3OutputWithContext(ctx).OutputState, - } -} - -func (i CacheFromS3Args) ToCacheFromS3PtrOutput() CacheFromS3PtrOutput { - return i.ToCacheFromS3PtrOutputWithContext(context.Background()) -} - -func (i CacheFromS3Args) ToCacheFromS3PtrOutputWithContext(ctx context.Context) CacheFromS3PtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromS3Output).ToCacheFromS3PtrOutputWithContext(ctx) -} - -// CacheFromS3PtrInput is an input type that accepts CacheFromS3Args, CacheFromS3Ptr and CacheFromS3PtrOutput values. -// You can construct a concrete instance of `CacheFromS3PtrInput` via: -// -// CacheFromS3Args{...} -// -// or: -// -// nil -type CacheFromS3PtrInput interface { - pulumi.Input - - ToCacheFromS3PtrOutput() CacheFromS3PtrOutput - ToCacheFromS3PtrOutputWithContext(context.Context) CacheFromS3PtrOutput -} - -type cacheFromS3PtrType CacheFromS3Args - -func CacheFromS3Ptr(v *CacheFromS3Args) CacheFromS3PtrInput { - return (*cacheFromS3PtrType)(v) -} - -func (*cacheFromS3PtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromS3)(nil)).Elem() -} - -func (i *cacheFromS3PtrType) ToCacheFromS3PtrOutput() CacheFromS3PtrOutput { - return i.ToCacheFromS3PtrOutputWithContext(context.Background()) -} - -func (i *cacheFromS3PtrType) ToCacheFromS3PtrOutputWithContext(ctx context.Context) CacheFromS3PtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromS3PtrOutput) -} - -func (i *cacheFromS3PtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFromS3] { - return pulumix.Output[*CacheFromS3]{ - OutputState: i.ToCacheFromS3PtrOutputWithContext(ctx).OutputState, - } -} - -type CacheFromS3Output struct{ *pulumi.OutputState } - -func (CacheFromS3Output) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromS3)(nil)).Elem() -} - -func (o CacheFromS3Output) ToCacheFromS3Output() CacheFromS3Output { - return o -} - -func (o CacheFromS3Output) ToCacheFromS3OutputWithContext(ctx context.Context) CacheFromS3Output { - return o -} - -func (o CacheFromS3Output) ToCacheFromS3PtrOutput() CacheFromS3PtrOutput { - return o.ToCacheFromS3PtrOutputWithContext(context.Background()) -} - -func (o CacheFromS3Output) ToCacheFromS3PtrOutputWithContext(ctx context.Context) CacheFromS3PtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFromS3) *CacheFromS3 { - return &v - }).(CacheFromS3PtrOutput) -} - -func (o CacheFromS3Output) ToOutput(ctx context.Context) pulumix.Output[CacheFromS3] { - return pulumix.Output[CacheFromS3]{ - OutputState: o.OutputState, - } -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheFromS3Output) AccessKeyId() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.AccessKeyId }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend to blob filenames. -func (o CacheFromS3Output) BlobsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.BlobsPrefix }).(pulumi.StringPtrOutput) -} - -// Name of the S3 bucket. -func (o CacheFromS3Output) Bucket() pulumi.StringOutput { - return o.ApplyT(func(v CacheFromS3) string { return v.Bucket }).(pulumi.StringOutput) -} - -// Endpoint of the S3 bucket. -func (o CacheFromS3Output) EndpointUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.EndpointUrl }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend on manifest filenames. -func (o CacheFromS3Output) ManifestsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.ManifestsPrefix }).(pulumi.StringPtrOutput) -} - -// Name of the cache image. -func (o CacheFromS3Output) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.Name }).(pulumi.StringPtrOutput) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheFromS3Output) Region() pulumi.StringOutput { - return o.ApplyT(func(v CacheFromS3) string { return v.Region }).(pulumi.StringOutput) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheFromS3Output) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.SecretAccessKey }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheFromS3Output) SessionToken() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheFromS3) *string { return v.SessionToken }).(pulumi.StringPtrOutput) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheFromS3Output) UsePathStyle() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheFromS3) *bool { return v.UsePathStyle }).(pulumi.BoolPtrOutput) -} - -type CacheFromS3PtrOutput struct{ *pulumi.OutputState } - -func (CacheFromS3PtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheFromS3)(nil)).Elem() -} - -func (o CacheFromS3PtrOutput) ToCacheFromS3PtrOutput() CacheFromS3PtrOutput { - return o -} - -func (o CacheFromS3PtrOutput) ToCacheFromS3PtrOutputWithContext(ctx context.Context) CacheFromS3PtrOutput { - return o -} - -func (o CacheFromS3PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFromS3] { - return pulumix.Output[*CacheFromS3]{ - OutputState: o.OutputState, - } -} - -func (o CacheFromS3PtrOutput) Elem() CacheFromS3Output { - return o.ApplyT(func(v *CacheFromS3) CacheFromS3 { - if v != nil { - return *v - } - var ret CacheFromS3 - return ret - }).(CacheFromS3Output) -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheFromS3PtrOutput) AccessKeyId() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.AccessKeyId - }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend to blob filenames. -func (o CacheFromS3PtrOutput) BlobsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.BlobsPrefix - }).(pulumi.StringPtrOutput) -} - -// Name of the S3 bucket. -func (o CacheFromS3PtrOutput) Bucket() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return &v.Bucket - }).(pulumi.StringPtrOutput) -} - -// Endpoint of the S3 bucket. -func (o CacheFromS3PtrOutput) EndpointUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.EndpointUrl - }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend on manifest filenames. -func (o CacheFromS3PtrOutput) ManifestsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.ManifestsPrefix - }).(pulumi.StringPtrOutput) -} - -// Name of the cache image. -func (o CacheFromS3PtrOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.Name - }).(pulumi.StringPtrOutput) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheFromS3PtrOutput) Region() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return &v.Region - }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheFromS3PtrOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.SecretAccessKey - }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheFromS3PtrOutput) SessionToken() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *string { - if v == nil { - return nil - } - return v.SessionToken - }).(pulumi.StringPtrOutput) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheFromS3PtrOutput) UsePathStyle() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheFromS3) *bool { - if v == nil { - return nil - } - return v.UsePathStyle - }).(pulumi.BoolPtrOutput) -} - -type CacheTo struct { - // Push cache to Azure's blob storage service. - Azblob *CacheToAzureBlob `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha *CacheToGitHubActions `pulumi:"gha"` - // The inline cache storage backend is the simplest implementation to get - // started with, but it does not handle multi-stage builds. Consider the - // `registry` cache backend instead. - Inline *CacheToInline `pulumi:"inline"` - // A simple backend which caches imagines on your local filesystem. - Local *CacheToLocal `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`) - Raw *string `pulumi:"raw"` - // Push caches to remote registries. Incompatible with the `docker` build - // driver. - Registry *CacheToRegistry `pulumi:"registry"` - // Push cache to AWS S3 or S3-compatible services such as MinIO. - S3 *CacheToS3 `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheTo -func (val *CacheTo) Defaults() *CacheTo { - if val == nil { - return nil - } - tmp := *val - tmp.Azblob = tmp.Azblob.Defaults() - - tmp.Gha = tmp.Gha.Defaults() - - tmp.Local = tmp.Local.Defaults() - - tmp.Registry = tmp.Registry.Defaults() - - tmp.S3 = tmp.S3.Defaults() - - return &tmp -} - -// CacheToInput is an input type that accepts CacheToArgs and CacheToOutput values. -// You can construct a concrete instance of `CacheToInput` via: -// -// CacheToArgs{...} -type CacheToInput interface { - pulumi.Input - - ToCacheToOutput() CacheToOutput - ToCacheToOutputWithContext(context.Context) CacheToOutput -} - -type CacheToArgs struct { - // Push cache to Azure's blob storage service. - Azblob CacheToAzureBlobPtrInput `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumi.BoolPtrInput `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha CacheToGitHubActionsPtrInput `pulumi:"gha"` - // The inline cache storage backend is the simplest implementation to get - // started with, but it does not handle multi-stage builds. Consider the - // `registry` cache backend instead. - Inline CacheToInlinePtrInput `pulumi:"inline"` - // A simple backend which caches imagines on your local filesystem. - Local CacheToLocalPtrInput `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`) - Raw pulumi.StringPtrInput `pulumi:"raw"` - // Push caches to remote registries. Incompatible with the `docker` build - // driver. - Registry CacheToRegistryPtrInput `pulumi:"registry"` - // Push cache to AWS S3 or S3-compatible services such as MinIO. - S3 CacheToS3PtrInput `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheToArgs -func (val *CacheToArgs) Defaults() *CacheToArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (CacheToArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheTo)(nil)).Elem() -} - -func (i CacheToArgs) ToCacheToOutput() CacheToOutput { - return i.ToCacheToOutputWithContext(context.Background()) -} - -func (i CacheToArgs) ToCacheToOutputWithContext(ctx context.Context) CacheToOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToOutput) -} - -func (i CacheToArgs) ToOutput(ctx context.Context) pulumix.Output[CacheTo] { - return pulumix.Output[CacheTo]{ - OutputState: i.ToCacheToOutputWithContext(ctx).OutputState, - } -} - -// CacheToArrayInput is an input type that accepts CacheToArray and CacheToArrayOutput values. -// You can construct a concrete instance of `CacheToArrayInput` via: -// -// CacheToArray{ CacheToArgs{...} } -type CacheToArrayInput interface { - pulumi.Input - - ToCacheToArrayOutput() CacheToArrayOutput - ToCacheToArrayOutputWithContext(context.Context) CacheToArrayOutput -} - -type CacheToArray []CacheToInput - -func (CacheToArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]CacheTo)(nil)).Elem() -} - -func (i CacheToArray) ToCacheToArrayOutput() CacheToArrayOutput { - return i.ToCacheToArrayOutputWithContext(context.Background()) -} - -func (i CacheToArray) ToCacheToArrayOutputWithContext(ctx context.Context) CacheToArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToArrayOutput) -} - -func (i CacheToArray) ToOutput(ctx context.Context) pulumix.Output[[]CacheTo] { - return pulumix.Output[[]CacheTo]{ - OutputState: i.ToCacheToArrayOutputWithContext(ctx).OutputState, - } -} - -type CacheToOutput struct{ *pulumi.OutputState } - -func (CacheToOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheTo)(nil)).Elem() -} - -func (o CacheToOutput) ToCacheToOutput() CacheToOutput { - return o -} - -func (o CacheToOutput) ToCacheToOutputWithContext(ctx context.Context) CacheToOutput { - return o -} - -func (o CacheToOutput) ToOutput(ctx context.Context) pulumix.Output[CacheTo] { - return pulumix.Output[CacheTo]{ - OutputState: o.OutputState, - } -} - -// Push cache to Azure's blob storage service. -func (o CacheToOutput) Azblob() CacheToAzureBlobPtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToAzureBlob { return v.Azblob }).(CacheToAzureBlobPtrOutput) -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o CacheToOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheTo) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) -} - -// Recommended for use with GitHub Actions workflows. -// -// An action like `crazy-max/ghaction-github-runtime` is recommended to -// expose appropriate credentials to your GitHub workflow. -func (o CacheToOutput) Gha() CacheToGitHubActionsPtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToGitHubActions { return v.Gha }).(CacheToGitHubActionsPtrOutput) -} - -// The inline cache storage backend is the simplest implementation to get -// started with, but it does not handle multi-stage builds. Consider the -// `registry` cache backend instead. -func (o CacheToOutput) Inline() CacheToInlinePtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToInline { return v.Inline }).(CacheToInlinePtrOutput) -} - -// A simple backend which caches imagines on your local filesystem. -func (o CacheToOutput) Local() CacheToLocalPtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToLocal { return v.Local }).(CacheToLocalPtrOutput) -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=inline`) -func (o CacheToOutput) Raw() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheTo) *string { return v.Raw }).(pulumi.StringPtrOutput) -} - -// Push caches to remote registries. Incompatible with the `docker` build -// driver. -func (o CacheToOutput) Registry() CacheToRegistryPtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToRegistry { return v.Registry }).(CacheToRegistryPtrOutput) -} - -// Push cache to AWS S3 or S3-compatible services such as MinIO. -func (o CacheToOutput) S3() CacheToS3PtrOutput { - return o.ApplyT(func(v CacheTo) *CacheToS3 { return v.S3 }).(CacheToS3PtrOutput) -} - -type CacheToArrayOutput struct{ *pulumi.OutputState } - -func (CacheToArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]CacheTo)(nil)).Elem() -} - -func (o CacheToArrayOutput) ToCacheToArrayOutput() CacheToArrayOutput { - return o -} - -func (o CacheToArrayOutput) ToCacheToArrayOutputWithContext(ctx context.Context) CacheToArrayOutput { - return o -} - -func (o CacheToArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]CacheTo] { - return pulumix.Output[[]CacheTo]{ - OutputState: o.OutputState, - } -} - -func (o CacheToArrayOutput) Index(i pulumi.IntInput) CacheToOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) CacheTo { - return vs[0].([]CacheTo)[vs[1].(int)] - }).(CacheToOutput) -} - -type CacheToAzureBlob struct { - // Base URL of the storage account. - AccountUrl *string `pulumi:"accountUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // The name of the cache image. - Name string `pulumi:"name"` - // Blob storage account key. - SecretAccessKey *string `pulumi:"secretAccessKey"` -} - -// Defaults sets the appropriate defaults for CacheToAzureBlob -func (val *CacheToAzureBlob) Defaults() *CacheToAzureBlob { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - return &tmp -} - -// CacheToAzureBlobInput is an input type that accepts CacheToAzureBlobArgs and CacheToAzureBlobOutput values. -// You can construct a concrete instance of `CacheToAzureBlobInput` via: -// -// CacheToAzureBlobArgs{...} -type CacheToAzureBlobInput interface { - pulumi.Input - - ToCacheToAzureBlobOutput() CacheToAzureBlobOutput - ToCacheToAzureBlobOutputWithContext(context.Context) CacheToAzureBlobOutput -} - -type CacheToAzureBlobArgs struct { - // Base URL of the storage account. - AccountUrl pulumi.StringPtrInput `pulumi:"accountUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumi.BoolPtrInput `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode CacheModePtrInput `pulumi:"mode"` - // The name of the cache image. - Name pulumi.StringInput `pulumi:"name"` - // Blob storage account key. - SecretAccessKey pulumi.StringPtrInput `pulumi:"secretAccessKey"` -} - -// Defaults sets the appropriate defaults for CacheToAzureBlobArgs -func (val *CacheToAzureBlobArgs) Defaults() *CacheToAzureBlobArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumi.BoolPtr(false) - } - if tmp.Mode == nil { - tmp.Mode = CacheMode("min") - } - return &tmp -} -func (CacheToAzureBlobArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToAzureBlob)(nil)).Elem() -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobOutput() CacheToAzureBlobOutput { - return i.ToCacheToAzureBlobOutputWithContext(context.Background()) -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobOutputWithContext(ctx context.Context) CacheToAzureBlobOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToAzureBlobOutput) -} - -func (i CacheToAzureBlobArgs) ToOutput(ctx context.Context) pulumix.Output[CacheToAzureBlob] { - return pulumix.Output[CacheToAzureBlob]{ - OutputState: i.ToCacheToAzureBlobOutputWithContext(ctx).OutputState, - } -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobPtrOutput() CacheToAzureBlobPtrOutput { - return i.ToCacheToAzureBlobPtrOutputWithContext(context.Background()) -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobPtrOutputWithContext(ctx context.Context) CacheToAzureBlobPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToAzureBlobOutput).ToCacheToAzureBlobPtrOutputWithContext(ctx) -} - -// CacheToAzureBlobPtrInput is an input type that accepts CacheToAzureBlobArgs, CacheToAzureBlobPtr and CacheToAzureBlobPtrOutput values. -// You can construct a concrete instance of `CacheToAzureBlobPtrInput` via: -// -// CacheToAzureBlobArgs{...} -// -// or: -// -// nil -type CacheToAzureBlobPtrInput interface { - pulumi.Input - - ToCacheToAzureBlobPtrOutput() CacheToAzureBlobPtrOutput - ToCacheToAzureBlobPtrOutputWithContext(context.Context) CacheToAzureBlobPtrOutput -} - -type cacheToAzureBlobPtrType CacheToAzureBlobArgs - -func CacheToAzureBlobPtr(v *CacheToAzureBlobArgs) CacheToAzureBlobPtrInput { - return (*cacheToAzureBlobPtrType)(v) -} - -func (*cacheToAzureBlobPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToAzureBlob)(nil)).Elem() -} - -func (i *cacheToAzureBlobPtrType) ToCacheToAzureBlobPtrOutput() CacheToAzureBlobPtrOutput { - return i.ToCacheToAzureBlobPtrOutputWithContext(context.Background()) -} - -func (i *cacheToAzureBlobPtrType) ToCacheToAzureBlobPtrOutputWithContext(ctx context.Context) CacheToAzureBlobPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToAzureBlobPtrOutput) -} - -func (i *cacheToAzureBlobPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToAzureBlob] { - return pulumix.Output[*CacheToAzureBlob]{ - OutputState: i.ToCacheToAzureBlobPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheToAzureBlobOutput struct{ *pulumi.OutputState } - -func (CacheToAzureBlobOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToAzureBlob)(nil)).Elem() -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobOutput() CacheToAzureBlobOutput { - return o -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobOutputWithContext(ctx context.Context) CacheToAzureBlobOutput { - return o -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobPtrOutput() CacheToAzureBlobPtrOutput { - return o.ToCacheToAzureBlobPtrOutputWithContext(context.Background()) -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobPtrOutputWithContext(ctx context.Context) CacheToAzureBlobPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToAzureBlob) *CacheToAzureBlob { - return &v - }).(CacheToAzureBlobPtrOutput) -} - -func (o CacheToAzureBlobOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToAzureBlob] { - return pulumix.Output[CacheToAzureBlob]{ - OutputState: o.OutputState, - } -} - -// Base URL of the storage account. -func (o CacheToAzureBlobOutput) AccountUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToAzureBlob) *string { return v.AccountUrl }).(pulumi.StringPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToAzureBlobOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToAzureBlob) *bool { return v.IgnoreError }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToAzureBlobOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v CacheToAzureBlob) *CacheMode { return v.Mode }).(CacheModePtrOutput) -} - -// The name of the cache image. -func (o CacheToAzureBlobOutput) Name() pulumi.StringOutput { - return o.ApplyT(func(v CacheToAzureBlob) string { return v.Name }).(pulumi.StringOutput) -} - -// Blob storage account key. -func (o CacheToAzureBlobOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToAzureBlob) *string { return v.SecretAccessKey }).(pulumi.StringPtrOutput) -} - -type CacheToAzureBlobPtrOutput struct{ *pulumi.OutputState } - -func (CacheToAzureBlobPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToAzureBlob)(nil)).Elem() -} - -func (o CacheToAzureBlobPtrOutput) ToCacheToAzureBlobPtrOutput() CacheToAzureBlobPtrOutput { - return o -} - -func (o CacheToAzureBlobPtrOutput) ToCacheToAzureBlobPtrOutputWithContext(ctx context.Context) CacheToAzureBlobPtrOutput { - return o -} - -func (o CacheToAzureBlobPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToAzureBlob] { - return pulumix.Output[*CacheToAzureBlob]{ - OutputState: o.OutputState, - } -} - -func (o CacheToAzureBlobPtrOutput) Elem() CacheToAzureBlobOutput { - return o.ApplyT(func(v *CacheToAzureBlob) CacheToAzureBlob { - if v != nil { - return *v - } - var ret CacheToAzureBlob - return ret - }).(CacheToAzureBlobOutput) -} - -// Base URL of the storage account. -func (o CacheToAzureBlobPtrOutput) AccountUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToAzureBlob) *string { - if v == nil { - return nil - } - return v.AccountUrl - }).(pulumi.StringPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToAzureBlobPtrOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToAzureBlob) *bool { - if v == nil { - return nil - } - return v.IgnoreError - }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToAzureBlobPtrOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v *CacheToAzureBlob) *CacheMode { - if v == nil { - return nil - } - return v.Mode - }).(CacheModePtrOutput) -} - -// The name of the cache image. -func (o CacheToAzureBlobPtrOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToAzureBlob) *string { - if v == nil { - return nil - } - return &v.Name - }).(pulumi.StringPtrOutput) -} - -// Blob storage account key. -func (o CacheToAzureBlobPtrOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToAzureBlob) *string { - if v == nil { - return nil - } - return v.SecretAccessKey - }).(pulumi.StringPtrOutput) -} - -type CacheToGitHubActions struct { - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope *string `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token *string `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url *string `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheToGitHubActions -func (val *CacheToGitHubActions) Defaults() *CacheToGitHubActions { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - scope_ := d.(string) - tmp.Scope = &scope_ - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - token_ := d.(string) - tmp.Token = &token_ - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - url_ := d.(string) - tmp.Url = &url_ - } - } - return &tmp -} - -// CacheToGitHubActionsInput is an input type that accepts CacheToGitHubActionsArgs and CacheToGitHubActionsOutput values. -// You can construct a concrete instance of `CacheToGitHubActionsInput` via: -// -// CacheToGitHubActionsArgs{...} -type CacheToGitHubActionsInput interface { - pulumi.Input - - ToCacheToGitHubActionsOutput() CacheToGitHubActionsOutput - ToCacheToGitHubActionsOutputWithContext(context.Context) CacheToGitHubActionsOutput -} - -type CacheToGitHubActionsArgs struct { - // Ignore errors caused by failed cache exports. - IgnoreError pulumi.BoolPtrInput `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode CacheModePtrInput `pulumi:"mode"` - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope pulumi.StringPtrInput `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token pulumi.StringPtrInput `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url pulumi.StringPtrInput `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheToGitHubActionsArgs -func (val *CacheToGitHubActionsArgs) Defaults() *CacheToGitHubActionsArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumi.BoolPtr(false) - } - if tmp.Mode == nil { - tmp.Mode = CacheMode("min") - } - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - tmp.Scope = pulumi.StringPtr(d.(string)) - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - tmp.Token = pulumi.StringPtr(d.(string)) - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - tmp.Url = pulumi.StringPtr(d.(string)) - } - } - return &tmp -} -func (CacheToGitHubActionsArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToGitHubActions)(nil)).Elem() -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsOutput() CacheToGitHubActionsOutput { - return i.ToCacheToGitHubActionsOutputWithContext(context.Background()) -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsOutputWithContext(ctx context.Context) CacheToGitHubActionsOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToGitHubActionsOutput) -} - -func (i CacheToGitHubActionsArgs) ToOutput(ctx context.Context) pulumix.Output[CacheToGitHubActions] { - return pulumix.Output[CacheToGitHubActions]{ - OutputState: i.ToCacheToGitHubActionsOutputWithContext(ctx).OutputState, - } -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsPtrOutput() CacheToGitHubActionsPtrOutput { - return i.ToCacheToGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsPtrOutputWithContext(ctx context.Context) CacheToGitHubActionsPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToGitHubActionsOutput).ToCacheToGitHubActionsPtrOutputWithContext(ctx) -} - -// CacheToGitHubActionsPtrInput is an input type that accepts CacheToGitHubActionsArgs, CacheToGitHubActionsPtr and CacheToGitHubActionsPtrOutput values. -// You can construct a concrete instance of `CacheToGitHubActionsPtrInput` via: -// -// CacheToGitHubActionsArgs{...} -// -// or: -// -// nil -type CacheToGitHubActionsPtrInput interface { - pulumi.Input - - ToCacheToGitHubActionsPtrOutput() CacheToGitHubActionsPtrOutput - ToCacheToGitHubActionsPtrOutputWithContext(context.Context) CacheToGitHubActionsPtrOutput -} - -type cacheToGitHubActionsPtrType CacheToGitHubActionsArgs - -func CacheToGitHubActionsPtr(v *CacheToGitHubActionsArgs) CacheToGitHubActionsPtrInput { - return (*cacheToGitHubActionsPtrType)(v) -} - -func (*cacheToGitHubActionsPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToGitHubActions)(nil)).Elem() -} - -func (i *cacheToGitHubActionsPtrType) ToCacheToGitHubActionsPtrOutput() CacheToGitHubActionsPtrOutput { - return i.ToCacheToGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (i *cacheToGitHubActionsPtrType) ToCacheToGitHubActionsPtrOutputWithContext(ctx context.Context) CacheToGitHubActionsPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToGitHubActionsPtrOutput) -} - -func (i *cacheToGitHubActionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToGitHubActions] { - return pulumix.Output[*CacheToGitHubActions]{ - OutputState: i.ToCacheToGitHubActionsPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheToGitHubActionsOutput struct{ *pulumi.OutputState } - -func (CacheToGitHubActionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToGitHubActions)(nil)).Elem() -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsOutput() CacheToGitHubActionsOutput { - return o -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsOutputWithContext(ctx context.Context) CacheToGitHubActionsOutput { - return o -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsPtrOutput() CacheToGitHubActionsPtrOutput { - return o.ToCacheToGitHubActionsPtrOutputWithContext(context.Background()) -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsPtrOutputWithContext(ctx context.Context) CacheToGitHubActionsPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToGitHubActions) *CacheToGitHubActions { - return &v - }).(CacheToGitHubActionsPtrOutput) -} - -func (o CacheToGitHubActionsOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToGitHubActions] { - return pulumix.Output[CacheToGitHubActions]{ - OutputState: o.OutputState, - } -} - -// Ignore errors caused by failed cache exports. -func (o CacheToGitHubActionsOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToGitHubActions) *bool { return v.IgnoreError }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToGitHubActionsOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v CacheToGitHubActions) *CacheMode { return v.Mode }).(CacheModePtrOutput) -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheToGitHubActionsOutput) Scope() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToGitHubActions) *string { return v.Scope }).(pulumi.StringPtrOutput) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsOutput) Token() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToGitHubActions) *string { return v.Token }).(pulumi.StringPtrOutput) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsOutput) Url() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToGitHubActions) *string { return v.Url }).(pulumi.StringPtrOutput) -} - -type CacheToGitHubActionsPtrOutput struct{ *pulumi.OutputState } - -func (CacheToGitHubActionsPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToGitHubActions)(nil)).Elem() -} - -func (o CacheToGitHubActionsPtrOutput) ToCacheToGitHubActionsPtrOutput() CacheToGitHubActionsPtrOutput { - return o -} - -func (o CacheToGitHubActionsPtrOutput) ToCacheToGitHubActionsPtrOutputWithContext(ctx context.Context) CacheToGitHubActionsPtrOutput { - return o -} - -func (o CacheToGitHubActionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToGitHubActions] { - return pulumix.Output[*CacheToGitHubActions]{ - OutputState: o.OutputState, - } -} - -func (o CacheToGitHubActionsPtrOutput) Elem() CacheToGitHubActionsOutput { - return o.ApplyT(func(v *CacheToGitHubActions) CacheToGitHubActions { - if v != nil { - return *v - } - var ret CacheToGitHubActions - return ret - }).(CacheToGitHubActionsOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToGitHubActionsPtrOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToGitHubActions) *bool { - if v == nil { - return nil - } - return v.IgnoreError - }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToGitHubActionsPtrOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v *CacheToGitHubActions) *CacheMode { - if v == nil { - return nil - } - return v.Mode - }).(CacheModePtrOutput) -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheToGitHubActionsPtrOutput) Scope() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToGitHubActions) *string { - if v == nil { - return nil - } - return v.Scope - }).(pulumi.StringPtrOutput) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsPtrOutput) Token() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToGitHubActions) *string { - if v == nil { - return nil - } - return v.Token - }).(pulumi.StringPtrOutput) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsPtrOutput) Url() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToGitHubActions) *string { - if v == nil { - return nil - } - return v.Url - }).(pulumi.StringPtrOutput) -} - -// Include an inline cache with the exported image. -type CacheToInline struct { -} - -// CacheToInlineInput is an input type that accepts CacheToInlineArgs and CacheToInlineOutput values. -// You can construct a concrete instance of `CacheToInlineInput` via: -// -// CacheToInlineArgs{...} -type CacheToInlineInput interface { - pulumi.Input - - ToCacheToInlineOutput() CacheToInlineOutput - ToCacheToInlineOutputWithContext(context.Context) CacheToInlineOutput -} - -// Include an inline cache with the exported image. -type CacheToInlineArgs struct { -} - -func (CacheToInlineArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToInline)(nil)).Elem() -} - -func (i CacheToInlineArgs) ToCacheToInlineOutput() CacheToInlineOutput { - return i.ToCacheToInlineOutputWithContext(context.Background()) -} - -func (i CacheToInlineArgs) ToCacheToInlineOutputWithContext(ctx context.Context) CacheToInlineOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToInlineOutput) -} - -func (i CacheToInlineArgs) ToOutput(ctx context.Context) pulumix.Output[CacheToInline] { - return pulumix.Output[CacheToInline]{ - OutputState: i.ToCacheToInlineOutputWithContext(ctx).OutputState, - } -} - -func (i CacheToInlineArgs) ToCacheToInlinePtrOutput() CacheToInlinePtrOutput { - return i.ToCacheToInlinePtrOutputWithContext(context.Background()) -} - -func (i CacheToInlineArgs) ToCacheToInlinePtrOutputWithContext(ctx context.Context) CacheToInlinePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToInlineOutput).ToCacheToInlinePtrOutputWithContext(ctx) -} - -// CacheToInlinePtrInput is an input type that accepts CacheToInlineArgs, CacheToInlinePtr and CacheToInlinePtrOutput values. -// You can construct a concrete instance of `CacheToInlinePtrInput` via: -// -// CacheToInlineArgs{...} -// -// or: -// -// nil -type CacheToInlinePtrInput interface { - pulumi.Input - - ToCacheToInlinePtrOutput() CacheToInlinePtrOutput - ToCacheToInlinePtrOutputWithContext(context.Context) CacheToInlinePtrOutput -} - -type cacheToInlinePtrType CacheToInlineArgs - -func CacheToInlinePtr(v *CacheToInlineArgs) CacheToInlinePtrInput { - return (*cacheToInlinePtrType)(v) -} - -func (*cacheToInlinePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToInline)(nil)).Elem() -} - -func (i *cacheToInlinePtrType) ToCacheToInlinePtrOutput() CacheToInlinePtrOutput { - return i.ToCacheToInlinePtrOutputWithContext(context.Background()) -} - -func (i *cacheToInlinePtrType) ToCacheToInlinePtrOutputWithContext(ctx context.Context) CacheToInlinePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToInlinePtrOutput) -} - -func (i *cacheToInlinePtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToInline] { - return pulumix.Output[*CacheToInline]{ - OutputState: i.ToCacheToInlinePtrOutputWithContext(ctx).OutputState, - } -} - -// Include an inline cache with the exported image. -type CacheToInlineOutput struct{ *pulumi.OutputState } - -func (CacheToInlineOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToInline)(nil)).Elem() -} - -func (o CacheToInlineOutput) ToCacheToInlineOutput() CacheToInlineOutput { - return o -} - -func (o CacheToInlineOutput) ToCacheToInlineOutputWithContext(ctx context.Context) CacheToInlineOutput { - return o -} - -func (o CacheToInlineOutput) ToCacheToInlinePtrOutput() CacheToInlinePtrOutput { - return o.ToCacheToInlinePtrOutputWithContext(context.Background()) -} - -func (o CacheToInlineOutput) ToCacheToInlinePtrOutputWithContext(ctx context.Context) CacheToInlinePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToInline) *CacheToInline { - return &v - }).(CacheToInlinePtrOutput) -} - -func (o CacheToInlineOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToInline] { - return pulumix.Output[CacheToInline]{ - OutputState: o.OutputState, - } -} - -type CacheToInlinePtrOutput struct{ *pulumi.OutputState } - -func (CacheToInlinePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToInline)(nil)).Elem() -} - -func (o CacheToInlinePtrOutput) ToCacheToInlinePtrOutput() CacheToInlinePtrOutput { - return o -} - -func (o CacheToInlinePtrOutput) ToCacheToInlinePtrOutputWithContext(ctx context.Context) CacheToInlinePtrOutput { - return o -} - -func (o CacheToInlinePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToInline] { - return pulumix.Output[*CacheToInline]{ - OutputState: o.OutputState, - } -} - -func (o CacheToInlinePtrOutput) Elem() CacheToInlineOutput { - return o.ApplyT(func(v *CacheToInline) CacheToInline { - if v != nil { - return *v - } - var ret CacheToInline - return ret - }).(CacheToInlineOutput) -} - -type CacheToLocal struct { - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Path of the local directory to export the cache. - Dest string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` -} - -// Defaults sets the appropriate defaults for CacheToLocal -func (val *CacheToLocal) Defaults() *CacheToLocal { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - return &tmp -} - -// CacheToLocalInput is an input type that accepts CacheToLocalArgs and CacheToLocalOutput values. -// You can construct a concrete instance of `CacheToLocalInput` via: -// -// CacheToLocalArgs{...} -type CacheToLocalInput interface { - pulumi.Input - - ToCacheToLocalOutput() CacheToLocalOutput - ToCacheToLocalOutputWithContext(context.Context) CacheToLocalOutput -} - -type CacheToLocalArgs struct { - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // Path of the local directory to export the cache. - Dest pulumi.StringInput `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumi.BoolPtrInput `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode CacheModePtrInput `pulumi:"mode"` -} - -// Defaults sets the appropriate defaults for CacheToLocalArgs -func (val *CacheToLocalArgs) Defaults() *CacheToLocalArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumi.BoolPtr(false) - } - if tmp.Mode == nil { - tmp.Mode = CacheMode("min") - } - return &tmp -} -func (CacheToLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToLocal)(nil)).Elem() -} - -func (i CacheToLocalArgs) ToCacheToLocalOutput() CacheToLocalOutput { - return i.ToCacheToLocalOutputWithContext(context.Background()) -} - -func (i CacheToLocalArgs) ToCacheToLocalOutputWithContext(ctx context.Context) CacheToLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToLocalOutput) -} - -func (i CacheToLocalArgs) ToOutput(ctx context.Context) pulumix.Output[CacheToLocal] { - return pulumix.Output[CacheToLocal]{ - OutputState: i.ToCacheToLocalOutputWithContext(ctx).OutputState, - } -} - -func (i CacheToLocalArgs) ToCacheToLocalPtrOutput() CacheToLocalPtrOutput { - return i.ToCacheToLocalPtrOutputWithContext(context.Background()) -} - -func (i CacheToLocalArgs) ToCacheToLocalPtrOutputWithContext(ctx context.Context) CacheToLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToLocalOutput).ToCacheToLocalPtrOutputWithContext(ctx) -} - -// CacheToLocalPtrInput is an input type that accepts CacheToLocalArgs, CacheToLocalPtr and CacheToLocalPtrOutput values. -// You can construct a concrete instance of `CacheToLocalPtrInput` via: -// -// CacheToLocalArgs{...} -// -// or: -// -// nil -type CacheToLocalPtrInput interface { - pulumi.Input - - ToCacheToLocalPtrOutput() CacheToLocalPtrOutput - ToCacheToLocalPtrOutputWithContext(context.Context) CacheToLocalPtrOutput -} - -type cacheToLocalPtrType CacheToLocalArgs - -func CacheToLocalPtr(v *CacheToLocalArgs) CacheToLocalPtrInput { - return (*cacheToLocalPtrType)(v) -} - -func (*cacheToLocalPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToLocal)(nil)).Elem() -} - -func (i *cacheToLocalPtrType) ToCacheToLocalPtrOutput() CacheToLocalPtrOutput { - return i.ToCacheToLocalPtrOutputWithContext(context.Background()) -} - -func (i *cacheToLocalPtrType) ToCacheToLocalPtrOutputWithContext(ctx context.Context) CacheToLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToLocalPtrOutput) -} - -func (i *cacheToLocalPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToLocal] { - return pulumix.Output[*CacheToLocal]{ - OutputState: i.ToCacheToLocalPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheToLocalOutput struct{ *pulumi.OutputState } - -func (CacheToLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToLocal)(nil)).Elem() -} - -func (o CacheToLocalOutput) ToCacheToLocalOutput() CacheToLocalOutput { - return o -} - -func (o CacheToLocalOutput) ToCacheToLocalOutputWithContext(ctx context.Context) CacheToLocalOutput { - return o -} - -func (o CacheToLocalOutput) ToCacheToLocalPtrOutput() CacheToLocalPtrOutput { - return o.ToCacheToLocalPtrOutputWithContext(context.Background()) -} - -func (o CacheToLocalOutput) ToCacheToLocalPtrOutputWithContext(ctx context.Context) CacheToLocalPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToLocal) *CacheToLocal { - return &v - }).(CacheToLocalPtrOutput) -} - -func (o CacheToLocalOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToLocal] { - return pulumix.Output[CacheToLocal]{ - OutputState: o.OutputState, - } -} - -// The compression type to use. -func (o CacheToLocalOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v CacheToLocal) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o CacheToLocalOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v CacheToLocal) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// Path of the local directory to export the cache. -func (o CacheToLocalOutput) Dest() pulumi.StringOutput { - return o.ApplyT(func(v CacheToLocal) string { return v.Dest }).(pulumi.StringOutput) -} - -// Forcefully apply compression. -func (o CacheToLocalOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToLocal) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToLocalOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToLocal) *bool { return v.IgnoreError }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToLocalOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v CacheToLocal) *CacheMode { return v.Mode }).(CacheModePtrOutput) -} - -type CacheToLocalPtrOutput struct{ *pulumi.OutputState } - -func (CacheToLocalPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToLocal)(nil)).Elem() -} - -func (o CacheToLocalPtrOutput) ToCacheToLocalPtrOutput() CacheToLocalPtrOutput { - return o -} - -func (o CacheToLocalPtrOutput) ToCacheToLocalPtrOutputWithContext(ctx context.Context) CacheToLocalPtrOutput { - return o -} - -func (o CacheToLocalPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToLocal] { - return pulumix.Output[*CacheToLocal]{ - OutputState: o.OutputState, - } -} - -func (o CacheToLocalPtrOutput) Elem() CacheToLocalOutput { - return o.ApplyT(func(v *CacheToLocal) CacheToLocal { - if v != nil { - return *v - } - var ret CacheToLocal - return ret - }).(CacheToLocalOutput) -} - -// The compression type to use. -func (o CacheToLocalPtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *CacheToLocal) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o CacheToLocalPtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *CacheToLocal) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// Path of the local directory to export the cache. -func (o CacheToLocalPtrOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToLocal) *string { - if v == nil { - return nil - } - return &v.Dest - }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o CacheToLocalPtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToLocal) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToLocalPtrOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToLocal) *bool { - if v == nil { - return nil - } - return v.IgnoreError - }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToLocalPtrOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v *CacheToLocal) *CacheMode { - if v == nil { - return nil - } - return v.Mode - }).(CacheModePtrOutput) -} - -type CacheToRegistry struct { - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // Export cache manifest as an OCI-compatible image manifest instead of a - // manifest list. Requires `ociMediaTypes` to also be `true`. - // - // Some registries like AWS ECR will not work with caching if this is - // `false`. - // - // Defaults to `false` to match Docker's default behavior. - ImageManifest *bool `pulumi:"imageManifest"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // Whether to use OCI media types in exported manifests. Defaults to - // `true`. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Fully qualified name of the cache image to import. - Ref string `pulumi:"ref"` -} - -// Defaults sets the appropriate defaults for CacheToRegistry -func (val *CacheToRegistry) Defaults() *CacheToRegistry { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.ImageManifest == nil { - imageManifest_ := false - tmp.ImageManifest = &imageManifest_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := true - tmp.OciMediaTypes = &ociMediaTypes_ - } - return &tmp -} - -// CacheToRegistryInput is an input type that accepts CacheToRegistryArgs and CacheToRegistryOutput values. -// You can construct a concrete instance of `CacheToRegistryInput` via: -// -// CacheToRegistryArgs{...} -type CacheToRegistryInput interface { - pulumi.Input - - ToCacheToRegistryOutput() CacheToRegistryOutput - ToCacheToRegistryOutputWithContext(context.Context) CacheToRegistryOutput -} - -type CacheToRegistryArgs struct { - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumi.BoolPtrInput `pulumi:"ignoreError"` - // Export cache manifest as an OCI-compatible image manifest instead of a - // manifest list. Requires `ociMediaTypes` to also be `true`. - // - // Some registries like AWS ECR will not work with caching if this is - // `false`. - // - // Defaults to `false` to match Docker's default behavior. - ImageManifest pulumi.BoolPtrInput `pulumi:"imageManifest"` - // The cache mode to use. Defaults to `min`. - Mode CacheModePtrInput `pulumi:"mode"` - // Whether to use OCI media types in exported manifests. Defaults to - // `true`. - OciMediaTypes pulumi.BoolPtrInput `pulumi:"ociMediaTypes"` - // Fully qualified name of the cache image to import. - Ref pulumi.StringInput `pulumi:"ref"` -} - -// Defaults sets the appropriate defaults for CacheToRegistryArgs -func (val *CacheToRegistryArgs) Defaults() *CacheToRegistryArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumi.BoolPtr(false) - } - if tmp.ImageManifest == nil { - tmp.ImageManifest = pulumi.BoolPtr(false) - } - if tmp.Mode == nil { - tmp.Mode = CacheMode("min") - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumi.BoolPtr(true) - } - return &tmp -} -func (CacheToRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToRegistry)(nil)).Elem() -} - -func (i CacheToRegistryArgs) ToCacheToRegistryOutput() CacheToRegistryOutput { - return i.ToCacheToRegistryOutputWithContext(context.Background()) -} - -func (i CacheToRegistryArgs) ToCacheToRegistryOutputWithContext(ctx context.Context) CacheToRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToRegistryOutput) -} - -func (i CacheToRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[CacheToRegistry] { - return pulumix.Output[CacheToRegistry]{ - OutputState: i.ToCacheToRegistryOutputWithContext(ctx).OutputState, - } -} - -func (i CacheToRegistryArgs) ToCacheToRegistryPtrOutput() CacheToRegistryPtrOutput { - return i.ToCacheToRegistryPtrOutputWithContext(context.Background()) -} - -func (i CacheToRegistryArgs) ToCacheToRegistryPtrOutputWithContext(ctx context.Context) CacheToRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToRegistryOutput).ToCacheToRegistryPtrOutputWithContext(ctx) -} - -// CacheToRegistryPtrInput is an input type that accepts CacheToRegistryArgs, CacheToRegistryPtr and CacheToRegistryPtrOutput values. -// You can construct a concrete instance of `CacheToRegistryPtrInput` via: -// -// CacheToRegistryArgs{...} -// -// or: -// -// nil -type CacheToRegistryPtrInput interface { - pulumi.Input - - ToCacheToRegistryPtrOutput() CacheToRegistryPtrOutput - ToCacheToRegistryPtrOutputWithContext(context.Context) CacheToRegistryPtrOutput -} - -type cacheToRegistryPtrType CacheToRegistryArgs - -func CacheToRegistryPtr(v *CacheToRegistryArgs) CacheToRegistryPtrInput { - return (*cacheToRegistryPtrType)(v) -} - -func (*cacheToRegistryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToRegistry)(nil)).Elem() -} - -func (i *cacheToRegistryPtrType) ToCacheToRegistryPtrOutput() CacheToRegistryPtrOutput { - return i.ToCacheToRegistryPtrOutputWithContext(context.Background()) -} - -func (i *cacheToRegistryPtrType) ToCacheToRegistryPtrOutputWithContext(ctx context.Context) CacheToRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToRegistryPtrOutput) -} - -func (i *cacheToRegistryPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToRegistry] { - return pulumix.Output[*CacheToRegistry]{ - OutputState: i.ToCacheToRegistryPtrOutputWithContext(ctx).OutputState, - } -} - -type CacheToRegistryOutput struct{ *pulumi.OutputState } - -func (CacheToRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToRegistry)(nil)).Elem() -} - -func (o CacheToRegistryOutput) ToCacheToRegistryOutput() CacheToRegistryOutput { - return o -} - -func (o CacheToRegistryOutput) ToCacheToRegistryOutputWithContext(ctx context.Context) CacheToRegistryOutput { - return o -} - -func (o CacheToRegistryOutput) ToCacheToRegistryPtrOutput() CacheToRegistryPtrOutput { - return o.ToCacheToRegistryPtrOutputWithContext(context.Background()) -} - -func (o CacheToRegistryOutput) ToCacheToRegistryPtrOutputWithContext(ctx context.Context) CacheToRegistryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToRegistry) *CacheToRegistry { - return &v - }).(CacheToRegistryPtrOutput) -} - -func (o CacheToRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToRegistry] { - return pulumix.Output[CacheToRegistry]{ - OutputState: o.OutputState, - } -} - -// The compression type to use. -func (o CacheToRegistryOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v CacheToRegistry) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o CacheToRegistryOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v CacheToRegistry) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// Forcefully apply compression. -func (o CacheToRegistryOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToRegistry) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToRegistryOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToRegistry) *bool { return v.IgnoreError }).(pulumi.BoolPtrOutput) -} - -// Export cache manifest as an OCI-compatible image manifest instead of a -// manifest list. Requires `ociMediaTypes` to also be `true`. -// -// Some registries like AWS ECR will not work with caching if this is -// `false`. -// -// Defaults to `false` to match Docker's default behavior. -func (o CacheToRegistryOutput) ImageManifest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToRegistry) *bool { return v.ImageManifest }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToRegistryOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v CacheToRegistry) *CacheMode { return v.Mode }).(CacheModePtrOutput) -} - -// Whether to use OCI media types in exported manifests. Defaults to -// `true`. -func (o CacheToRegistryOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToRegistry) *bool { return v.OciMediaTypes }).(pulumi.BoolPtrOutput) -} - -// Fully qualified name of the cache image to import. -func (o CacheToRegistryOutput) Ref() pulumi.StringOutput { - return o.ApplyT(func(v CacheToRegistry) string { return v.Ref }).(pulumi.StringOutput) -} - -type CacheToRegistryPtrOutput struct{ *pulumi.OutputState } - -func (CacheToRegistryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToRegistry)(nil)).Elem() -} - -func (o CacheToRegistryPtrOutput) ToCacheToRegistryPtrOutput() CacheToRegistryPtrOutput { - return o -} - -func (o CacheToRegistryPtrOutput) ToCacheToRegistryPtrOutputWithContext(ctx context.Context) CacheToRegistryPtrOutput { - return o -} - -func (o CacheToRegistryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToRegistry] { - return pulumix.Output[*CacheToRegistry]{ - OutputState: o.OutputState, - } -} - -func (o CacheToRegistryPtrOutput) Elem() CacheToRegistryOutput { - return o.ApplyT(func(v *CacheToRegistry) CacheToRegistry { - if v != nil { - return *v - } - var ret CacheToRegistry - return ret - }).(CacheToRegistryOutput) -} - -// The compression type to use. -func (o CacheToRegistryPtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o CacheToRegistryPtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// Forcefully apply compression. -func (o CacheToRegistryPtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToRegistryPtrOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *bool { - if v == nil { - return nil - } - return v.IgnoreError - }).(pulumi.BoolPtrOutput) -} - -// Export cache manifest as an OCI-compatible image manifest instead of a -// manifest list. Requires `ociMediaTypes` to also be `true`. -// -// Some registries like AWS ECR will not work with caching if this is -// `false`. -// -// Defaults to `false` to match Docker's default behavior. -func (o CacheToRegistryPtrOutput) ImageManifest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *bool { - if v == nil { - return nil - } - return v.ImageManifest - }).(pulumi.BoolPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToRegistryPtrOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *CacheMode { - if v == nil { - return nil - } - return v.Mode - }).(CacheModePtrOutput) -} - -// Whether to use OCI media types in exported manifests. Defaults to -// `true`. -func (o CacheToRegistryPtrOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *bool { - if v == nil { - return nil - } - return v.OciMediaTypes - }).(pulumi.BoolPtrOutput) -} - -// Fully qualified name of the cache image to import. -func (o CacheToRegistryPtrOutput) Ref() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToRegistry) *string { - if v == nil { - return nil - } - return &v.Ref - }).(pulumi.StringPtrOutput) -} - -type CacheToS3 struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId *string `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix *string `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket string `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl *string `pulumi:"endpointUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix *string `pulumi:"manifestsPrefix"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // Name of the cache image. - Name *string `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region string `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey *string `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken *string `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle *bool `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheToS3 -func (val *CacheToS3) Defaults() *CacheToS3 { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - accessKeyId_ := d.(string) - tmp.AccessKeyId = &accessKeyId_ - } - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if internal.IsZero(tmp.Region) { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = d.(string) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - secretAccessKey_ := d.(string) - tmp.SecretAccessKey = &secretAccessKey_ - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - sessionToken_ := d.(string) - tmp.SessionToken = &sessionToken_ - } - } - return &tmp -} - -// CacheToS3Input is an input type that accepts CacheToS3Args and CacheToS3Output values. -// You can construct a concrete instance of `CacheToS3Input` via: -// -// CacheToS3Args{...} -type CacheToS3Input interface { - pulumi.Input - - ToCacheToS3Output() CacheToS3Output - ToCacheToS3OutputWithContext(context.Context) CacheToS3Output -} - -type CacheToS3Args struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId pulumi.StringPtrInput `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix pulumi.StringPtrInput `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket pulumi.StringInput `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl pulumi.StringPtrInput `pulumi:"endpointUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumi.BoolPtrInput `pulumi:"ignoreError"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix pulumi.StringPtrInput `pulumi:"manifestsPrefix"` - // The cache mode to use. Defaults to `min`. - Mode CacheModePtrInput `pulumi:"mode"` - // Name of the cache image. - Name pulumi.StringPtrInput `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region pulumi.StringInput `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey pulumi.StringPtrInput `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken pulumi.StringPtrInput `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle pulumi.BoolPtrInput `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheToS3Args -func (val *CacheToS3Args) Defaults() *CacheToS3Args { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - tmp.AccessKeyId = pulumi.StringPtr(d.(string)) - } - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumi.BoolPtr(false) - } - if tmp.Mode == nil { - tmp.Mode = CacheMode("min") - } - if tmp.Region == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = pulumi.String(d.(string)) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - tmp.SecretAccessKey = pulumi.StringPtr(d.(string)) - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - tmp.SessionToken = pulumi.StringPtr(d.(string)) - } - } - return &tmp -} -func (CacheToS3Args) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToS3)(nil)).Elem() -} - -func (i CacheToS3Args) ToCacheToS3Output() CacheToS3Output { - return i.ToCacheToS3OutputWithContext(context.Background()) -} - -func (i CacheToS3Args) ToCacheToS3OutputWithContext(ctx context.Context) CacheToS3Output { - return pulumi.ToOutputWithContext(ctx, i).(CacheToS3Output) -} - -func (i CacheToS3Args) ToOutput(ctx context.Context) pulumix.Output[CacheToS3] { - return pulumix.Output[CacheToS3]{ - OutputState: i.ToCacheToS3OutputWithContext(ctx).OutputState, - } -} - -func (i CacheToS3Args) ToCacheToS3PtrOutput() CacheToS3PtrOutput { - return i.ToCacheToS3PtrOutputWithContext(context.Background()) -} - -func (i CacheToS3Args) ToCacheToS3PtrOutputWithContext(ctx context.Context) CacheToS3PtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToS3Output).ToCacheToS3PtrOutputWithContext(ctx) -} - -// CacheToS3PtrInput is an input type that accepts CacheToS3Args, CacheToS3Ptr and CacheToS3PtrOutput values. -// You can construct a concrete instance of `CacheToS3PtrInput` via: -// -// CacheToS3Args{...} -// -// or: -// -// nil -type CacheToS3PtrInput interface { - pulumi.Input - - ToCacheToS3PtrOutput() CacheToS3PtrOutput - ToCacheToS3PtrOutputWithContext(context.Context) CacheToS3PtrOutput -} - -type cacheToS3PtrType CacheToS3Args - -func CacheToS3Ptr(v *CacheToS3Args) CacheToS3PtrInput { - return (*cacheToS3PtrType)(v) -} - -func (*cacheToS3PtrType) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToS3)(nil)).Elem() -} - -func (i *cacheToS3PtrType) ToCacheToS3PtrOutput() CacheToS3PtrOutput { - return i.ToCacheToS3PtrOutputWithContext(context.Background()) -} - -func (i *cacheToS3PtrType) ToCacheToS3PtrOutputWithContext(ctx context.Context) CacheToS3PtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToS3PtrOutput) -} - -func (i *cacheToS3PtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheToS3] { - return pulumix.Output[*CacheToS3]{ - OutputState: i.ToCacheToS3PtrOutputWithContext(ctx).OutputState, - } -} - -type CacheToS3Output struct{ *pulumi.OutputState } - -func (CacheToS3Output) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToS3)(nil)).Elem() -} - -func (o CacheToS3Output) ToCacheToS3Output() CacheToS3Output { - return o -} - -func (o CacheToS3Output) ToCacheToS3OutputWithContext(ctx context.Context) CacheToS3Output { - return o -} - -func (o CacheToS3Output) ToCacheToS3PtrOutput() CacheToS3PtrOutput { - return o.ToCacheToS3PtrOutputWithContext(context.Background()) -} - -func (o CacheToS3Output) ToCacheToS3PtrOutputWithContext(ctx context.Context) CacheToS3PtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheToS3) *CacheToS3 { - return &v - }).(CacheToS3PtrOutput) -} - -func (o CacheToS3Output) ToOutput(ctx context.Context) pulumix.Output[CacheToS3] { - return pulumix.Output[CacheToS3]{ - OutputState: o.OutputState, - } -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheToS3Output) AccessKeyId() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.AccessKeyId }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend to blob filenames. -func (o CacheToS3Output) BlobsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.BlobsPrefix }).(pulumi.StringPtrOutput) -} - -// Name of the S3 bucket. -func (o CacheToS3Output) Bucket() pulumi.StringOutput { - return o.ApplyT(func(v CacheToS3) string { return v.Bucket }).(pulumi.StringOutput) -} - -// Endpoint of the S3 bucket. -func (o CacheToS3Output) EndpointUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.EndpointUrl }).(pulumi.StringPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToS3Output) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToS3) *bool { return v.IgnoreError }).(pulumi.BoolPtrOutput) -} - -// Prefix to prepend on manifest filenames. -func (o CacheToS3Output) ManifestsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.ManifestsPrefix }).(pulumi.StringPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToS3Output) Mode() CacheModePtrOutput { - return o.ApplyT(func(v CacheToS3) *CacheMode { return v.Mode }).(CacheModePtrOutput) -} - -// Name of the cache image. -func (o CacheToS3Output) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.Name }).(pulumi.StringPtrOutput) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheToS3Output) Region() pulumi.StringOutput { - return o.ApplyT(func(v CacheToS3) string { return v.Region }).(pulumi.StringOutput) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheToS3Output) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.SecretAccessKey }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheToS3Output) SessionToken() pulumi.StringPtrOutput { - return o.ApplyT(func(v CacheToS3) *string { return v.SessionToken }).(pulumi.StringPtrOutput) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheToS3Output) UsePathStyle() pulumi.BoolPtrOutput { - return o.ApplyT(func(v CacheToS3) *bool { return v.UsePathStyle }).(pulumi.BoolPtrOutput) -} - -type CacheToS3PtrOutput struct{ *pulumi.OutputState } - -func (CacheToS3PtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**CacheToS3)(nil)).Elem() -} - -func (o CacheToS3PtrOutput) ToCacheToS3PtrOutput() CacheToS3PtrOutput { - return o -} - -func (o CacheToS3PtrOutput) ToCacheToS3PtrOutputWithContext(ctx context.Context) CacheToS3PtrOutput { - return o -} - -func (o CacheToS3PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheToS3] { - return pulumix.Output[*CacheToS3]{ - OutputState: o.OutputState, - } -} - -func (o CacheToS3PtrOutput) Elem() CacheToS3Output { - return o.ApplyT(func(v *CacheToS3) CacheToS3 { - if v != nil { - return *v - } - var ret CacheToS3 - return ret - }).(CacheToS3Output) -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheToS3PtrOutput) AccessKeyId() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.AccessKeyId - }).(pulumi.StringPtrOutput) -} - -// Prefix to prepend to blob filenames. -func (o CacheToS3PtrOutput) BlobsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.BlobsPrefix - }).(pulumi.StringPtrOutput) -} - -// Name of the S3 bucket. -func (o CacheToS3PtrOutput) Bucket() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return &v.Bucket - }).(pulumi.StringPtrOutput) -} - -// Endpoint of the S3 bucket. -func (o CacheToS3PtrOutput) EndpointUrl() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.EndpointUrl - }).(pulumi.StringPtrOutput) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToS3PtrOutput) IgnoreError() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToS3) *bool { - if v == nil { - return nil - } - return v.IgnoreError - }).(pulumi.BoolPtrOutput) -} - -// Prefix to prepend on manifest filenames. -func (o CacheToS3PtrOutput) ManifestsPrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.ManifestsPrefix - }).(pulumi.StringPtrOutput) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToS3PtrOutput) Mode() CacheModePtrOutput { - return o.ApplyT(func(v *CacheToS3) *CacheMode { - if v == nil { - return nil - } - return v.Mode - }).(CacheModePtrOutput) -} - -// Name of the cache image. -func (o CacheToS3PtrOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.Name - }).(pulumi.StringPtrOutput) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheToS3PtrOutput) Region() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return &v.Region - }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheToS3PtrOutput) SecretAccessKey() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.SecretAccessKey - }).(pulumi.StringPtrOutput) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheToS3PtrOutput) SessionToken() pulumi.StringPtrOutput { - return o.ApplyT(func(v *CacheToS3) *string { - if v == nil { - return nil - } - return v.SessionToken - }).(pulumi.StringPtrOutput) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheToS3PtrOutput) UsePathStyle() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *CacheToS3) *bool { - if v == nil { - return nil - } - return v.UsePathStyle - }).(pulumi.BoolPtrOutput) -} - -type Context struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location string `pulumi:"location"` -} - -// ContextInput is an input type that accepts ContextArgs and ContextOutput values. -// You can construct a concrete instance of `ContextInput` via: -// -// ContextArgs{...} -type ContextInput interface { - pulumi.Input - - ToContextOutput() ContextOutput - ToContextOutputWithContext(context.Context) ContextOutput -} - -type ContextArgs struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location pulumi.StringInput `pulumi:"location"` -} - -func (ContextArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Context)(nil)).Elem() -} - -func (i ContextArgs) ToContextOutput() ContextOutput { - return i.ToContextOutputWithContext(context.Background()) -} - -func (i ContextArgs) ToContextOutputWithContext(ctx context.Context) ContextOutput { - return pulumi.ToOutputWithContext(ctx, i).(ContextOutput) -} - -func (i ContextArgs) ToOutput(ctx context.Context) pulumix.Output[Context] { - return pulumix.Output[Context]{ - OutputState: i.ToContextOutputWithContext(ctx).OutputState, - } -} - -// ContextMapInput is an input type that accepts ContextMap and ContextMapOutput values. -// You can construct a concrete instance of `ContextMapInput` via: -// -// ContextMap{ "key": ContextArgs{...} } -type ContextMapInput interface { - pulumi.Input - - ToContextMapOutput() ContextMapOutput - ToContextMapOutputWithContext(context.Context) ContextMapOutput -} - -type ContextMap map[string]ContextInput - -func (ContextMap) ElementType() reflect.Type { - return reflect.TypeOf((*map[string]Context)(nil)).Elem() -} - -func (i ContextMap) ToContextMapOutput() ContextMapOutput { - return i.ToContextMapOutputWithContext(context.Background()) -} - -func (i ContextMap) ToContextMapOutputWithContext(ctx context.Context) ContextMapOutput { - return pulumi.ToOutputWithContext(ctx, i).(ContextMapOutput) -} - -func (i ContextMap) ToOutput(ctx context.Context) pulumix.Output[map[string]Context] { - return pulumix.Output[map[string]Context]{ - OutputState: i.ToContextMapOutputWithContext(ctx).OutputState, - } -} - -type ContextOutput struct{ *pulumi.OutputState } - -func (ContextOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Context)(nil)).Elem() -} - -func (o ContextOutput) ToContextOutput() ContextOutput { - return o -} - -func (o ContextOutput) ToContextOutputWithContext(ctx context.Context) ContextOutput { - return o -} - -func (o ContextOutput) ToOutput(ctx context.Context) pulumix.Output[Context] { - return pulumix.Output[Context]{ - OutputState: o.OutputState, - } -} - -// Resources to use for build context. -// -// The location can be: -// - A relative or absolute path to a local directory (`.`, `./app`, -// `/app`, etc.). -// - A remote URL of a Git repository, tarball, or plain text file -// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, -// etc.). -func (o ContextOutput) Location() pulumi.StringOutput { - return o.ApplyT(func(v Context) string { return v.Location }).(pulumi.StringOutput) -} - -type ContextMapOutput struct{ *pulumi.OutputState } - -func (ContextMapOutput) ElementType() reflect.Type { - return reflect.TypeOf((*map[string]Context)(nil)).Elem() -} - -func (o ContextMapOutput) ToContextMapOutput() ContextMapOutput { - return o -} - -func (o ContextMapOutput) ToContextMapOutputWithContext(ctx context.Context) ContextMapOutput { - return o -} - -func (o ContextMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]Context] { - return pulumix.Output[map[string]Context]{ - OutputState: o.OutputState, - } -} - -func (o ContextMapOutput) MapIndex(k pulumi.StringInput) ContextOutput { - return pulumi.All(o, k).ApplyT(func(vs []interface{}) Context { - return vs[0].(map[string]Context)[vs[1].(string)] - }).(ContextOutput) -} - -type Dockerfile struct { - // Raw Dockerfile contents. - // - // Conflicts with `location`. - // - // Equivalent to invoking Docker with `-f -`. - Inline *string `pulumi:"inline"` - // Location of the Dockerfile to use. - // - // Can be a relative or absolute path to a local file, or a remote URL. - // - // Defaults to `${context.location}/Dockerfile` if context is on-disk. - // - // Conflicts with `inline`. - Location *string `pulumi:"location"` -} - -// DockerfileInput is an input type that accepts DockerfileArgs and DockerfileOutput values. -// You can construct a concrete instance of `DockerfileInput` via: -// -// DockerfileArgs{...} -type DockerfileInput interface { - pulumi.Input - - ToDockerfileOutput() DockerfileOutput - ToDockerfileOutputWithContext(context.Context) DockerfileOutput -} - -type DockerfileArgs struct { - // Raw Dockerfile contents. - // - // Conflicts with `location`. - // - // Equivalent to invoking Docker with `-f -`. - Inline pulumi.StringPtrInput `pulumi:"inline"` - // Location of the Dockerfile to use. - // - // Can be a relative or absolute path to a local file, or a remote URL. - // - // Defaults to `${context.location}/Dockerfile` if context is on-disk. - // - // Conflicts with `inline`. - Location pulumi.StringPtrInput `pulumi:"location"` -} - -func (DockerfileArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Dockerfile)(nil)).Elem() -} - -func (i DockerfileArgs) ToDockerfileOutput() DockerfileOutput { - return i.ToDockerfileOutputWithContext(context.Background()) -} - -func (i DockerfileArgs) ToDockerfileOutputWithContext(ctx context.Context) DockerfileOutput { - return pulumi.ToOutputWithContext(ctx, i).(DockerfileOutput) -} - -func (i DockerfileArgs) ToOutput(ctx context.Context) pulumix.Output[Dockerfile] { - return pulumix.Output[Dockerfile]{ - OutputState: i.ToDockerfileOutputWithContext(ctx).OutputState, - } -} - -func (i DockerfileArgs) ToDockerfilePtrOutput() DockerfilePtrOutput { - return i.ToDockerfilePtrOutputWithContext(context.Background()) -} - -func (i DockerfileArgs) ToDockerfilePtrOutputWithContext(ctx context.Context) DockerfilePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(DockerfileOutput).ToDockerfilePtrOutputWithContext(ctx) -} - -// DockerfilePtrInput is an input type that accepts DockerfileArgs, DockerfilePtr and DockerfilePtrOutput values. -// You can construct a concrete instance of `DockerfilePtrInput` via: -// -// DockerfileArgs{...} -// -// or: -// -// nil -type DockerfilePtrInput interface { - pulumi.Input - - ToDockerfilePtrOutput() DockerfilePtrOutput - ToDockerfilePtrOutputWithContext(context.Context) DockerfilePtrOutput -} - -type dockerfilePtrType DockerfileArgs - -func DockerfilePtr(v *DockerfileArgs) DockerfilePtrInput { - return (*dockerfilePtrType)(v) -} - -func (*dockerfilePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**Dockerfile)(nil)).Elem() -} - -func (i *dockerfilePtrType) ToDockerfilePtrOutput() DockerfilePtrOutput { - return i.ToDockerfilePtrOutputWithContext(context.Background()) -} - -func (i *dockerfilePtrType) ToDockerfilePtrOutputWithContext(ctx context.Context) DockerfilePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(DockerfilePtrOutput) -} - -func (i *dockerfilePtrType) ToOutput(ctx context.Context) pulumix.Output[*Dockerfile] { - return pulumix.Output[*Dockerfile]{ - OutputState: i.ToDockerfilePtrOutputWithContext(ctx).OutputState, - } -} - -type DockerfileOutput struct{ *pulumi.OutputState } - -func (DockerfileOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Dockerfile)(nil)).Elem() -} - -func (o DockerfileOutput) ToDockerfileOutput() DockerfileOutput { - return o -} - -func (o DockerfileOutput) ToDockerfileOutputWithContext(ctx context.Context) DockerfileOutput { - return o -} - -func (o DockerfileOutput) ToDockerfilePtrOutput() DockerfilePtrOutput { - return o.ToDockerfilePtrOutputWithContext(context.Background()) -} - -func (o DockerfileOutput) ToDockerfilePtrOutputWithContext(ctx context.Context) DockerfilePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v Dockerfile) *Dockerfile { - return &v - }).(DockerfilePtrOutput) -} - -func (o DockerfileOutput) ToOutput(ctx context.Context) pulumix.Output[Dockerfile] { - return pulumix.Output[Dockerfile]{ - OutputState: o.OutputState, - } -} - -// Raw Dockerfile contents. -// -// Conflicts with `location`. -// -// Equivalent to invoking Docker with `-f -`. -func (o DockerfileOutput) Inline() pulumi.StringPtrOutput { - return o.ApplyT(func(v Dockerfile) *string { return v.Inline }).(pulumi.StringPtrOutput) -} - -// Location of the Dockerfile to use. -// -// Can be a relative or absolute path to a local file, or a remote URL. -// -// Defaults to `${context.location}/Dockerfile` if context is on-disk. -// -// Conflicts with `inline`. -func (o DockerfileOutput) Location() pulumi.StringPtrOutput { - return o.ApplyT(func(v Dockerfile) *string { return v.Location }).(pulumi.StringPtrOutput) -} - -type DockerfilePtrOutput struct{ *pulumi.OutputState } - -func (DockerfilePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Dockerfile)(nil)).Elem() -} - -func (o DockerfilePtrOutput) ToDockerfilePtrOutput() DockerfilePtrOutput { - return o -} - -func (o DockerfilePtrOutput) ToDockerfilePtrOutputWithContext(ctx context.Context) DockerfilePtrOutput { - return o -} - -func (o DockerfilePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*Dockerfile] { - return pulumix.Output[*Dockerfile]{ - OutputState: o.OutputState, - } -} - -func (o DockerfilePtrOutput) Elem() DockerfileOutput { - return o.ApplyT(func(v *Dockerfile) Dockerfile { - if v != nil { - return *v - } - var ret Dockerfile - return ret - }).(DockerfileOutput) -} - -// Raw Dockerfile contents. -// -// Conflicts with `location`. -// -// Equivalent to invoking Docker with `-f -`. -func (o DockerfilePtrOutput) Inline() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Dockerfile) *string { - if v == nil { - return nil - } - return v.Inline - }).(pulumi.StringPtrOutput) -} - -// Location of the Dockerfile to use. -// -// Can be a relative or absolute path to a local file, or a remote URL. -// -// Defaults to `${context.location}/Dockerfile` if context is on-disk. -// -// Conflicts with `inline`. -func (o DockerfilePtrOutput) Location() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Dockerfile) *string { - if v == nil { - return nil - } - return v.Location - }).(pulumi.StringPtrOutput) -} - -type Export struct { - // A no-op export. Helpful for silencing the 'no exports' warning if you - // just want to populate caches. - Cacheonly *ExportCacheOnly `pulumi:"cacheonly"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Export as a Docker image layout. - Docker *ExportDocker `pulumi:"docker"` - // Outputs the build result into a container image format. - Image *ExportImage `pulumi:"image"` - // Export to a local directory as files and directories. - Local *ExportLocal `pulumi:"local"` - // Identical to the Docker exporter but uses OCI media types by default. - Oci *ExportOCI `pulumi:"oci"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=docker`) - Raw *string `pulumi:"raw"` - // Identical to the Image exporter, but pushes by default. - Registry *ExportRegistry `pulumi:"registry"` - // Export to a local directory as a tarball. - Tar *ExportTar `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for Export -func (val *Export) Defaults() *Export { - if val == nil { - return nil - } - tmp := *val - tmp.Docker = tmp.Docker.Defaults() - - tmp.Image = tmp.Image.Defaults() - - tmp.Oci = tmp.Oci.Defaults() - - tmp.Registry = tmp.Registry.Defaults() - - return &tmp -} - -// ExportInput is an input type that accepts ExportArgs and ExportOutput values. -// You can construct a concrete instance of `ExportInput` via: -// -// ExportArgs{...} -type ExportInput interface { - pulumi.Input - - ToExportOutput() ExportOutput - ToExportOutputWithContext(context.Context) ExportOutput -} - -type ExportArgs struct { - // A no-op export. Helpful for silencing the 'no exports' warning if you - // just want to populate caches. - Cacheonly ExportCacheOnlyPtrInput `pulumi:"cacheonly"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumi.BoolPtrInput `pulumi:"disabled"` - // Export as a Docker image layout. - Docker ExportDockerPtrInput `pulumi:"docker"` - // Outputs the build result into a container image format. - Image ExportImagePtrInput `pulumi:"image"` - // Export to a local directory as files and directories. - Local ExportLocalPtrInput `pulumi:"local"` - // Identical to the Docker exporter but uses OCI media types by default. - Oci ExportOCIPtrInput `pulumi:"oci"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=docker`) - Raw pulumi.StringPtrInput `pulumi:"raw"` - // Identical to the Image exporter, but pushes by default. - Registry ExportRegistryPtrInput `pulumi:"registry"` - // Export to a local directory as a tarball. - Tar ExportTarPtrInput `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportArgs -func (val *ExportArgs) Defaults() *ExportArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (ExportArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Export)(nil)).Elem() -} - -func (i ExportArgs) ToExportOutput() ExportOutput { - return i.ToExportOutputWithContext(context.Background()) -} - -func (i ExportArgs) ToExportOutputWithContext(ctx context.Context) ExportOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOutput) -} - -func (i ExportArgs) ToOutput(ctx context.Context) pulumix.Output[Export] { - return pulumix.Output[Export]{ - OutputState: i.ToExportOutputWithContext(ctx).OutputState, - } -} - -// ExportArrayInput is an input type that accepts ExportArray and ExportArrayOutput values. -// You can construct a concrete instance of `ExportArrayInput` via: -// -// ExportArray{ ExportArgs{...} } -type ExportArrayInput interface { - pulumi.Input - - ToExportArrayOutput() ExportArrayOutput - ToExportArrayOutputWithContext(context.Context) ExportArrayOutput -} - -type ExportArray []ExportInput - -func (ExportArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]Export)(nil)).Elem() -} - -func (i ExportArray) ToExportArrayOutput() ExportArrayOutput { - return i.ToExportArrayOutputWithContext(context.Background()) -} - -func (i ExportArray) ToExportArrayOutputWithContext(ctx context.Context) ExportArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportArrayOutput) -} - -func (i ExportArray) ToOutput(ctx context.Context) pulumix.Output[[]Export] { - return pulumix.Output[[]Export]{ - OutputState: i.ToExportArrayOutputWithContext(ctx).OutputState, - } -} - -type ExportOutput struct{ *pulumi.OutputState } - -func (ExportOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Export)(nil)).Elem() -} - -func (o ExportOutput) ToExportOutput() ExportOutput { - return o -} - -func (o ExportOutput) ToExportOutputWithContext(ctx context.Context) ExportOutput { - return o -} - -func (o ExportOutput) ToOutput(ctx context.Context) pulumix.Output[Export] { - return pulumix.Output[Export]{ - OutputState: o.OutputState, - } -} - -// A no-op export. Helpful for silencing the 'no exports' warning if you -// just want to populate caches. -func (o ExportOutput) Cacheonly() ExportCacheOnlyPtrOutput { - return o.ApplyT(func(v Export) *ExportCacheOnly { return v.Cacheonly }).(ExportCacheOnlyPtrOutput) -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o ExportOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v Export) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) -} - -// Export as a Docker image layout. -func (o ExportOutput) Docker() ExportDockerPtrOutput { - return o.ApplyT(func(v Export) *ExportDocker { return v.Docker }).(ExportDockerPtrOutput) -} - -// Outputs the build result into a container image format. -func (o ExportOutput) Image() ExportImagePtrOutput { - return o.ApplyT(func(v Export) *ExportImage { return v.Image }).(ExportImagePtrOutput) -} - -// Export to a local directory as files and directories. -func (o ExportOutput) Local() ExportLocalPtrOutput { - return o.ApplyT(func(v Export) *ExportLocal { return v.Local }).(ExportLocalPtrOutput) -} - -// Identical to the Docker exporter but uses OCI media types by default. -func (o ExportOutput) Oci() ExportOCIPtrOutput { - return o.ApplyT(func(v Export) *ExportOCI { return v.Oci }).(ExportOCIPtrOutput) -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=docker`) -func (o ExportOutput) Raw() pulumi.StringPtrOutput { - return o.ApplyT(func(v Export) *string { return v.Raw }).(pulumi.StringPtrOutput) -} - -// Identical to the Image exporter, but pushes by default. -func (o ExportOutput) Registry() ExportRegistryPtrOutput { - return o.ApplyT(func(v Export) *ExportRegistry { return v.Registry }).(ExportRegistryPtrOutput) -} - -// Export to a local directory as a tarball. -func (o ExportOutput) Tar() ExportTarPtrOutput { - return o.ApplyT(func(v Export) *ExportTar { return v.Tar }).(ExportTarPtrOutput) -} - -type ExportArrayOutput struct{ *pulumi.OutputState } - -func (ExportArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]Export)(nil)).Elem() -} - -func (o ExportArrayOutput) ToExportArrayOutput() ExportArrayOutput { - return o -} - -func (o ExportArrayOutput) ToExportArrayOutputWithContext(ctx context.Context) ExportArrayOutput { - return o -} - -func (o ExportArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]Export] { - return pulumix.Output[[]Export]{ - OutputState: o.OutputState, - } -} - -func (o ExportArrayOutput) Index(i pulumi.IntInput) ExportOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) Export { - return vs[0].([]Export)[vs[1].(int)] - }).(ExportOutput) -} - -type ExportCacheOnly struct { -} - -// ExportCacheOnlyInput is an input type that accepts ExportCacheOnlyArgs and ExportCacheOnlyOutput values. -// You can construct a concrete instance of `ExportCacheOnlyInput` via: -// -// ExportCacheOnlyArgs{...} -type ExportCacheOnlyInput interface { - pulumi.Input - - ToExportCacheOnlyOutput() ExportCacheOnlyOutput - ToExportCacheOnlyOutputWithContext(context.Context) ExportCacheOnlyOutput -} - -type ExportCacheOnlyArgs struct { -} - -func (ExportCacheOnlyArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportCacheOnly)(nil)).Elem() -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyOutput() ExportCacheOnlyOutput { - return i.ToExportCacheOnlyOutputWithContext(context.Background()) -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyOutputWithContext(ctx context.Context) ExportCacheOnlyOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportCacheOnlyOutput) -} - -func (i ExportCacheOnlyArgs) ToOutput(ctx context.Context) pulumix.Output[ExportCacheOnly] { - return pulumix.Output[ExportCacheOnly]{ - OutputState: i.ToExportCacheOnlyOutputWithContext(ctx).OutputState, - } -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyPtrOutput() ExportCacheOnlyPtrOutput { - return i.ToExportCacheOnlyPtrOutputWithContext(context.Background()) -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyPtrOutputWithContext(ctx context.Context) ExportCacheOnlyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportCacheOnlyOutput).ToExportCacheOnlyPtrOutputWithContext(ctx) -} - -// ExportCacheOnlyPtrInput is an input type that accepts ExportCacheOnlyArgs, ExportCacheOnlyPtr and ExportCacheOnlyPtrOutput values. -// You can construct a concrete instance of `ExportCacheOnlyPtrInput` via: -// -// ExportCacheOnlyArgs{...} -// -// or: -// -// nil -type ExportCacheOnlyPtrInput interface { - pulumi.Input - - ToExportCacheOnlyPtrOutput() ExportCacheOnlyPtrOutput - ToExportCacheOnlyPtrOutputWithContext(context.Context) ExportCacheOnlyPtrOutput -} - -type exportCacheOnlyPtrType ExportCacheOnlyArgs - -func ExportCacheOnlyPtr(v *ExportCacheOnlyArgs) ExportCacheOnlyPtrInput { - return (*exportCacheOnlyPtrType)(v) -} - -func (*exportCacheOnlyPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportCacheOnly)(nil)).Elem() -} - -func (i *exportCacheOnlyPtrType) ToExportCacheOnlyPtrOutput() ExportCacheOnlyPtrOutput { - return i.ToExportCacheOnlyPtrOutputWithContext(context.Background()) -} - -func (i *exportCacheOnlyPtrType) ToExportCacheOnlyPtrOutputWithContext(ctx context.Context) ExportCacheOnlyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportCacheOnlyPtrOutput) -} - -func (i *exportCacheOnlyPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportCacheOnly] { - return pulumix.Output[*ExportCacheOnly]{ - OutputState: i.ToExportCacheOnlyPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportCacheOnlyOutput struct{ *pulumi.OutputState } - -func (ExportCacheOnlyOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportCacheOnly)(nil)).Elem() -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyOutput() ExportCacheOnlyOutput { - return o -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyOutputWithContext(ctx context.Context) ExportCacheOnlyOutput { - return o -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyPtrOutput() ExportCacheOnlyPtrOutput { - return o.ToExportCacheOnlyPtrOutputWithContext(context.Background()) -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyPtrOutputWithContext(ctx context.Context) ExportCacheOnlyPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportCacheOnly) *ExportCacheOnly { - return &v - }).(ExportCacheOnlyPtrOutput) -} - -func (o ExportCacheOnlyOutput) ToOutput(ctx context.Context) pulumix.Output[ExportCacheOnly] { - return pulumix.Output[ExportCacheOnly]{ - OutputState: o.OutputState, - } -} - -type ExportCacheOnlyPtrOutput struct{ *pulumi.OutputState } - -func (ExportCacheOnlyPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportCacheOnly)(nil)).Elem() -} - -func (o ExportCacheOnlyPtrOutput) ToExportCacheOnlyPtrOutput() ExportCacheOnlyPtrOutput { - return o -} - -func (o ExportCacheOnlyPtrOutput) ToExportCacheOnlyPtrOutputWithContext(ctx context.Context) ExportCacheOnlyPtrOutput { - return o -} - -func (o ExportCacheOnlyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportCacheOnly] { - return pulumix.Output[*ExportCacheOnly]{ - OutputState: o.OutputState, - } -} - -func (o ExportCacheOnlyPtrOutput) Elem() ExportCacheOnlyOutput { - return o.ApplyT(func(v *ExportCacheOnly) ExportCacheOnly { - if v != nil { - return *v - } - var ret ExportCacheOnly - return ret - }).(ExportCacheOnlyOutput) -} - -type ExportDocker struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // The local export path. - Dest *string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar *bool `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportDocker -func (val *ExportDocker) Defaults() *ExportDocker { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Tar == nil { - tar_ := true - tmp.Tar = &tar_ - } - return &tmp -} - -// ExportDockerInput is an input type that accepts ExportDockerArgs and ExportDockerOutput values. -// You can construct a concrete instance of `ExportDockerInput` via: -// -// ExportDockerArgs{...} -type ExportDockerInput interface { - pulumi.Input - - ToExportDockerOutput() ExportDockerOutput - ToExportDockerOutputWithContext(context.Context) ExportDockerOutput -} - -type ExportDockerArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumi.StringMapInput `pulumi:"annotations"` - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // The local export path. - Dest pulumi.StringPtrInput `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumi.StringArrayInput `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumi.BoolPtrInput `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar pulumi.BoolPtrInput `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportDockerArgs -func (val *ExportDockerArgs) Defaults() *ExportDockerArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumi.BoolPtr(false) - } - if tmp.Tar == nil { - tmp.Tar = pulumi.BoolPtr(true) - } - return &tmp -} -func (ExportDockerArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportDocker)(nil)).Elem() -} - -func (i ExportDockerArgs) ToExportDockerOutput() ExportDockerOutput { - return i.ToExportDockerOutputWithContext(context.Background()) -} - -func (i ExportDockerArgs) ToExportDockerOutputWithContext(ctx context.Context) ExportDockerOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportDockerOutput) -} - -func (i ExportDockerArgs) ToOutput(ctx context.Context) pulumix.Output[ExportDocker] { - return pulumix.Output[ExportDocker]{ - OutputState: i.ToExportDockerOutputWithContext(ctx).OutputState, - } -} - -func (i ExportDockerArgs) ToExportDockerPtrOutput() ExportDockerPtrOutput { - return i.ToExportDockerPtrOutputWithContext(context.Background()) -} - -func (i ExportDockerArgs) ToExportDockerPtrOutputWithContext(ctx context.Context) ExportDockerPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportDockerOutput).ToExportDockerPtrOutputWithContext(ctx) -} - -// ExportDockerPtrInput is an input type that accepts ExportDockerArgs, ExportDockerPtr and ExportDockerPtrOutput values. -// You can construct a concrete instance of `ExportDockerPtrInput` via: -// -// ExportDockerArgs{...} -// -// or: -// -// nil -type ExportDockerPtrInput interface { - pulumi.Input - - ToExportDockerPtrOutput() ExportDockerPtrOutput - ToExportDockerPtrOutputWithContext(context.Context) ExportDockerPtrOutput -} - -type exportDockerPtrType ExportDockerArgs - -func ExportDockerPtr(v *ExportDockerArgs) ExportDockerPtrInput { - return (*exportDockerPtrType)(v) -} - -func (*exportDockerPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportDocker)(nil)).Elem() -} - -func (i *exportDockerPtrType) ToExportDockerPtrOutput() ExportDockerPtrOutput { - return i.ToExportDockerPtrOutputWithContext(context.Background()) -} - -func (i *exportDockerPtrType) ToExportDockerPtrOutputWithContext(ctx context.Context) ExportDockerPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportDockerPtrOutput) -} - -func (i *exportDockerPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportDocker] { - return pulumix.Output[*ExportDocker]{ - OutputState: i.ToExportDockerPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportDockerOutput struct{ *pulumi.OutputState } - -func (ExportDockerOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportDocker)(nil)).Elem() -} - -func (o ExportDockerOutput) ToExportDockerOutput() ExportDockerOutput { - return o -} - -func (o ExportDockerOutput) ToExportDockerOutputWithContext(ctx context.Context) ExportDockerOutput { - return o -} - -func (o ExportDockerOutput) ToExportDockerPtrOutput() ExportDockerPtrOutput { - return o.ToExportDockerPtrOutputWithContext(context.Background()) -} - -func (o ExportDockerOutput) ToExportDockerPtrOutputWithContext(ctx context.Context) ExportDockerPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportDocker) *ExportDocker { - return &v - }).(ExportDockerPtrOutput) -} - -func (o ExportDockerOutput) ToOutput(ctx context.Context) pulumix.Output[ExportDocker] { - return pulumix.Output[ExportDocker]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportDockerOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v ExportDocker) map[string]string { return v.Annotations }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportDockerOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v ExportDocker) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportDockerOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v ExportDocker) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// The local export path. -func (o ExportDockerOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v ExportDocker) *string { return v.Dest }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportDockerOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportDocker) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportDockerOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v ExportDocker) []string { return v.Names }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportDockerOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportDocker) *bool { return v.OciMediaTypes }).(pulumi.BoolPtrOutput) -} - -// Bundle the output into a tarball layout. -func (o ExportDockerOutput) Tar() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportDocker) *bool { return v.Tar }).(pulumi.BoolPtrOutput) -} - -type ExportDockerPtrOutput struct{ *pulumi.OutputState } - -func (ExportDockerPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportDocker)(nil)).Elem() -} - -func (o ExportDockerPtrOutput) ToExportDockerPtrOutput() ExportDockerPtrOutput { - return o -} - -func (o ExportDockerPtrOutput) ToExportDockerPtrOutputWithContext(ctx context.Context) ExportDockerPtrOutput { - return o -} - -func (o ExportDockerPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportDocker] { - return pulumix.Output[*ExportDocker]{ - OutputState: o.OutputState, - } -} - -func (o ExportDockerPtrOutput) Elem() ExportDockerOutput { - return o.ApplyT(func(v *ExportDocker) ExportDocker { - if v != nil { - return *v - } - var ret ExportDocker - return ret - }).(ExportDockerOutput) -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportDockerPtrOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v *ExportDocker) map[string]string { - if v == nil { - return nil - } - return v.Annotations - }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportDockerPtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *ExportDocker) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportDockerPtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *ExportDocker) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// The local export path. -func (o ExportDockerPtrOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportDocker) *string { - if v == nil { - return nil - } - return v.Dest - }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportDockerPtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportDocker) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportDockerPtrOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v *ExportDocker) []string { - if v == nil { - return nil - } - return v.Names - }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportDockerPtrOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportDocker) *bool { - if v == nil { - return nil - } - return v.OciMediaTypes - }).(pulumi.BoolPtrOutput) -} - -// Bundle the output into a tarball layout. -func (o ExportDockerPtrOutput) Tar() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportDocker) *bool { - if v == nil { - return nil - } - return v.Tar - }).(pulumi.BoolPtrOutput) -} - -type ExportImage struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix *string `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure *bool `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical *bool `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `false`. - Push *bool `pulumi:"push"` - // Push image without name. - PushByDigest *bool `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store *bool `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack *bool `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportImage -func (val *ExportImage) Defaults() *ExportImage { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Store == nil { - store_ := true - tmp.Store = &store_ - } - return &tmp -} - -// ExportImageInput is an input type that accepts ExportImageArgs and ExportImageOutput values. -// You can construct a concrete instance of `ExportImageInput` via: -// -// ExportImageArgs{...} -type ExportImageInput interface { - pulumi.Input - - ToExportImageOutput() ExportImageOutput - ToExportImageOutputWithContext(context.Context) ExportImageOutput -} - -type ExportImageArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumi.StringMapInput `pulumi:"annotations"` - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix pulumi.StringPtrInput `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure pulumi.BoolPtrInput `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical pulumi.BoolPtrInput `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumi.StringArrayInput `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumi.BoolPtrInput `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `false`. - Push pulumi.BoolPtrInput `pulumi:"push"` - // Push image without name. - PushByDigest pulumi.BoolPtrInput `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store pulumi.BoolPtrInput `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack pulumi.BoolPtrInput `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportImageArgs -func (val *ExportImageArgs) Defaults() *ExportImageArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumi.BoolPtr(false) - } - if tmp.Store == nil { - tmp.Store = pulumi.BoolPtr(true) - } - return &tmp -} -func (ExportImageArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportImage)(nil)).Elem() -} - -func (i ExportImageArgs) ToExportImageOutput() ExportImageOutput { - return i.ToExportImageOutputWithContext(context.Background()) -} - -func (i ExportImageArgs) ToExportImageOutputWithContext(ctx context.Context) ExportImageOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportImageOutput) -} - -func (i ExportImageArgs) ToOutput(ctx context.Context) pulumix.Output[ExportImage] { - return pulumix.Output[ExportImage]{ - OutputState: i.ToExportImageOutputWithContext(ctx).OutputState, - } -} - -func (i ExportImageArgs) ToExportImagePtrOutput() ExportImagePtrOutput { - return i.ToExportImagePtrOutputWithContext(context.Background()) -} - -func (i ExportImageArgs) ToExportImagePtrOutputWithContext(ctx context.Context) ExportImagePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportImageOutput).ToExportImagePtrOutputWithContext(ctx) -} - -// ExportImagePtrInput is an input type that accepts ExportImageArgs, ExportImagePtr and ExportImagePtrOutput values. -// You can construct a concrete instance of `ExportImagePtrInput` via: -// -// ExportImageArgs{...} -// -// or: -// -// nil -type ExportImagePtrInput interface { - pulumi.Input - - ToExportImagePtrOutput() ExportImagePtrOutput - ToExportImagePtrOutputWithContext(context.Context) ExportImagePtrOutput -} - -type exportImagePtrType ExportImageArgs - -func ExportImagePtr(v *ExportImageArgs) ExportImagePtrInput { - return (*exportImagePtrType)(v) -} - -func (*exportImagePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportImage)(nil)).Elem() -} - -func (i *exportImagePtrType) ToExportImagePtrOutput() ExportImagePtrOutput { - return i.ToExportImagePtrOutputWithContext(context.Background()) -} - -func (i *exportImagePtrType) ToExportImagePtrOutputWithContext(ctx context.Context) ExportImagePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportImagePtrOutput) -} - -func (i *exportImagePtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportImage] { - return pulumix.Output[*ExportImage]{ - OutputState: i.ToExportImagePtrOutputWithContext(ctx).OutputState, - } -} - -type ExportImageOutput struct{ *pulumi.OutputState } - -func (ExportImageOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportImage)(nil)).Elem() -} - -func (o ExportImageOutput) ToExportImageOutput() ExportImageOutput { - return o -} - -func (o ExportImageOutput) ToExportImageOutputWithContext(ctx context.Context) ExportImageOutput { - return o -} - -func (o ExportImageOutput) ToExportImagePtrOutput() ExportImagePtrOutput { - return o.ToExportImagePtrOutputWithContext(context.Background()) -} - -func (o ExportImageOutput) ToExportImagePtrOutputWithContext(ctx context.Context) ExportImagePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportImage) *ExportImage { - return &v - }).(ExportImagePtrOutput) -} - -func (o ExportImageOutput) ToOutput(ctx context.Context) pulumix.Output[ExportImage] { - return pulumix.Output[ExportImage]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportImageOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v ExportImage) map[string]string { return v.Annotations }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportImageOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v ExportImage) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportImageOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v ExportImage) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportImageOutput) DanglingNamePrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v ExportImage) *string { return v.DanglingNamePrefix }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportImageOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Allow pushing to an insecure registry. -func (o ExportImageOutput) Insecure() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.Insecure }).(pulumi.BoolPtrOutput) -} - -// Add additional canonical name (`name@`). -func (o ExportImageOutput) NameCanonical() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.NameCanonical }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportImageOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v ExportImage) []string { return v.Names }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportImageOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.OciMediaTypes }).(pulumi.BoolPtrOutput) -} - -// Push after creating the image. Defaults to `false`. -func (o ExportImageOutput) Push() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.Push }).(pulumi.BoolPtrOutput) -} - -// Push image without name. -func (o ExportImageOutput) PushByDigest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.PushByDigest }).(pulumi.BoolPtrOutput) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportImageOutput) Store() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.Store }).(pulumi.BoolPtrOutput) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportImageOutput) Unpack() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportImage) *bool { return v.Unpack }).(pulumi.BoolPtrOutput) -} - -type ExportImagePtrOutput struct{ *pulumi.OutputState } - -func (ExportImagePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportImage)(nil)).Elem() -} - -func (o ExportImagePtrOutput) ToExportImagePtrOutput() ExportImagePtrOutput { - return o -} - -func (o ExportImagePtrOutput) ToExportImagePtrOutputWithContext(ctx context.Context) ExportImagePtrOutput { - return o -} - -func (o ExportImagePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportImage] { - return pulumix.Output[*ExportImage]{ - OutputState: o.OutputState, - } -} - -func (o ExportImagePtrOutput) Elem() ExportImageOutput { - return o.ApplyT(func(v *ExportImage) ExportImage { - if v != nil { - return *v - } - var ret ExportImage - return ret - }).(ExportImageOutput) -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportImagePtrOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v *ExportImage) map[string]string { - if v == nil { - return nil - } - return v.Annotations - }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportImagePtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *ExportImage) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportImagePtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *ExportImage) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportImagePtrOutput) DanglingNamePrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportImage) *string { - if v == nil { - return nil - } - return v.DanglingNamePrefix - }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportImagePtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Allow pushing to an insecure registry. -func (o ExportImagePtrOutput) Insecure() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.Insecure - }).(pulumi.BoolPtrOutput) -} - -// Add additional canonical name (`name@`). -func (o ExportImagePtrOutput) NameCanonical() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.NameCanonical - }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportImagePtrOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v *ExportImage) []string { - if v == nil { - return nil - } - return v.Names - }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportImagePtrOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.OciMediaTypes - }).(pulumi.BoolPtrOutput) -} - -// Push after creating the image. Defaults to `false`. -func (o ExportImagePtrOutput) Push() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.Push - }).(pulumi.BoolPtrOutput) -} - -// Push image without name. -func (o ExportImagePtrOutput) PushByDigest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.PushByDigest - }).(pulumi.BoolPtrOutput) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportImagePtrOutput) Store() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.Store - }).(pulumi.BoolPtrOutput) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportImagePtrOutput) Unpack() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportImage) *bool { - if v == nil { - return nil - } - return v.Unpack - }).(pulumi.BoolPtrOutput) -} - -type ExportLocal struct { - // Output path. - Dest string `pulumi:"dest"` -} - -// ExportLocalInput is an input type that accepts ExportLocalArgs and ExportLocalOutput values. -// You can construct a concrete instance of `ExportLocalInput` via: -// -// ExportLocalArgs{...} -type ExportLocalInput interface { - pulumi.Input - - ToExportLocalOutput() ExportLocalOutput - ToExportLocalOutputWithContext(context.Context) ExportLocalOutput -} - -type ExportLocalArgs struct { - // Output path. - Dest pulumi.StringInput `pulumi:"dest"` -} - -func (ExportLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportLocal)(nil)).Elem() -} - -func (i ExportLocalArgs) ToExportLocalOutput() ExportLocalOutput { - return i.ToExportLocalOutputWithContext(context.Background()) -} - -func (i ExportLocalArgs) ToExportLocalOutputWithContext(ctx context.Context) ExportLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportLocalOutput) -} - -func (i ExportLocalArgs) ToOutput(ctx context.Context) pulumix.Output[ExportLocal] { - return pulumix.Output[ExportLocal]{ - OutputState: i.ToExportLocalOutputWithContext(ctx).OutputState, - } -} - -func (i ExportLocalArgs) ToExportLocalPtrOutput() ExportLocalPtrOutput { - return i.ToExportLocalPtrOutputWithContext(context.Background()) -} - -func (i ExportLocalArgs) ToExportLocalPtrOutputWithContext(ctx context.Context) ExportLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportLocalOutput).ToExportLocalPtrOutputWithContext(ctx) -} - -// ExportLocalPtrInput is an input type that accepts ExportLocalArgs, ExportLocalPtr and ExportLocalPtrOutput values. -// You can construct a concrete instance of `ExportLocalPtrInput` via: -// -// ExportLocalArgs{...} -// -// or: -// -// nil -type ExportLocalPtrInput interface { - pulumi.Input - - ToExportLocalPtrOutput() ExportLocalPtrOutput - ToExportLocalPtrOutputWithContext(context.Context) ExportLocalPtrOutput -} - -type exportLocalPtrType ExportLocalArgs - -func ExportLocalPtr(v *ExportLocalArgs) ExportLocalPtrInput { - return (*exportLocalPtrType)(v) -} - -func (*exportLocalPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportLocal)(nil)).Elem() -} - -func (i *exportLocalPtrType) ToExportLocalPtrOutput() ExportLocalPtrOutput { - return i.ToExportLocalPtrOutputWithContext(context.Background()) -} - -func (i *exportLocalPtrType) ToExportLocalPtrOutputWithContext(ctx context.Context) ExportLocalPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportLocalPtrOutput) -} - -func (i *exportLocalPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportLocal] { - return pulumix.Output[*ExportLocal]{ - OutputState: i.ToExportLocalPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportLocalOutput struct{ *pulumi.OutputState } - -func (ExportLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportLocal)(nil)).Elem() -} - -func (o ExportLocalOutput) ToExportLocalOutput() ExportLocalOutput { - return o -} - -func (o ExportLocalOutput) ToExportLocalOutputWithContext(ctx context.Context) ExportLocalOutput { - return o -} - -func (o ExportLocalOutput) ToExportLocalPtrOutput() ExportLocalPtrOutput { - return o.ToExportLocalPtrOutputWithContext(context.Background()) -} - -func (o ExportLocalOutput) ToExportLocalPtrOutputWithContext(ctx context.Context) ExportLocalPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportLocal) *ExportLocal { - return &v - }).(ExportLocalPtrOutput) -} - -func (o ExportLocalOutput) ToOutput(ctx context.Context) pulumix.Output[ExportLocal] { - return pulumix.Output[ExportLocal]{ - OutputState: o.OutputState, - } -} - -// Output path. -func (o ExportLocalOutput) Dest() pulumi.StringOutput { - return o.ApplyT(func(v ExportLocal) string { return v.Dest }).(pulumi.StringOutput) -} - -type ExportLocalPtrOutput struct{ *pulumi.OutputState } - -func (ExportLocalPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportLocal)(nil)).Elem() -} - -func (o ExportLocalPtrOutput) ToExportLocalPtrOutput() ExportLocalPtrOutput { - return o -} - -func (o ExportLocalPtrOutput) ToExportLocalPtrOutputWithContext(ctx context.Context) ExportLocalPtrOutput { - return o -} - -func (o ExportLocalPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportLocal] { - return pulumix.Output[*ExportLocal]{ - OutputState: o.OutputState, - } -} - -func (o ExportLocalPtrOutput) Elem() ExportLocalOutput { - return o.ApplyT(func(v *ExportLocal) ExportLocal { - if v != nil { - return *v - } - var ret ExportLocal - return ret - }).(ExportLocalOutput) -} - -// Output path. -func (o ExportLocalPtrOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportLocal) *string { - if v == nil { - return nil - } - return &v.Dest - }).(pulumi.StringPtrOutput) -} - -type ExportOCI struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // The local export path. - Dest *string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar *bool `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportOCI -func (val *ExportOCI) Defaults() *ExportOCI { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := true - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Tar == nil { - tar_ := true - tmp.Tar = &tar_ - } - return &tmp -} - -// ExportOCIInput is an input type that accepts ExportOCIArgs and ExportOCIOutput values. -// You can construct a concrete instance of `ExportOCIInput` via: -// -// ExportOCIArgs{...} -type ExportOCIInput interface { - pulumi.Input - - ToExportOCIOutput() ExportOCIOutput - ToExportOCIOutputWithContext(context.Context) ExportOCIOutput -} - -type ExportOCIArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumi.StringMapInput `pulumi:"annotations"` - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // The local export path. - Dest pulumi.StringPtrInput `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumi.StringArrayInput `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumi.BoolPtrInput `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar pulumi.BoolPtrInput `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportOCIArgs -func (val *ExportOCIArgs) Defaults() *ExportOCIArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumi.BoolPtr(true) - } - if tmp.Tar == nil { - tmp.Tar = pulumi.BoolPtr(true) - } - return &tmp -} -func (ExportOCIArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportOCI)(nil)).Elem() -} - -func (i ExportOCIArgs) ToExportOCIOutput() ExportOCIOutput { - return i.ToExportOCIOutputWithContext(context.Background()) -} - -func (i ExportOCIArgs) ToExportOCIOutputWithContext(ctx context.Context) ExportOCIOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOCIOutput) -} - -func (i ExportOCIArgs) ToOutput(ctx context.Context) pulumix.Output[ExportOCI] { - return pulumix.Output[ExportOCI]{ - OutputState: i.ToExportOCIOutputWithContext(ctx).OutputState, - } -} - -func (i ExportOCIArgs) ToExportOCIPtrOutput() ExportOCIPtrOutput { - return i.ToExportOCIPtrOutputWithContext(context.Background()) -} - -func (i ExportOCIArgs) ToExportOCIPtrOutputWithContext(ctx context.Context) ExportOCIPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOCIOutput).ToExportOCIPtrOutputWithContext(ctx) -} - -// ExportOCIPtrInput is an input type that accepts ExportOCIArgs, ExportOCIPtr and ExportOCIPtrOutput values. -// You can construct a concrete instance of `ExportOCIPtrInput` via: -// -// ExportOCIArgs{...} -// -// or: -// -// nil -type ExportOCIPtrInput interface { - pulumi.Input - - ToExportOCIPtrOutput() ExportOCIPtrOutput - ToExportOCIPtrOutputWithContext(context.Context) ExportOCIPtrOutput -} - -type exportOCIPtrType ExportOCIArgs - -func ExportOCIPtr(v *ExportOCIArgs) ExportOCIPtrInput { - return (*exportOCIPtrType)(v) -} - -func (*exportOCIPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportOCI)(nil)).Elem() -} - -func (i *exportOCIPtrType) ToExportOCIPtrOutput() ExportOCIPtrOutput { - return i.ToExportOCIPtrOutputWithContext(context.Background()) -} - -func (i *exportOCIPtrType) ToExportOCIPtrOutputWithContext(ctx context.Context) ExportOCIPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOCIPtrOutput) -} - -func (i *exportOCIPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportOCI] { - return pulumix.Output[*ExportOCI]{ - OutputState: i.ToExportOCIPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportOCIOutput struct{ *pulumi.OutputState } - -func (ExportOCIOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportOCI)(nil)).Elem() -} - -func (o ExportOCIOutput) ToExportOCIOutput() ExportOCIOutput { - return o -} - -func (o ExportOCIOutput) ToExportOCIOutputWithContext(ctx context.Context) ExportOCIOutput { - return o -} - -func (o ExportOCIOutput) ToExportOCIPtrOutput() ExportOCIPtrOutput { - return o.ToExportOCIPtrOutputWithContext(context.Background()) -} - -func (o ExportOCIOutput) ToExportOCIPtrOutputWithContext(ctx context.Context) ExportOCIPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportOCI) *ExportOCI { - return &v - }).(ExportOCIPtrOutput) -} - -func (o ExportOCIOutput) ToOutput(ctx context.Context) pulumix.Output[ExportOCI] { - return pulumix.Output[ExportOCI]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportOCIOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v ExportOCI) map[string]string { return v.Annotations }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportOCIOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v ExportOCI) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportOCIOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v ExportOCI) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// The local export path. -func (o ExportOCIOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v ExportOCI) *string { return v.Dest }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportOCIOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportOCI) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportOCIOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v ExportOCI) []string { return v.Names }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportOCIOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportOCI) *bool { return v.OciMediaTypes }).(pulumi.BoolPtrOutput) -} - -// Bundle the output into a tarball layout. -func (o ExportOCIOutput) Tar() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportOCI) *bool { return v.Tar }).(pulumi.BoolPtrOutput) -} - -type ExportOCIPtrOutput struct{ *pulumi.OutputState } - -func (ExportOCIPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportOCI)(nil)).Elem() -} - -func (o ExportOCIPtrOutput) ToExportOCIPtrOutput() ExportOCIPtrOutput { - return o -} - -func (o ExportOCIPtrOutput) ToExportOCIPtrOutputWithContext(ctx context.Context) ExportOCIPtrOutput { - return o -} - -func (o ExportOCIPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportOCI] { - return pulumix.Output[*ExportOCI]{ - OutputState: o.OutputState, - } -} - -func (o ExportOCIPtrOutput) Elem() ExportOCIOutput { - return o.ApplyT(func(v *ExportOCI) ExportOCI { - if v != nil { - return *v - } - var ret ExportOCI - return ret - }).(ExportOCIOutput) -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportOCIPtrOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v *ExportOCI) map[string]string { - if v == nil { - return nil - } - return v.Annotations - }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportOCIPtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *ExportOCI) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportOCIPtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *ExportOCI) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// The local export path. -func (o ExportOCIPtrOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportOCI) *string { - if v == nil { - return nil - } - return v.Dest - }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportOCIPtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportOCI) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportOCIPtrOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v *ExportOCI) []string { - if v == nil { - return nil - } - return v.Names - }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportOCIPtrOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportOCI) *bool { - if v == nil { - return nil - } - return v.OciMediaTypes - }).(pulumi.BoolPtrOutput) -} - -// Bundle the output into a tarball layout. -func (o ExportOCIPtrOutput) Tar() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportOCI) *bool { - if v == nil { - return nil - } - return v.Tar - }).(pulumi.BoolPtrOutput) -} - -type ExportRegistry struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix *string `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure *bool `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical *bool `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `true`. - Push *bool `pulumi:"push"` - // Push image without name. - PushByDigest *bool `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store *bool `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack *bool `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportRegistry -func (val *ExportRegistry) Defaults() *ExportRegistry { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Push == nil { - push_ := true - tmp.Push = &push_ - } - if tmp.Store == nil { - store_ := true - tmp.Store = &store_ - } - return &tmp -} - -// ExportRegistryInput is an input type that accepts ExportRegistryArgs and ExportRegistryOutput values. -// You can construct a concrete instance of `ExportRegistryInput` via: -// -// ExportRegistryArgs{...} -type ExportRegistryInput interface { - pulumi.Input - - ToExportRegistryOutput() ExportRegistryOutput - ToExportRegistryOutputWithContext(context.Context) ExportRegistryOutput -} - -type ExportRegistryArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumi.StringMapInput `pulumi:"annotations"` - // The compression type to use. - Compression CompressionTypePtrInput `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumi.IntPtrInput `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix pulumi.StringPtrInput `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression pulumi.BoolPtrInput `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure pulumi.BoolPtrInput `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical pulumi.BoolPtrInput `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumi.StringArrayInput `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumi.BoolPtrInput `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `true`. - Push pulumi.BoolPtrInput `pulumi:"push"` - // Push image without name. - PushByDigest pulumi.BoolPtrInput `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store pulumi.BoolPtrInput `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack pulumi.BoolPtrInput `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportRegistryArgs -func (val *ExportRegistryArgs) Defaults() *ExportRegistryArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = CompressionType("gzip") - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumi.IntPtr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumi.BoolPtr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumi.BoolPtr(false) - } - if tmp.Push == nil { - tmp.Push = pulumi.BoolPtr(true) - } - if tmp.Store == nil { - tmp.Store = pulumi.BoolPtr(true) - } - return &tmp -} -func (ExportRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportRegistry)(nil)).Elem() -} - -func (i ExportRegistryArgs) ToExportRegistryOutput() ExportRegistryOutput { - return i.ToExportRegistryOutputWithContext(context.Background()) -} - -func (i ExportRegistryArgs) ToExportRegistryOutputWithContext(ctx context.Context) ExportRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportRegistryOutput) -} - -func (i ExportRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[ExportRegistry] { - return pulumix.Output[ExportRegistry]{ - OutputState: i.ToExportRegistryOutputWithContext(ctx).OutputState, - } -} - -func (i ExportRegistryArgs) ToExportRegistryPtrOutput() ExportRegistryPtrOutput { - return i.ToExportRegistryPtrOutputWithContext(context.Background()) -} - -func (i ExportRegistryArgs) ToExportRegistryPtrOutputWithContext(ctx context.Context) ExportRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportRegistryOutput).ToExportRegistryPtrOutputWithContext(ctx) -} - -// ExportRegistryPtrInput is an input type that accepts ExportRegistryArgs, ExportRegistryPtr and ExportRegistryPtrOutput values. -// You can construct a concrete instance of `ExportRegistryPtrInput` via: -// -// ExportRegistryArgs{...} -// -// or: -// -// nil -type ExportRegistryPtrInput interface { - pulumi.Input - - ToExportRegistryPtrOutput() ExportRegistryPtrOutput - ToExportRegistryPtrOutputWithContext(context.Context) ExportRegistryPtrOutput -} - -type exportRegistryPtrType ExportRegistryArgs - -func ExportRegistryPtr(v *ExportRegistryArgs) ExportRegistryPtrInput { - return (*exportRegistryPtrType)(v) -} - -func (*exportRegistryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportRegistry)(nil)).Elem() -} - -func (i *exportRegistryPtrType) ToExportRegistryPtrOutput() ExportRegistryPtrOutput { - return i.ToExportRegistryPtrOutputWithContext(context.Background()) -} - -func (i *exportRegistryPtrType) ToExportRegistryPtrOutputWithContext(ctx context.Context) ExportRegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportRegistryPtrOutput) -} - -func (i *exportRegistryPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportRegistry] { - return pulumix.Output[*ExportRegistry]{ - OutputState: i.ToExportRegistryPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportRegistryOutput struct{ *pulumi.OutputState } - -func (ExportRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportRegistry)(nil)).Elem() -} - -func (o ExportRegistryOutput) ToExportRegistryOutput() ExportRegistryOutput { - return o -} - -func (o ExportRegistryOutput) ToExportRegistryOutputWithContext(ctx context.Context) ExportRegistryOutput { - return o -} - -func (o ExportRegistryOutput) ToExportRegistryPtrOutput() ExportRegistryPtrOutput { - return o.ToExportRegistryPtrOutputWithContext(context.Background()) -} - -func (o ExportRegistryOutput) ToExportRegistryPtrOutputWithContext(ctx context.Context) ExportRegistryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportRegistry) *ExportRegistry { - return &v - }).(ExportRegistryPtrOutput) -} - -func (o ExportRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[ExportRegistry] { - return pulumix.Output[ExportRegistry]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportRegistryOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v ExportRegistry) map[string]string { return v.Annotations }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportRegistryOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v ExportRegistry) *CompressionType { return v.Compression }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportRegistryOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v ExportRegistry) *int { return v.CompressionLevel }).(pulumi.IntPtrOutput) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportRegistryOutput) DanglingNamePrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v ExportRegistry) *string { return v.DanglingNamePrefix }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportRegistryOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.ForceCompression }).(pulumi.BoolPtrOutput) -} - -// Allow pushing to an insecure registry. -func (o ExportRegistryOutput) Insecure() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.Insecure }).(pulumi.BoolPtrOutput) -} - -// Add additional canonical name (`name@`). -func (o ExportRegistryOutput) NameCanonical() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.NameCanonical }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportRegistryOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v ExportRegistry) []string { return v.Names }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportRegistryOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.OciMediaTypes }).(pulumi.BoolPtrOutput) -} - -// Push after creating the image. Defaults to `true`. -func (o ExportRegistryOutput) Push() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.Push }).(pulumi.BoolPtrOutput) -} - -// Push image without name. -func (o ExportRegistryOutput) PushByDigest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.PushByDigest }).(pulumi.BoolPtrOutput) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportRegistryOutput) Store() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.Store }).(pulumi.BoolPtrOutput) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportRegistryOutput) Unpack() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ExportRegistry) *bool { return v.Unpack }).(pulumi.BoolPtrOutput) -} - -type ExportRegistryPtrOutput struct{ *pulumi.OutputState } - -func (ExportRegistryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportRegistry)(nil)).Elem() -} - -func (o ExportRegistryPtrOutput) ToExportRegistryPtrOutput() ExportRegistryPtrOutput { - return o -} - -func (o ExportRegistryPtrOutput) ToExportRegistryPtrOutputWithContext(ctx context.Context) ExportRegistryPtrOutput { - return o -} - -func (o ExportRegistryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportRegistry] { - return pulumix.Output[*ExportRegistry]{ - OutputState: o.OutputState, - } -} - -func (o ExportRegistryPtrOutput) Elem() ExportRegistryOutput { - return o.ApplyT(func(v *ExportRegistry) ExportRegistry { - if v != nil { - return *v - } - var ret ExportRegistry - return ret - }).(ExportRegistryOutput) -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportRegistryPtrOutput) Annotations() pulumi.StringMapOutput { - return o.ApplyT(func(v *ExportRegistry) map[string]string { - if v == nil { - return nil - } - return v.Annotations - }).(pulumi.StringMapOutput) -} - -// The compression type to use. -func (o ExportRegistryPtrOutput) Compression() CompressionTypePtrOutput { - return o.ApplyT(func(v *ExportRegistry) *CompressionType { - if v == nil { - return nil - } - return v.Compression - }).(CompressionTypePtrOutput) -} - -// Compression level from 0 to 22. -func (o ExportRegistryPtrOutput) CompressionLevel() pulumi.IntPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *int { - if v == nil { - return nil - } - return v.CompressionLevel - }).(pulumi.IntPtrOutput) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportRegistryPtrOutput) DanglingNamePrefix() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *string { - if v == nil { - return nil - } - return v.DanglingNamePrefix - }).(pulumi.StringPtrOutput) -} - -// Forcefully apply compression. -func (o ExportRegistryPtrOutput) ForceCompression() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.ForceCompression - }).(pulumi.BoolPtrOutput) -} - -// Allow pushing to an insecure registry. -func (o ExportRegistryPtrOutput) Insecure() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.Insecure - }).(pulumi.BoolPtrOutput) -} - -// Add additional canonical name (`name@`). -func (o ExportRegistryPtrOutput) NameCanonical() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.NameCanonical - }).(pulumi.BoolPtrOutput) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportRegistryPtrOutput) Names() pulumi.StringArrayOutput { - return o.ApplyT(func(v *ExportRegistry) []string { - if v == nil { - return nil - } - return v.Names - }).(pulumi.StringArrayOutput) -} - -// Use OCI media types in exporter manifests. -func (o ExportRegistryPtrOutput) OciMediaTypes() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.OciMediaTypes - }).(pulumi.BoolPtrOutput) -} - -// Push after creating the image. Defaults to `true`. -func (o ExportRegistryPtrOutput) Push() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.Push - }).(pulumi.BoolPtrOutput) -} - -// Push image without name. -func (o ExportRegistryPtrOutput) PushByDigest() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.PushByDigest - }).(pulumi.BoolPtrOutput) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportRegistryPtrOutput) Store() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.Store - }).(pulumi.BoolPtrOutput) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportRegistryPtrOutput) Unpack() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *ExportRegistry) *bool { - if v == nil { - return nil - } - return v.Unpack - }).(pulumi.BoolPtrOutput) -} - -type ExportTar struct { - // Output path. - Dest string `pulumi:"dest"` -} - -// ExportTarInput is an input type that accepts ExportTarArgs and ExportTarOutput values. -// You can construct a concrete instance of `ExportTarInput` via: -// -// ExportTarArgs{...} -type ExportTarInput interface { - pulumi.Input - - ToExportTarOutput() ExportTarOutput - ToExportTarOutputWithContext(context.Context) ExportTarOutput -} - -type ExportTarArgs struct { - // Output path. - Dest pulumi.StringInput `pulumi:"dest"` -} - -func (ExportTarArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportTar)(nil)).Elem() -} - -func (i ExportTarArgs) ToExportTarOutput() ExportTarOutput { - return i.ToExportTarOutputWithContext(context.Background()) -} - -func (i ExportTarArgs) ToExportTarOutputWithContext(ctx context.Context) ExportTarOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportTarOutput) -} - -func (i ExportTarArgs) ToOutput(ctx context.Context) pulumix.Output[ExportTar] { - return pulumix.Output[ExportTar]{ - OutputState: i.ToExportTarOutputWithContext(ctx).OutputState, - } -} - -func (i ExportTarArgs) ToExportTarPtrOutput() ExportTarPtrOutput { - return i.ToExportTarPtrOutputWithContext(context.Background()) -} - -func (i ExportTarArgs) ToExportTarPtrOutputWithContext(ctx context.Context) ExportTarPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportTarOutput).ToExportTarPtrOutputWithContext(ctx) -} - -// ExportTarPtrInput is an input type that accepts ExportTarArgs, ExportTarPtr and ExportTarPtrOutput values. -// You can construct a concrete instance of `ExportTarPtrInput` via: -// -// ExportTarArgs{...} -// -// or: -// -// nil -type ExportTarPtrInput interface { - pulumi.Input - - ToExportTarPtrOutput() ExportTarPtrOutput - ToExportTarPtrOutputWithContext(context.Context) ExportTarPtrOutput -} - -type exportTarPtrType ExportTarArgs - -func ExportTarPtr(v *ExportTarArgs) ExportTarPtrInput { - return (*exportTarPtrType)(v) -} - -func (*exportTarPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ExportTar)(nil)).Elem() -} - -func (i *exportTarPtrType) ToExportTarPtrOutput() ExportTarPtrOutput { - return i.ToExportTarPtrOutputWithContext(context.Background()) -} - -func (i *exportTarPtrType) ToExportTarPtrOutputWithContext(ctx context.Context) ExportTarPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportTarPtrOutput) -} - -func (i *exportTarPtrType) ToOutput(ctx context.Context) pulumix.Output[*ExportTar] { - return pulumix.Output[*ExportTar]{ - OutputState: i.ToExportTarPtrOutputWithContext(ctx).OutputState, - } -} - -type ExportTarOutput struct{ *pulumi.OutputState } - -func (ExportTarOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportTar)(nil)).Elem() -} - -func (o ExportTarOutput) ToExportTarOutput() ExportTarOutput { - return o -} - -func (o ExportTarOutput) ToExportTarOutputWithContext(ctx context.Context) ExportTarOutput { - return o -} - -func (o ExportTarOutput) ToExportTarPtrOutput() ExportTarPtrOutput { - return o.ToExportTarPtrOutputWithContext(context.Background()) -} - -func (o ExportTarOutput) ToExportTarPtrOutputWithContext(ctx context.Context) ExportTarPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ExportTar) *ExportTar { - return &v - }).(ExportTarPtrOutput) -} - -func (o ExportTarOutput) ToOutput(ctx context.Context) pulumix.Output[ExportTar] { - return pulumix.Output[ExportTar]{ - OutputState: o.OutputState, - } -} - -// Output path. -func (o ExportTarOutput) Dest() pulumi.StringOutput { - return o.ApplyT(func(v ExportTar) string { return v.Dest }).(pulumi.StringOutput) -} - -type ExportTarPtrOutput struct{ *pulumi.OutputState } - -func (ExportTarPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ExportTar)(nil)).Elem() -} - -func (o ExportTarPtrOutput) ToExportTarPtrOutput() ExportTarPtrOutput { - return o -} - -func (o ExportTarPtrOutput) ToExportTarPtrOutputWithContext(ctx context.Context) ExportTarPtrOutput { - return o -} - -func (o ExportTarPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ExportTar] { - return pulumix.Output[*ExportTar]{ - OutputState: o.OutputState, - } -} - -func (o ExportTarPtrOutput) Elem() ExportTarOutput { - return o.ApplyT(func(v *ExportTar) ExportTar { - if v != nil { - return *v - } - var ret ExportTar - return ret - }).(ExportTarOutput) -} - -// Output path. -func (o ExportTarPtrOutput) Dest() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ExportTar) *string { - if v == nil { - return nil - } - return &v.Dest - }).(pulumi.StringPtrOutput) -} - -type Registry struct { - // The registry's address (e.g. "docker.io"). - Address string `pulumi:"address"` - // Password or token for the registry. - Password *string `pulumi:"password"` - // Username for the registry. - Username *string `pulumi:"username"` -} - -// RegistryInput is an input type that accepts RegistryArgs and RegistryOutput values. -// You can construct a concrete instance of `RegistryInput` via: -// -// RegistryArgs{...} -type RegistryInput interface { - pulumi.Input - - ToRegistryOutput() RegistryOutput - ToRegistryOutputWithContext(context.Context) RegistryOutput -} - -type RegistryArgs struct { - // The registry's address (e.g. "docker.io"). - Address pulumi.StringInput `pulumi:"address"` - // Password or token for the registry. - Password pulumi.StringPtrInput `pulumi:"password"` - // Username for the registry. - Username pulumi.StringPtrInput `pulumi:"username"` -} - -func (RegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Registry)(nil)).Elem() -} - -func (i RegistryArgs) ToRegistryOutput() RegistryOutput { - return i.ToRegistryOutputWithContext(context.Background()) -} - -func (i RegistryArgs) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput) -} - -func (i RegistryArgs) ToOutput(ctx context.Context) pulumix.Output[Registry] { - return pulumix.Output[Registry]{ - OutputState: i.ToRegistryOutputWithContext(ctx).OutputState, - } -} - -func (i RegistryArgs) ToRegistryPtrOutput() RegistryPtrOutput { - return i.ToRegistryPtrOutputWithContext(context.Background()) -} - -func (i RegistryArgs) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput).ToRegistryPtrOutputWithContext(ctx) -} - -// RegistryPtrInput is an input type that accepts RegistryArgs, RegistryPtr and RegistryPtrOutput values. -// You can construct a concrete instance of `RegistryPtrInput` via: -// -// RegistryArgs{...} -// -// or: -// -// nil -type RegistryPtrInput interface { - pulumi.Input - - ToRegistryPtrOutput() RegistryPtrOutput - ToRegistryPtrOutputWithContext(context.Context) RegistryPtrOutput -} - -type registryPtrType RegistryArgs - -func RegistryPtr(v *RegistryArgs) RegistryPtrInput { - return (*registryPtrType)(v) -} - -func (*registryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**Registry)(nil)).Elem() -} - -func (i *registryPtrType) ToRegistryPtrOutput() RegistryPtrOutput { - return i.ToRegistryPtrOutputWithContext(context.Background()) -} - -func (i *registryPtrType) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(RegistryPtrOutput) -} - -func (i *registryPtrType) ToOutput(ctx context.Context) pulumix.Output[*Registry] { - return pulumix.Output[*Registry]{ - OutputState: i.ToRegistryPtrOutputWithContext(ctx).OutputState, - } -} - -// RegistryArrayInput is an input type that accepts RegistryArray and RegistryArrayOutput values. -// You can construct a concrete instance of `RegistryArrayInput` via: -// -// RegistryArray{ RegistryArgs{...} } -type RegistryArrayInput interface { - pulumi.Input - - ToRegistryArrayOutput() RegistryArrayOutput - ToRegistryArrayOutputWithContext(context.Context) RegistryArrayOutput -} - -type RegistryArray []RegistryInput - -func (RegistryArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]Registry)(nil)).Elem() -} - -func (i RegistryArray) ToRegistryArrayOutput() RegistryArrayOutput { - return i.ToRegistryArrayOutputWithContext(context.Background()) -} - -func (i RegistryArray) ToRegistryArrayOutputWithContext(ctx context.Context) RegistryArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(RegistryArrayOutput) -} - -func (i RegistryArray) ToOutput(ctx context.Context) pulumix.Output[[]Registry] { - return pulumix.Output[[]Registry]{ - OutputState: i.ToRegistryArrayOutputWithContext(ctx).OutputState, - } -} - -type RegistryOutput struct{ *pulumi.OutputState } - -func (RegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Registry)(nil)).Elem() -} - -func (o RegistryOutput) ToRegistryOutput() RegistryOutput { - return o -} - -func (o RegistryOutput) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { - return o -} - -func (o RegistryOutput) ToRegistryPtrOutput() RegistryPtrOutput { - return o.ToRegistryPtrOutputWithContext(context.Background()) -} - -func (o RegistryOutput) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v Registry) *Registry { - return &v - }).(RegistryPtrOutput) -} - -func (o RegistryOutput) ToOutput(ctx context.Context) pulumix.Output[Registry] { - return pulumix.Output[Registry]{ - OutputState: o.OutputState, - } -} - -// The registry's address (e.g. "docker.io"). -func (o RegistryOutput) Address() pulumi.StringOutput { - return o.ApplyT(func(v Registry) string { return v.Address }).(pulumi.StringOutput) -} - -// Password or token for the registry. -func (o RegistryOutput) Password() pulumi.StringPtrOutput { - return o.ApplyT(func(v Registry) *string { return v.Password }).(pulumi.StringPtrOutput) -} - -// Username for the registry. -func (o RegistryOutput) Username() pulumi.StringPtrOutput { - return o.ApplyT(func(v Registry) *string { return v.Username }).(pulumi.StringPtrOutput) -} - -type RegistryPtrOutput struct{ *pulumi.OutputState } - -func (RegistryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**Registry)(nil)).Elem() -} - -func (o RegistryPtrOutput) ToRegistryPtrOutput() RegistryPtrOutput { - return o -} - -func (o RegistryPtrOutput) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { - return o -} - -func (o RegistryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*Registry] { - return pulumix.Output[*Registry]{ - OutputState: o.OutputState, - } -} - -func (o RegistryPtrOutput) Elem() RegistryOutput { - return o.ApplyT(func(v *Registry) Registry { - if v != nil { - return *v - } - var ret Registry - return ret - }).(RegistryOutput) -} - -// The registry's address (e.g. "docker.io"). -func (o RegistryPtrOutput) Address() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Registry) *string { - if v == nil { - return nil - } - return &v.Address - }).(pulumi.StringPtrOutput) -} - -// Password or token for the registry. -func (o RegistryPtrOutput) Password() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Registry) *string { - if v == nil { - return nil - } - return v.Password - }).(pulumi.StringPtrOutput) -} - -// Username for the registry. -func (o RegistryPtrOutput) Username() pulumi.StringPtrOutput { - return o.ApplyT(func(v *Registry) *string { - if v == nil { - return nil - } - return v.Username - }).(pulumi.StringPtrOutput) -} - -type RegistryArrayOutput struct{ *pulumi.OutputState } - -func (RegistryArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]Registry)(nil)).Elem() -} - -func (o RegistryArrayOutput) ToRegistryArrayOutput() RegistryArrayOutput { - return o -} - -func (o RegistryArrayOutput) ToRegistryArrayOutputWithContext(ctx context.Context) RegistryArrayOutput { - return o -} - -func (o RegistryArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]Registry] { - return pulumix.Output[[]Registry]{ - OutputState: o.OutputState, - } -} - -func (o RegistryArrayOutput) Index(i pulumi.IntInput) RegistryOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) Registry { - return vs[0].([]Registry)[vs[1].(int)] - }).(RegistryOutput) -} - -type SSH struct { - // Useful for distinguishing different servers that are part of the same - // build. - // - // A value of `default` is appropriate if only dealing with a single host. - Id string `pulumi:"id"` - // SSH agent socket or private keys to expose to the build under the given - // identifier. - // - // Defaults to `[$SSH_AUTH_SOCK]`. - // - // Note that your keys are **not** automatically added when using an - // agent. Run `ssh-add -l` locally to confirm which public keys are - // visible to the agent; these will be exposed to your build. - Paths []string `pulumi:"paths"` -} - -// SSHInput is an input type that accepts SSHArgs and SSHOutput values. -// You can construct a concrete instance of `SSHInput` via: -// -// SSHArgs{...} -type SSHInput interface { - pulumi.Input - - ToSSHOutput() SSHOutput - ToSSHOutputWithContext(context.Context) SSHOutput -} - -type SSHArgs struct { - // Useful for distinguishing different servers that are part of the same - // build. - // - // A value of `default` is appropriate if only dealing with a single host. - Id pulumi.StringInput `pulumi:"id"` - // SSH agent socket or private keys to expose to the build under the given - // identifier. - // - // Defaults to `[$SSH_AUTH_SOCK]`. - // - // Note that your keys are **not** automatically added when using an - // agent. Run `ssh-add -l` locally to confirm which public keys are - // visible to the agent; these will be exposed to your build. - Paths pulumi.StringArrayInput `pulumi:"paths"` -} - -func (SSHArgs) ElementType() reflect.Type { - return reflect.TypeOf((*SSH)(nil)).Elem() -} - -func (i SSHArgs) ToSSHOutput() SSHOutput { - return i.ToSSHOutputWithContext(context.Background()) -} - -func (i SSHArgs) ToSSHOutputWithContext(ctx context.Context) SSHOutput { - return pulumi.ToOutputWithContext(ctx, i).(SSHOutput) -} - -func (i SSHArgs) ToOutput(ctx context.Context) pulumix.Output[SSH] { - return pulumix.Output[SSH]{ - OutputState: i.ToSSHOutputWithContext(ctx).OutputState, - } -} - -// SSHArrayInput is an input type that accepts SSHArray and SSHArrayOutput values. -// You can construct a concrete instance of `SSHArrayInput` via: -// -// SSHArray{ SSHArgs{...} } -type SSHArrayInput interface { - pulumi.Input - - ToSSHArrayOutput() SSHArrayOutput - ToSSHArrayOutputWithContext(context.Context) SSHArrayOutput -} - -type SSHArray []SSHInput - -func (SSHArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]SSH)(nil)).Elem() -} - -func (i SSHArray) ToSSHArrayOutput() SSHArrayOutput { - return i.ToSSHArrayOutputWithContext(context.Background()) -} - -func (i SSHArray) ToSSHArrayOutputWithContext(ctx context.Context) SSHArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(SSHArrayOutput) -} - -func (i SSHArray) ToOutput(ctx context.Context) pulumix.Output[[]SSH] { - return pulumix.Output[[]SSH]{ - OutputState: i.ToSSHArrayOutputWithContext(ctx).OutputState, - } -} - -type SSHOutput struct{ *pulumi.OutputState } - -func (SSHOutput) ElementType() reflect.Type { - return reflect.TypeOf((*SSH)(nil)).Elem() -} - -func (o SSHOutput) ToSSHOutput() SSHOutput { - return o -} - -func (o SSHOutput) ToSSHOutputWithContext(ctx context.Context) SSHOutput { - return o -} - -func (o SSHOutput) ToOutput(ctx context.Context) pulumix.Output[SSH] { - return pulumix.Output[SSH]{ - OutputState: o.OutputState, - } -} - -// Useful for distinguishing different servers that are part of the same -// build. -// -// A value of `default` is appropriate if only dealing with a single host. -func (o SSHOutput) Id() pulumi.StringOutput { - return o.ApplyT(func(v SSH) string { return v.Id }).(pulumi.StringOutput) -} - -// SSH agent socket or private keys to expose to the build under the given -// identifier. -// -// Defaults to `[$SSH_AUTH_SOCK]`. -// -// Note that your keys are **not** automatically added when using an -// agent. Run `ssh-add -l` locally to confirm which public keys are -// visible to the agent; these will be exposed to your build. -func (o SSHOutput) Paths() pulumi.StringArrayOutput { - return o.ApplyT(func(v SSH) []string { return v.Paths }).(pulumi.StringArrayOutput) -} - -type SSHArrayOutput struct{ *pulumi.OutputState } - -func (SSHArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]SSH)(nil)).Elem() -} - -func (o SSHArrayOutput) ToSSHArrayOutput() SSHArrayOutput { - return o -} - -func (o SSHArrayOutput) ToSSHArrayOutputWithContext(ctx context.Context) SSHArrayOutput { - return o -} - -func (o SSHArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]SSH] { - return pulumix.Output[[]SSH]{ - OutputState: o.OutputState, - } -} - -func (o SSHArrayOutput) Index(i pulumi.IntInput) SSHOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) SSH { - return vs[0].([]SSH)[vs[1].(int)] - }).(SSHOutput) -} - -func init() { - pulumi.RegisterInputType(reflect.TypeOf((*BuildContextInput)(nil)).Elem(), BuildContextArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*BuildContextPtrInput)(nil)).Elem(), BuildContextArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*BuilderConfigInput)(nil)).Elem(), BuilderConfigArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*BuilderConfigPtrInput)(nil)).Elem(), BuilderConfigArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromInput)(nil)).Elem(), CacheFromArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromArrayInput)(nil)).Elem(), CacheFromArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromAzureBlobInput)(nil)).Elem(), CacheFromAzureBlobArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromAzureBlobPtrInput)(nil)).Elem(), CacheFromAzureBlobArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromGitHubActionsInput)(nil)).Elem(), CacheFromGitHubActionsArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromGitHubActionsPtrInput)(nil)).Elem(), CacheFromGitHubActionsArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromLocalInput)(nil)).Elem(), CacheFromLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromLocalPtrInput)(nil)).Elem(), CacheFromLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromRegistryInput)(nil)).Elem(), CacheFromRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromRegistryPtrInput)(nil)).Elem(), CacheFromRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromS3Input)(nil)).Elem(), CacheFromS3Args{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheFromS3PtrInput)(nil)).Elem(), CacheFromS3Args{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToInput)(nil)).Elem(), CacheToArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToArrayInput)(nil)).Elem(), CacheToArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToAzureBlobInput)(nil)).Elem(), CacheToAzureBlobArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToAzureBlobPtrInput)(nil)).Elem(), CacheToAzureBlobArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToGitHubActionsInput)(nil)).Elem(), CacheToGitHubActionsArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToGitHubActionsPtrInput)(nil)).Elem(), CacheToGitHubActionsArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToInlineInput)(nil)).Elem(), CacheToInlineArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToInlinePtrInput)(nil)).Elem(), CacheToInlineArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToLocalInput)(nil)).Elem(), CacheToLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToLocalPtrInput)(nil)).Elem(), CacheToLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToRegistryInput)(nil)).Elem(), CacheToRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToRegistryPtrInput)(nil)).Elem(), CacheToRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToS3Input)(nil)).Elem(), CacheToS3Args{}) - pulumi.RegisterInputType(reflect.TypeOf((*CacheToS3PtrInput)(nil)).Elem(), CacheToS3Args{}) - pulumi.RegisterInputType(reflect.TypeOf((*ContextInput)(nil)).Elem(), ContextArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ContextMapInput)(nil)).Elem(), ContextMap{}) - pulumi.RegisterInputType(reflect.TypeOf((*DockerfileInput)(nil)).Elem(), DockerfileArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*DockerfilePtrInput)(nil)).Elem(), DockerfileArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportInput)(nil)).Elem(), ExportArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportArrayInput)(nil)).Elem(), ExportArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportCacheOnlyInput)(nil)).Elem(), ExportCacheOnlyArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportCacheOnlyPtrInput)(nil)).Elem(), ExportCacheOnlyArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportDockerInput)(nil)).Elem(), ExportDockerArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportDockerPtrInput)(nil)).Elem(), ExportDockerArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportImageInput)(nil)).Elem(), ExportImageArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportImagePtrInput)(nil)).Elem(), ExportImageArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportLocalInput)(nil)).Elem(), ExportLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportLocalPtrInput)(nil)).Elem(), ExportLocalArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportOCIInput)(nil)).Elem(), ExportOCIArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportOCIPtrInput)(nil)).Elem(), ExportOCIArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportRegistryInput)(nil)).Elem(), ExportRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportRegistryPtrInput)(nil)).Elem(), ExportRegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportTarInput)(nil)).Elem(), ExportTarArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ExportTarPtrInput)(nil)).Elem(), ExportTarArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*RegistryInput)(nil)).Elem(), RegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*RegistryPtrInput)(nil)).Elem(), RegistryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*RegistryArrayInput)(nil)).Elem(), RegistryArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*SSHInput)(nil)).Elem(), SSHArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*SSHArrayInput)(nil)).Elem(), SSHArray{}) - pulumi.RegisterOutputType(BuildContextOutput{}) - pulumi.RegisterOutputType(BuildContextPtrOutput{}) - pulumi.RegisterOutputType(BuilderConfigOutput{}) - pulumi.RegisterOutputType(BuilderConfigPtrOutput{}) - pulumi.RegisterOutputType(CacheFromOutput{}) - pulumi.RegisterOutputType(CacheFromArrayOutput{}) - pulumi.RegisterOutputType(CacheFromAzureBlobOutput{}) - pulumi.RegisterOutputType(CacheFromAzureBlobPtrOutput{}) - pulumi.RegisterOutputType(CacheFromGitHubActionsOutput{}) - pulumi.RegisterOutputType(CacheFromGitHubActionsPtrOutput{}) - pulumi.RegisterOutputType(CacheFromLocalOutput{}) - pulumi.RegisterOutputType(CacheFromLocalPtrOutput{}) - pulumi.RegisterOutputType(CacheFromRegistryOutput{}) - pulumi.RegisterOutputType(CacheFromRegistryPtrOutput{}) - pulumi.RegisterOutputType(CacheFromS3Output{}) - pulumi.RegisterOutputType(CacheFromS3PtrOutput{}) - pulumi.RegisterOutputType(CacheToOutput{}) - pulumi.RegisterOutputType(CacheToArrayOutput{}) - pulumi.RegisterOutputType(CacheToAzureBlobOutput{}) - pulumi.RegisterOutputType(CacheToAzureBlobPtrOutput{}) - pulumi.RegisterOutputType(CacheToGitHubActionsOutput{}) - pulumi.RegisterOutputType(CacheToGitHubActionsPtrOutput{}) - pulumi.RegisterOutputType(CacheToInlineOutput{}) - pulumi.RegisterOutputType(CacheToInlinePtrOutput{}) - pulumi.RegisterOutputType(CacheToLocalOutput{}) - pulumi.RegisterOutputType(CacheToLocalPtrOutput{}) - pulumi.RegisterOutputType(CacheToRegistryOutput{}) - pulumi.RegisterOutputType(CacheToRegistryPtrOutput{}) - pulumi.RegisterOutputType(CacheToS3Output{}) - pulumi.RegisterOutputType(CacheToS3PtrOutput{}) - pulumi.RegisterOutputType(ContextOutput{}) - pulumi.RegisterOutputType(ContextMapOutput{}) - pulumi.RegisterOutputType(DockerfileOutput{}) - pulumi.RegisterOutputType(DockerfilePtrOutput{}) - pulumi.RegisterOutputType(ExportOutput{}) - pulumi.RegisterOutputType(ExportArrayOutput{}) - pulumi.RegisterOutputType(ExportCacheOnlyOutput{}) - pulumi.RegisterOutputType(ExportCacheOnlyPtrOutput{}) - pulumi.RegisterOutputType(ExportDockerOutput{}) - pulumi.RegisterOutputType(ExportDockerPtrOutput{}) - pulumi.RegisterOutputType(ExportImageOutput{}) - pulumi.RegisterOutputType(ExportImagePtrOutput{}) - pulumi.RegisterOutputType(ExportLocalOutput{}) - pulumi.RegisterOutputType(ExportLocalPtrOutput{}) - pulumi.RegisterOutputType(ExportOCIOutput{}) - pulumi.RegisterOutputType(ExportOCIPtrOutput{}) - pulumi.RegisterOutputType(ExportRegistryOutput{}) - pulumi.RegisterOutputType(ExportRegistryPtrOutput{}) - pulumi.RegisterOutputType(ExportTarOutput{}) - pulumi.RegisterOutputType(ExportTarPtrOutput{}) - pulumi.RegisterOutputType(RegistryOutput{}) - pulumi.RegisterOutputType(RegistryPtrOutput{}) - pulumi.RegisterOutputType(RegistryArrayOutput{}) - pulumi.RegisterOutputType(SSHOutput{}) - pulumi.RegisterOutputType(SSHArrayOutput{}) -} diff --git a/sdk/go/dockerbuild/x/config/config.go b/sdk/go/dockerbuild/x/config/config.go deleted file mode 100644 index 26bba90..0000000 --- a/sdk/go/dockerbuild/x/config/config.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package config - -import ( - "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/config" -) - -var _ = internal.GetEnvOrDefault - -// The build daemon's address. -func GetHost(ctx *pulumi.Context) string { - v, err := config.Try(ctx, "docker-build:host") - if err == nil { - return v - } - var value string - if d := internal.GetEnvOrDefault("", nil, "DOCKER_HOST"); d != nil { - value = d.(string) - } - return value -} -func GetRegistries(ctx *pulumi.Context) string { - return config.Get(ctx, "docker-build:registries") -} diff --git a/sdk/go/dockerbuild/x/doc.go b/sdk/go/dockerbuild/x/doc.go deleted file mode 100644 index e798e27..0000000 --- a/sdk/go/dockerbuild/x/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// A Pulumi provider for building modern Docker images with buildx and BuildKit. -package dockerbuild diff --git a/sdk/go/dockerbuild/x/image.go b/sdk/go/dockerbuild/x/image.go deleted file mode 100644 index fbddc52..0000000 --- a/sdk/go/dockerbuild/x/image.go +++ /dev/null @@ -1,1376 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "errors" - "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/pulumix" -) - -// A Docker image built using buildx -- Docker's interface to the improved -// BuildKit backend. -// -// ## Stability -// -// **This resource is pre-1.0 and in public preview.** -// -// We will strive to keep APIs and behavior as stable as possible, but we -// cannot guarantee stability until version 1.0. -// -// ## Migrating Pulumi Docker v3 and v4 Image resources -// -// This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. -// Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. -// -// ### Behavioral differences -// -// There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. -// -// #### Previews -// -// Version `3.x` of the Pulumi Docker provider always builds images during preview operations. -// This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. -// -// Version `4.x` changed build-on-preview behavior to be opt-in. -// By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. -// Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. -// -// The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. -// This behavior can be changed by specifying `buildOnPreview`. -// -// #### Push behavior -// -// Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. -// They expose a `skipPush: true` option to disable pushing. -// -// This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. -// -// To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). -// Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. -// -// #### Secrets -// -// Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. -// -// Version `4.x` of the Pulumi Docker provider does not support secrets. -// -// The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. -// Instead, they should be passed directly as values. -// (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) -// Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. -// -// #### Caching -// -// Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. -// It builds targets individually and pushes them to separate images for caching. -// -// Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. -// -// Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. -// This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. -// -// The `Image` resource delegates all caching behavior to Docker. -// `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. -// -// #### Outputs -// -// Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. -// In `4.x` this could also be a single sha256 hash if the image wasn't pushed. -// -// Unlike earlier providers the `Image` resource can push multiple tags. -// As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. -// If multiple tags were pushed this uses one at random. -// -// If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. -// -// #### Tag deletion and refreshes -// -// Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. -// -// The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. -// If any are missing a subsequent `update` will push them. -// -// When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. -// Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). -// Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. -// -// Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. -// -// ### Example migration -// -// Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. -// -// The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. -// After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. -// In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. -// -// The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. -// It it is shown with parameters similar to the `v3` example for completeness. -// -// ## Example Usage -// -// ## Example Usage -// ### Push to AWS ECR with caching -// ```go -// package main -// -// import ( -// -// "fmt" -// -// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// ecrRepository, err := ecr.NewRepository(ctx, "ecr-repository", nil) -// if err != nil { -// return err -// } -// authToken := ecr.GetAuthorizationTokenOutput(ctx, ecr.GetAuthorizationTokenOutputArgs{ -// RegistryId: ecrRepository.RegistryId, -// }, nil) -// myImage, err := dockerbuild.NewImage(ctx, "my-image", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:cache", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// ImageManifest: pulumi.Bool(true), -// OciMediaTypes: pulumi.Bool(true), -// Ref: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:cache", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("./app"), -// }, -// Push: pulumi.Bool(true), -// Registries: dockerbuild.RegistryArray{ -// &dockerbuild.RegistryArgs{ -// Address: ecrRepository.RepositoryUrl, -// Password: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { -// return &authToken.Password, nil -// }).(pulumi.StringPtrOutput), -// Username: authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { -// return &authToken.UserName, nil -// }).(pulumi.StringPtrOutput), -// }, -// }, -// Tags: pulumi.StringArray{ -// ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { -// return fmt.Sprintf("%v:latest", repositoryUrl), nil -// }).(pulumi.StringOutput), -// }, -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", myImage.Ref) -// return nil -// }) -// } -// -// ``` -// ### Multi-platform image -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Plan9_amd64, -// dockerbuild.Platform_Plan9_386, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Registry export -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(true), -// Registries: dockerbuild.RegistryArray{ -// &dockerbuild.RegistryArgs{ -// Address: pulumi.String("docker.io"), -// Password: pulumi.Any(dockerHubPassword), -// Username: pulumi.String("pulumibot"), -// }, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0"), -// }, -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", myImage.Ref) -// return nil -// }) -// } -// -// ``` -// ### Caching -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Local: &dockerbuild.CacheFromLocalArgs{ -// Src: pulumi.String("tmp/cache"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Local: &dockerbuild.CacheToLocalArgs{ -// Dest: pulumi.String("tmp/cache"), -// Mode: dockerbuild.CacheModeMax, -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Docker Build Cloud -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Builder: &dockerbuild.BuilderConfigArgs{ -// Name: pulumi.String("cloud-builder-name"), -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Exec: pulumi.Bool(true), -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Build arguments -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// BuildArgs: pulumi.StringMap{ -// "SET_ME_TO_TRUE": pulumi.String("true"), -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Build target -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Push: pulumi.Bool(false), -// Target: pulumi.String("build-me"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Named contexts -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// Named: dockerbuild.ContextMap{ -// "golang:latest": &dockerbuild.ContextArgs{ -// Location: pulumi.String("docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984"), -// }, -// }, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Remote context -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Inline Dockerfile -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Dockerfile: &dockerbuild.DockerfileArgs{ -// Inline: pulumi.String("FROM busybox\nCOPY hello.c ./\n"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Remote context -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("https://github.com/docker-library/hello-world.git"), -// }, -// Dockerfile: &dockerbuild.DockerfileArgs{ -// Location: pulumi.String("app/Dockerfile"), -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// ### Local export -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := dockerbuild.NewImage(ctx, "image", &dockerbuild.ImageArgs{ -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Exports: dockerbuild.ExportArray{ -// &dockerbuild.ExportArgs{ -// Docker: &dockerbuild.ExportDockerArgs{ -// Tar: pulumi.Bool(true), -// }, -// }, -// }, -// Push: pulumi.Bool(false), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -type Image struct { - pulumi.CustomResourceState - - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts pulumix.ArrayOutput[string] `pulumi:"addHosts"` - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs pulumix.MapOutput[string] `pulumi:"buildArgs"` - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview pulumix.Output[*bool] `pulumi:"buildOnPreview"` - // Builder configuration. - Builder pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput] `pulumi:"builder"` - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom pulumix.GArrayOutput[CacheFrom, CacheFromOutput] `pulumi:"cacheFrom"` - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo pulumix.GArrayOutput[CacheTo, CacheToOutput] `pulumi:"cacheTo"` - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context pulumix.GPtrOutput[BuildContext, BuildContextOutput] `pulumi:"context"` - // A preliminary hash of the image's build context. - // - // Pulumi uses this to determine if an image _may_ need to be re-built. - ContextHash pulumix.Output[string] `pulumi:"contextHash"` - // A SHA256 digest of the image if it was exported to a registry or - // elsewhere. - // - // Empty if the image was not exported. - // - // Registry images can be referenced precisely as `@`. The - // `ref` output provides one such reference as a convenience. - Digest pulumix.Output[string] `pulumi:"digest"` - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile pulumix.GPtrOutput[Dockerfile, DockerfileOutput] `pulumi:"dockerfile"` - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec pulumix.Output[*bool] `pulumi:"exec"` - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports pulumix.GArrayOutput[Export, ExportOutput] `pulumi:"exports"` - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels pulumix.MapOutput[string] `pulumi:"labels"` - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load pulumix.Output[*bool] `pulumi:"load"` - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network pulumix.Output[*NetworkMode] `pulumi:"network"` - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache pulumix.Output[*bool] `pulumi:"noCache"` - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms pulumix.ArrayOutput[Platform] `pulumi:"platforms"` - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull pulumix.Output[*bool] `pulumi:"pull"` - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push pulumix.Output[bool] `pulumi:"push"` - // If the image was pushed to any registries then this will contain a - // single fully-qualified tag including the build's digest. - // - // If the image had tags but was not exported, this will take on a value - // of one of those tags. - // - // This will be empty if the image had no exports and no tags. - // - // This is only for convenience and may not be appropriate for situations - // where multiple tags or registries are involved. In those cases this - // output is not guaranteed to be stable. - // - // For more control over tags consumed by downstream resources you should - // use the `digest` output. - Ref pulumix.Output[string] `pulumi:"ref"` - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries pulumix.GArrayOutput[Registry, RegistryOutput] `pulumi:"registries"` - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets pulumix.MapOutput[string] `pulumi:"secrets"` - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh pulumix.GArrayOutput[SSH, SSHOutput] `pulumi:"ssh"` - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags pulumix.ArrayOutput[string] `pulumi:"tags"` - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target pulumix.Output[*string] `pulumi:"target"` -} - -// NewImage registers a new resource with the given unique name, arguments, and options. -func NewImage(ctx *pulumi.Context, - name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { - if args == nil { - 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 { - args.Network = pulumix.Ptr(NetworkMode("default")) - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Image - err := ctx.RegisterResource("docker-build:index:Image", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// GetImage gets an existing Image resource's state with the given name, ID, and optional -// state properties that are used to uniquely qualify the lookup (nil if not required). -func GetImage(ctx *pulumi.Context, - name string, id pulumi.IDInput, state *ImageState, opts ...pulumi.ResourceOption) (*Image, error) { - var resource Image - err := ctx.ReadResource("docker-build:index:Image", name, id, state, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// Input properties used for looking up and filtering Image resources. -type imageState struct { -} - -type ImageState struct { -} - -func (ImageState) ElementType() reflect.Type { - return reflect.TypeOf((*imageState)(nil)).Elem() -} - -type imageArgs struct { - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts []string `pulumi:"addHosts"` - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs map[string]string `pulumi:"buildArgs"` - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview *bool `pulumi:"buildOnPreview"` - // Builder configuration. - Builder *BuilderConfig `pulumi:"builder"` - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom []CacheFrom `pulumi:"cacheFrom"` - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo []CacheTo `pulumi:"cacheTo"` - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context *BuildContext `pulumi:"context"` - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile *Dockerfile `pulumi:"dockerfile"` - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec *bool `pulumi:"exec"` - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports []Export `pulumi:"exports"` - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels map[string]string `pulumi:"labels"` - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load *bool `pulumi:"load"` - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network *NetworkMode `pulumi:"network"` - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache *bool `pulumi:"noCache"` - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms []Platform `pulumi:"platforms"` - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull *bool `pulumi:"pull"` - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push bool `pulumi:"push"` - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries []Registry `pulumi:"registries"` - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets map[string]string `pulumi:"secrets"` - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh []SSH `pulumi:"ssh"` - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags []string `pulumi:"tags"` - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target *string `pulumi:"target"` -} - -// The set of arguments for constructing a Image resource. -type ImageArgs struct { - // Custom `host:ip` mappings to use during the build. - // - // Equivalent to Docker's `--add-host` flag. - AddHosts pulumix.Input[[]string] - // `ARG` names and values to set during the build. - // - // These variables are accessed like environment variables inside `RUN` - // instructions. - // - // Build arguments are persisted in the image, so you should use `secrets` - // if these arguments are sensitive. - // - // Equivalent to Docker's `--build-arg` flag. - BuildArgs pulumix.Input[map[string]string] - // Setting this to `false` will always skip image builds during previews, - // and setting it to `true` will always build images during previews. - // - // Images built during previews are never exported to registries, however - // cache manifests are still exported. - // - // On-disk Dockerfiles are always validated for syntactic correctness - // regardless of this setting. - // - // Defaults to `true` as a safeguard against broken images merging as part - // of CI pipelines. - BuildOnPreview pulumix.Input[*bool] - // Builder configuration. - Builder pulumix.Input[*BuilderConfigArgs] - // Cache export configuration. - // - // Equivalent to Docker's `--cache-from` flag. - CacheFrom pulumix.Input[[]*CacheFromArgs] - // Cache import configuration. - // - // Equivalent to Docker's `--cache-to` flag. - CacheTo pulumix.Input[[]*CacheToArgs] - // Build context settings. Defaults to the current directory. - // - // Equivalent to Docker's `PATH | URL | -` positional argument. - Context pulumix.Input[*BuildContextArgs] - // Dockerfile settings. - // - // Equivalent to Docker's `--file` flag. - Dockerfile pulumix.Input[*DockerfileArgs] - // Use `exec` mode to build this image. - // - // By default the provider embeds a v25 Docker client with v0.12 buildx - // support. This helps ensure consistent behavior across environments and - // is compatible with alternative build backends (e.g. `buildkitd`), but - // it may not be desirable if you require a specific version of buildx. - // For example you may want to run a custom `docker-buildx` binary with - // support for [Docker Build - // Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - // - // When this is set to `true` the provider will instead execute the - // `docker-buildx` binary directly to perform its operations. The user is - // responsible for ensuring this binary exists, with correct permissions - // and pre-configured builders, at a path Docker expects (e.g. - // `~/.docker/cli-plugins`). - // - // Debugging `exec` mode may be more difficult as Pulumi will not be able - // to surface fine-grained errors and warnings. Additionally credentials - // are temporarily written to disk in order to provide them to the - // `docker-buildx` binary. - Exec pulumix.Input[*bool] - // Controls where images are persisted after building. - // - // Images are only stored in the local cache unless `exports` are - // explicitly configured. - // - // Exporting to multiple destinations requires a daemon running BuildKit - // 0.13 or later. - // - // Equivalent to Docker's `--output` flag. - Exports pulumix.Input[[]*ExportArgs] - // Attach arbitrary key/value metadata to the image. - // - // Equivalent to Docker's `--label` flag. - Labels pulumix.Input[map[string]string] - // When `true` the build will automatically include a `docker` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--load` flag. - Load pulumix.Input[*bool] - // Set the network mode for `RUN` instructions. Defaults to `default`. - // - // For custom networks, configure your builder with `--driver-opt network=...`. - // - // Equivalent to Docker's `--network` flag. - Network pulumix.Input[*NetworkMode] - // Do not import cache manifests when building the image. - // - // Equivalent to Docker's `--no-cache` flag. - NoCache pulumix.Input[*bool] - // Set target platform(s) for the build. Defaults to the host's platform. - // - // Equivalent to Docker's `--platform` flag. - Platforms pulumix.Input[[]Platform] - // Always pull referenced images. - // - // Equivalent to Docker's `--pull` flag. - Pull pulumix.Input[*bool] - // When `true` the build will automatically include a `registry` export. - // - // Defaults to `false`. - // - // Equivalent to Docker's `--push` flag. - Push pulumix.Input[bool] - // Registry credentials. Required if reading or exporting to private - // repositories. - // - // Credentials are kept in-memory and do not pollute pre-existing - // credentials on the host. - // - // Similar to `docker login`. - Registries pulumix.Input[[]*RegistryArgs] - // A mapping of secret names to their corresponding values. - // - // Unlike the Docker CLI, these can be passed by value and do not need to - // exist on-disk or in environment variables. - // - // Build arguments and environment variables are persistent in the final - // image, so you should use this for sensitive values. - // - // Similar to Docker's `--secret` flag. - Secrets pulumix.Input[map[string]string] - // SSH agent socket or keys to expose to the build. - // - // Equivalent to Docker's `--ssh` flag. - Ssh pulumix.Input[[]*SSHArgs] - // Name and optionally a tag (format: `name:tag`). - // - // If exporting to a registry, the name should include the fully qualified - // registry address (e.g. `docker.io/pulumi/pulumi:latest`). - // - // Equivalent to Docker's `--tag` flag. - Tags pulumix.Input[[]string] - // Set the target build stage(s) to build. - // - // If not specified all targets will be built by default. - // - // Equivalent to Docker's `--target` flag. - Target pulumix.Input[*string] -} - -func (ImageArgs) ElementType() reflect.Type { - return reflect.TypeOf((*imageArgs)(nil)).Elem() -} - -type ImageOutput struct{ *pulumi.OutputState } - -func (ImageOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Image)(nil)).Elem() -} - -func (o ImageOutput) ToImageOutput() ImageOutput { - return o -} - -func (o ImageOutput) ToImageOutputWithContext(ctx context.Context) ImageOutput { - return o -} - -func (o ImageOutput) ToOutput(ctx context.Context) pulumix.Output[Image] { - return pulumix.Output[Image]{ - OutputState: o.OutputState, - } -} - -// Custom `host:ip` mappings to use during the build. -// -// Equivalent to Docker's `--add-host` flag. -func (o ImageOutput) AddHosts() pulumix.ArrayOutput[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.ArrayOutput[string] { return v.AddHosts }) - unwrapped := pulumix.Flatten[[]string, pulumix.ArrayOutput[string]](value) - return pulumix.ArrayOutput[string]{OutputState: unwrapped.OutputState} -} - -// `ARG` names and values to set during the build. -// -// These variables are accessed like environment variables inside `RUN` -// instructions. -// -// Build arguments are persisted in the image, so you should use `secrets` -// if these arguments are sensitive. -// -// Equivalent to Docker's `--build-arg` flag. -func (o ImageOutput) BuildArgs() pulumix.MapOutput[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.MapOutput[string] { return v.BuildArgs }) - unwrapped := pulumix.Flatten[map[string]string, pulumix.MapOutput[string]](value) - return pulumix.MapOutput[string]{OutputState: unwrapped.OutputState} -} - -// Setting this to `false` will always skip image builds during previews, -// and setting it to `true` will always build images during previews. -// -// Images built during previews are never exported to registries, however -// cache manifests are still exported. -// -// On-disk Dockerfiles are always validated for syntactic correctness -// regardless of this setting. -// -// Defaults to `true` as a safeguard against broken images merging as part -// of CI pipelines. -func (o ImageOutput) BuildOnPreview() pulumix.Output[*bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.BuildOnPreview }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// Builder configuration. -func (o ImageOutput) Builder() pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput] { return v.Builder }) - unwrapped := pulumix.Flatten[*BuilderConfig, pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput]](value) - return pulumix.GPtrOutput[BuilderConfig, BuilderConfigOutput]{OutputState: unwrapped.OutputState} -} - -// Cache export configuration. -// -// Equivalent to Docker's `--cache-from` flag. -func (o ImageOutput) CacheFrom() pulumix.GArrayOutput[CacheFrom, CacheFromOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GArrayOutput[CacheFrom, CacheFromOutput] { return v.CacheFrom }) - unwrapped := pulumix.Flatten[[]CacheFrom, pulumix.GArrayOutput[CacheFrom, CacheFromOutput]](value) - return pulumix.GArrayOutput[CacheFrom, CacheFromOutput]{OutputState: unwrapped.OutputState} -} - -// Cache import configuration. -// -// Equivalent to Docker's `--cache-to` flag. -func (o ImageOutput) CacheTo() pulumix.GArrayOutput[CacheTo, CacheToOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GArrayOutput[CacheTo, CacheToOutput] { return v.CacheTo }) - unwrapped := pulumix.Flatten[[]CacheTo, pulumix.GArrayOutput[CacheTo, CacheToOutput]](value) - return pulumix.GArrayOutput[CacheTo, CacheToOutput]{OutputState: unwrapped.OutputState} -} - -// Build context settings. Defaults to the current directory. -// -// Equivalent to Docker's `PATH | URL | -` positional argument. -func (o ImageOutput) Context() pulumix.GPtrOutput[BuildContext, BuildContextOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GPtrOutput[BuildContext, BuildContextOutput] { return v.Context }) - unwrapped := pulumix.Flatten[*BuildContext, pulumix.GPtrOutput[BuildContext, BuildContextOutput]](value) - return pulumix.GPtrOutput[BuildContext, BuildContextOutput]{OutputState: unwrapped.OutputState} -} - -// A preliminary hash of the image's build context. -// -// Pulumi uses this to determine if an image _may_ need to be re-built. -func (o ImageOutput) ContextHash() pulumix.Output[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[string] { return v.ContextHash }) - return pulumix.Flatten[string, pulumix.Output[string]](value) -} - -// A SHA256 digest of the image if it was exported to a registry or -// elsewhere. -// -// Empty if the image was not exported. -// -// Registry images can be referenced precisely as `@`. The -// `ref` output provides one such reference as a convenience. -func (o ImageOutput) Digest() pulumix.Output[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[string] { return v.Digest }) - return pulumix.Flatten[string, pulumix.Output[string]](value) -} - -// Dockerfile settings. -// -// Equivalent to Docker's `--file` flag. -func (o ImageOutput) Dockerfile() pulumix.GPtrOutput[Dockerfile, DockerfileOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GPtrOutput[Dockerfile, DockerfileOutput] { return v.Dockerfile }) - unwrapped := pulumix.Flatten[*Dockerfile, pulumix.GPtrOutput[Dockerfile, DockerfileOutput]](value) - return pulumix.GPtrOutput[Dockerfile, DockerfileOutput]{OutputState: unwrapped.OutputState} -} - -// Use `exec` mode to build this image. -// -// By default the provider embeds a v25 Docker client with v0.12 buildx -// support. This helps ensure consistent behavior across environments and -// is compatible with alternative build backends (e.g. `buildkitd`), but -// it may not be desirable if you require a specific version of buildx. -// For example you may want to run a custom `docker-buildx` binary with -// support for [Docker Build -// Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). -// -// When this is set to `true` the provider will instead execute the -// `docker-buildx` binary directly to perform its operations. The user is -// responsible for ensuring this binary exists, with correct permissions -// and pre-configured builders, at a path Docker expects (e.g. -// `~/.docker/cli-plugins`). -// -// Debugging `exec` mode may be more difficult as Pulumi will not be able -// to surface fine-grained errors and warnings. Additionally credentials -// are temporarily written to disk in order to provide them to the -// `docker-buildx` binary. -func (o ImageOutput) Exec() pulumix.Output[*bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.Exec }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// Controls where images are persisted after building. -// -// Images are only stored in the local cache unless `exports` are -// explicitly configured. -// -// Exporting to multiple destinations requires a daemon running BuildKit -// 0.13 or later. -// -// Equivalent to Docker's `--output` flag. -func (o ImageOutput) Exports() pulumix.GArrayOutput[Export, ExportOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GArrayOutput[Export, ExportOutput] { return v.Exports }) - unwrapped := pulumix.Flatten[[]Export, pulumix.GArrayOutput[Export, ExportOutput]](value) - return pulumix.GArrayOutput[Export, ExportOutput]{OutputState: unwrapped.OutputState} -} - -// Attach arbitrary key/value metadata to the image. -// -// Equivalent to Docker's `--label` flag. -func (o ImageOutput) Labels() pulumix.MapOutput[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.MapOutput[string] { return v.Labels }) - unwrapped := pulumix.Flatten[map[string]string, pulumix.MapOutput[string]](value) - return pulumix.MapOutput[string]{OutputState: unwrapped.OutputState} -} - -// When `true` the build will automatically include a `docker` export. -// -// Defaults to `false`. -// -// Equivalent to Docker's `--load` flag. -func (o ImageOutput) Load() pulumix.Output[*bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.Load }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// Set the network mode for `RUN` instructions. Defaults to `default`. -// -// For custom networks, configure your builder with `--driver-opt network=...`. -// -// Equivalent to Docker's `--network` flag. -func (o ImageOutput) Network() pulumix.Output[*NetworkMode] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*NetworkMode] { return v.Network }) - return pulumix.Flatten[*NetworkMode, pulumix.Output[*NetworkMode]](value) -} - -// Do not import cache manifests when building the image. -// -// Equivalent to Docker's `--no-cache` flag. -func (o ImageOutput) NoCache() pulumix.Output[*bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.NoCache }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// Set target platform(s) for the build. Defaults to the host's platform. -// -// Equivalent to Docker's `--platform` flag. -func (o ImageOutput) Platforms() pulumix.ArrayOutput[Platform] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.ArrayOutput[Platform] { return v.Platforms }) - unwrapped := pulumix.Flatten[[]Platform, pulumix.ArrayOutput[Platform]](value) - return pulumix.ArrayOutput[Platform]{OutputState: unwrapped.OutputState} -} - -// Always pull referenced images. -// -// Equivalent to Docker's `--pull` flag. -func (o ImageOutput) Pull() pulumix.Output[*bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*bool] { return v.Pull }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// When `true` the build will automatically include a `registry` export. -// -// Defaults to `false`. -// -// Equivalent to Docker's `--push` flag. -func (o ImageOutput) Push() pulumix.Output[bool] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[bool] { return v.Push }) - return pulumix.Flatten[bool, pulumix.Output[bool]](value) -} - -// If the image was pushed to any registries then this will contain a -// single fully-qualified tag including the build's digest. -// -// If the image had tags but was not exported, this will take on a value -// of one of those tags. -// -// This will be empty if the image had no exports and no tags. -// -// This is only for convenience and may not be appropriate for situations -// where multiple tags or registries are involved. In those cases this -// output is not guaranteed to be stable. -// -// For more control over tags consumed by downstream resources you should -// use the `digest` output. -func (o ImageOutput) Ref() pulumix.Output[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[string] { return v.Ref }) - return pulumix.Flatten[string, pulumix.Output[string]](value) -} - -// Registry credentials. Required if reading or exporting to private -// repositories. -// -// Credentials are kept in-memory and do not pollute pre-existing -// credentials on the host. -// -// Similar to `docker login`. -func (o ImageOutput) Registries() pulumix.GArrayOutput[Registry, RegistryOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GArrayOutput[Registry, RegistryOutput] { return v.Registries }) - unwrapped := pulumix.Flatten[[]Registry, pulumix.GArrayOutput[Registry, RegistryOutput]](value) - return pulumix.GArrayOutput[Registry, RegistryOutput]{OutputState: unwrapped.OutputState} -} - -// A mapping of secret names to their corresponding values. -// -// Unlike the Docker CLI, these can be passed by value and do not need to -// exist on-disk or in environment variables. -// -// Build arguments and environment variables are persistent in the final -// image, so you should use this for sensitive values. -// -// Similar to Docker's `--secret` flag. -func (o ImageOutput) Secrets() pulumix.MapOutput[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.MapOutput[string] { return v.Secrets }) - unwrapped := pulumix.Flatten[map[string]string, pulumix.MapOutput[string]](value) - return pulumix.MapOutput[string]{OutputState: unwrapped.OutputState} -} - -// SSH agent socket or keys to expose to the build. -// -// Equivalent to Docker's `--ssh` flag. -func (o ImageOutput) Ssh() pulumix.GArrayOutput[SSH, SSHOutput] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.GArrayOutput[SSH, SSHOutput] { return v.Ssh }) - unwrapped := pulumix.Flatten[[]SSH, pulumix.GArrayOutput[SSH, SSHOutput]](value) - return pulumix.GArrayOutput[SSH, SSHOutput]{OutputState: unwrapped.OutputState} -} - -// Name and optionally a tag (format: `name:tag`). -// -// If exporting to a registry, the name should include the fully qualified -// registry address (e.g. `docker.io/pulumi/pulumi:latest`). -// -// Equivalent to Docker's `--tag` flag. -func (o ImageOutput) Tags() pulumix.ArrayOutput[string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.ArrayOutput[string] { return v.Tags }) - unwrapped := pulumix.Flatten[[]string, pulumix.ArrayOutput[string]](value) - return pulumix.ArrayOutput[string]{OutputState: unwrapped.OutputState} -} - -// Set the target build stage(s) to build. -// -// If not specified all targets will be built by default. -// -// Equivalent to Docker's `--target` flag. -func (o ImageOutput) Target() pulumix.Output[*string] { - value := pulumix.Apply[Image](o, func(v Image) pulumix.Output[*string] { return v.Target }) - return pulumix.Flatten[*string, pulumix.Output[*string]](value) -} - -func init() { - pulumi.RegisterOutputType(ImageOutput{}) -} diff --git a/sdk/go/dockerbuild/x/index.go b/sdk/go/dockerbuild/x/index.go deleted file mode 100644 index 1deb0f3..0000000 --- a/sdk/go/dockerbuild/x/index.go +++ /dev/null @@ -1,288 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "errors" - "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/pulumix" -) - -// A wrapper around `docker buildx imagetools create` to create an index -// (or manifest list) referencing one or more existing images. -// -// In most cases you do not need an `Index` to build a multi-platform -// image -- specifying multiple platforms on the `Image` will handle this -// for you automatically. -// -// However, as of April 2024, building multi-platform images _with -// caching_ will only export a cache for one platform at a time (see [this -// discussion](https://github.com/docker/buildx/discussions/1382) for more -// details). -// -// Therefore this resource can be helpful if you are building -// multi-platform images with caching: each platform can be built and -// cached separately, and an `Index` can join them all together. An -// example of this is shown below. -// -// This resource creates an OCI image index or a Docker manifest list -// depending on the media types of the source images. -// -// ## Example Usage -// ### Multi-platform registry caching -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// amd64, err := dockerbuild.NewImage(ctx, "amd64", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// Mode: dockerbuild.CacheModeMax, -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-amd64"), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Linux_amd64, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0-amd64"), -// }, -// }) -// if err != nil { -// return err -// } -// arm64, err := dockerbuild.NewImage(ctx, "arm64", &dockerbuild.ImageArgs{ -// CacheFrom: dockerbuild.CacheFromArray{ -// &dockerbuild.CacheFromArgs{ -// Registry: &dockerbuild.CacheFromRegistryArgs{ -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), -// }, -// }, -// }, -// CacheTo: dockerbuild.CacheToArray{ -// &dockerbuild.CacheToArgs{ -// Registry: &dockerbuild.CacheToRegistryArgs{ -// Mode: dockerbuild.CacheModeMax, -// Ref: pulumi.String("docker.io/pulumi/pulumi:cache-arm64"), -// }, -// }, -// }, -// Context: &dockerbuild.BuildContextArgs{ -// Location: pulumi.String("app"), -// }, -// Platforms: docker - build.PlatformArray{ -// dockerbuild.Platform_Linux_arm64, -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("docker.io/pulumi/pulumi:3.107.0-arm64"), -// }, -// }) -// if err != nil { -// return err -// } -// index, err := dockerbuild.NewIndex(ctx, "index", &dockerbuild.IndexArgs{ -// Sources: pulumi.StringArray{ -// amd64.Ref, -// arm64.Ref, -// }, -// Tag: pulumi.String("docker.io/pulumi/pulumi:3.107.0"), -// }) -// if err != nil { -// return err -// } -// ctx.Export("ref", index.Ref) -// return nil -// }) -// } -// -// ``` -type Index struct { - pulumi.CustomResourceState - - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push pulumix.Output[*bool] `pulumi:"push"` - // The pushed tag with digest. - // - // Identical to the tag if the index was not pushed. - Ref pulumix.Output[string] `pulumi:"ref"` - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry pulumix.GPtrOutput[Registry, RegistryOutput] `pulumi:"registry"` - // Existing images to include in the index. - Sources pulumix.ArrayOutput[string] `pulumi:"sources"` - // The tag to apply to the index. - Tag pulumix.Output[string] `pulumi:"tag"` -} - -// NewIndex registers a new resource with the given unique name, arguments, and options. -func NewIndex(ctx *pulumi.Context, - name string, args *IndexArgs, opts ...pulumi.ResourceOption) (*Index, error) { - if args == nil { - return nil, errors.New("missing one or more required arguments") - } - - if args.Sources == nil { - return nil, errors.New("invalid value for required argument 'Sources'") - } - if args.Tag == nil { - return nil, errors.New("invalid value for required argument 'Tag'") - } - if args.Push == nil { - args.Push = pulumix.Ptr(true) - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Index - err := ctx.RegisterResource("docker-build:index:Index", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// GetIndex gets an existing Index resource's state with the given name, ID, and optional -// state properties that are used to uniquely qualify the lookup (nil if not required). -func GetIndex(ctx *pulumi.Context, - name string, id pulumi.IDInput, state *IndexState, opts ...pulumi.ResourceOption) (*Index, error) { - var resource Index - err := ctx.ReadResource("docker-build:index:Index", name, id, state, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -// Input properties used for looking up and filtering Index resources. -type indexState struct { -} - -type IndexState struct { -} - -func (IndexState) ElementType() reflect.Type { - return reflect.TypeOf((*indexState)(nil)).Elem() -} - -type indexArgs struct { - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push *bool `pulumi:"push"` - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry *Registry `pulumi:"registry"` - // Existing images to include in the index. - Sources []string `pulumi:"sources"` - // The tag to apply to the index. - Tag string `pulumi:"tag"` -} - -// The set of arguments for constructing a Index resource. -type IndexArgs struct { - // If true, push the index to the target registry. - // - // Defaults to `true`. - Push pulumix.Input[*bool] - // Authentication for the registry where the tagged index will be pushed. - // - // Credentials can also be included with the provider's configuration. - Registry pulumix.Input[*RegistryArgs] - // Existing images to include in the index. - Sources pulumix.Input[[]string] - // The tag to apply to the index. - Tag pulumix.Input[string] -} - -func (IndexArgs) ElementType() reflect.Type { - return reflect.TypeOf((*indexArgs)(nil)).Elem() -} - -type IndexOutput struct{ *pulumi.OutputState } - -func (IndexOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Index)(nil)).Elem() -} - -func (o IndexOutput) ToIndexOutput() IndexOutput { - return o -} - -func (o IndexOutput) ToIndexOutputWithContext(ctx context.Context) IndexOutput { - return o -} - -func (o IndexOutput) ToOutput(ctx context.Context) pulumix.Output[Index] { - return pulumix.Output[Index]{ - OutputState: o.OutputState, - } -} - -// If true, push the index to the target registry. -// -// Defaults to `true`. -func (o IndexOutput) Push() pulumix.Output[*bool] { - value := pulumix.Apply[Index](o, func(v Index) pulumix.Output[*bool] { return v.Push }) - return pulumix.Flatten[*bool, pulumix.Output[*bool]](value) -} - -// The pushed tag with digest. -// -// Identical to the tag if the index was not pushed. -func (o IndexOutput) Ref() pulumix.Output[string] { - value := pulumix.Apply[Index](o, func(v Index) pulumix.Output[string] { return v.Ref }) - return pulumix.Flatten[string, pulumix.Output[string]](value) -} - -// Authentication for the registry where the tagged index will be pushed. -// -// Credentials can also be included with the provider's configuration. -func (o IndexOutput) Registry() pulumix.GPtrOutput[Registry, RegistryOutput] { - value := pulumix.Apply[Index](o, func(v Index) pulumix.GPtrOutput[Registry, RegistryOutput] { return v.Registry }) - unwrapped := pulumix.Flatten[*Registry, pulumix.GPtrOutput[Registry, RegistryOutput]](value) - return pulumix.GPtrOutput[Registry, RegistryOutput]{OutputState: unwrapped.OutputState} -} - -// Existing images to include in the index. -func (o IndexOutput) Sources() pulumix.ArrayOutput[string] { - value := pulumix.Apply[Index](o, func(v Index) pulumix.ArrayOutput[string] { return v.Sources }) - unwrapped := pulumix.Flatten[[]string, pulumix.ArrayOutput[string]](value) - return pulumix.ArrayOutput[string]{OutputState: unwrapped.OutputState} -} - -// The tag to apply to the index. -func (o IndexOutput) Tag() pulumix.Output[string] { - value := pulumix.Apply[Index](o, func(v Index) pulumix.Output[string] { return v.Tag }) - return pulumix.Flatten[string, pulumix.Output[string]](value) -} - -func init() { - pulumi.RegisterOutputType(IndexOutput{}) -} diff --git a/sdk/go/dockerbuild/x/init.go b/sdk/go/dockerbuild/x/init.go deleted file mode 100644 index 33469af..0000000 --- a/sdk/go/dockerbuild/x/init.go +++ /dev/null @@ -1,68 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "fmt" - - "github.com/blang/semver" - "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild/internal" - "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -) - -type module struct { - version semver.Version -} - -func (m *module) Version() semver.Version { - return m.version -} - -func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { - switch typ { - case "docker-build:index:Image": - r = &Image{} - case "docker-build:index:Index": - r = &Index{} - default: - return nil, fmt.Errorf("unknown resource type: %s", typ) - } - - err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) - return -} - -type pkg struct { - version semver.Version -} - -func (p *pkg) Version() semver.Version { - return p.version -} - -func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) { - if typ != "pulumi:providers:docker-build" { - return nil, fmt.Errorf("unknown provider type: %s", typ) - } - - r := &Provider{} - err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) - return r, err -} - -func init() { - version, err := internal.PkgVersion() - if err != nil { - version = semver.Version{Major: 1} - } - pulumi.RegisterResourceModule( - "docker-build", - "index", - &module{version}, - ) - pulumi.RegisterResourcePackage( - "docker-build", - &pkg{version}, - ) -} diff --git a/sdk/go/dockerbuild/x/provider.go b/sdk/go/dockerbuild/x/provider.go deleted file mode 100644 index f9c9b96..0000000 --- a/sdk/go/dockerbuild/x/provider.go +++ /dev/null @@ -1,88 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "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/pulumix" -) - -type Provider struct { - pulumi.ProviderResourceState - - // The build daemon's address. - Host pulumix.Output[*string] `pulumi:"host"` -} - -// NewProvider registers a new resource with the given unique name, arguments, and options. -func NewProvider(ctx *pulumi.Context, - name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) { - if args == nil { - args = &ProviderArgs{} - } - - if args.Host == nil { - if d := internal.GetEnvOrDefault("", nil, "DOCKER_HOST"); d != nil { - args.Host = pulumix.Ptr(d.(string)) - } - } - opts = internal.PkgResourceDefaultOpts(opts) - var resource Provider - err := ctx.RegisterResource("pulumi:providers:docker-build", name, args, &resource, opts...) - if err != nil { - return nil, err - } - return &resource, nil -} - -type providerArgs struct { - // The build daemon's address. - Host *string `pulumi:"host"` - Registries []Registry `pulumi:"registries"` -} - -// The set of arguments for constructing a Provider resource. -type ProviderArgs struct { - // The build daemon's address. - Host pulumix.Input[*string] - Registries pulumix.Input[[]*RegistryArgs] -} - -func (ProviderArgs) ElementType() reflect.Type { - return reflect.TypeOf((*providerArgs)(nil)).Elem() -} - -type ProviderOutput struct{ *pulumi.OutputState } - -func (ProviderOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Provider)(nil)).Elem() -} - -func (o ProviderOutput) ToProviderOutput() ProviderOutput { - return o -} - -func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { - return o -} - -func (o ProviderOutput) ToOutput(ctx context.Context) pulumix.Output[Provider] { - return pulumix.Output[Provider]{ - OutputState: o.OutputState, - } -} - -// The build daemon's address. -func (o ProviderOutput) Host() pulumix.Output[*string] { - value := pulumix.Apply[Provider](o, func(v Provider) pulumix.Output[*string] { return v.Host }) - return pulumix.Flatten[*string, pulumix.Output[*string]](value) -} - -func init() { - pulumi.RegisterOutputType(ProviderOutput{}) -} diff --git a/sdk/go/dockerbuild/x/pulumiEnums.go b/sdk/go/dockerbuild/x/pulumiEnums.go deleted file mode 100644 index f034102..0000000 --- a/sdk/go/dockerbuild/x/pulumiEnums.go +++ /dev/null @@ -1,68 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -type CacheMode string - -const ( - // Only layers that are exported into the resulting image are cached. - CacheModeCacheModeMin = CacheMode("min") - // All layers are cached, even those of intermediate steps. - CacheModeCacheModeMax = CacheMode("max") -) - -type CompressionType string - -const ( - // Use `gzip` for compression. - CompressionTypeCompressionTypeGzip = CompressionType("gzip") - // Use `estargz` for compression. - CompressionTypeCompressionTypeEstargz = CompressionType("estargz") - // Use `zstd` for compression. - CompressionTypeCompressionTypeZstd = CompressionType("zstd") -) - -type NetworkMode string - -const ( - // The default sandbox network mode. - NetworkModeNetworkModeDefault = NetworkMode("default") - // Host network mode. - NetworkModeNetworkModeHost = NetworkMode("host") - // Disable network access. - NetworkModeNetworkModeNone = NetworkMode("none") -) - -type Platform string - -const ( - Platform_Platform_Darwin_386 = Platform("darwin/386") - Platform_Platform_Darwin_amd64 = Platform("darwin/amd64") - Platform_Platform_Darwin_arm = Platform("darwin/arm") - Platform_Platform_Darwin_arm64 = Platform("darwin/arm64") - Platform_Platform_Dragonfly_amd64 = Platform("dragonfly/amd64") - Platform_Platform_Freebsd_386 = Platform("freebsd/386") - Platform_Platform_Freebsd_amd64 = Platform("freebsd/amd64") - Platform_Platform_Freebsd_arm = Platform("freebsd/arm") - Platform_Platform_Linux_386 = Platform("linux/386") - Platform_Platform_Linux_amd64 = Platform("linux/amd64") - Platform_Platform_Linux_arm = Platform("linux/arm") - Platform_Platform_Linux_arm64 = Platform("linux/arm64") - Platform_Platform_Linux_mips64 = Platform("linux/mips64") - Platform_Platform_Linux_mips64le = Platform("linux/mips64le") - Platform_Platform_Linux_ppc64le = Platform("linux/ppc64le") - Platform_Platform_Linux_riscv64 = Platform("linux/riscv64") - Platform_Platform_Linux_s390x = Platform("linux/s390x") - Platform_Platform_Netbsd_386 = Platform("netbsd/386") - Platform_Platform_Netbsd_amd64 = Platform("netbsd/amd64") - Platform_Platform_Netbsd_arm = Platform("netbsd/arm") - Platform_Platform_Openbsd_386 = Platform("openbsd/386") - Platform_Platform_Openbsd_amd64 = Platform("openbsd/amd64") - Platform_Platform_Openbsd_arm = Platform("openbsd/arm") - Platform_Platform_Plan9_386 = Platform("plan9/386") - Platform_Platform_Plan9_amd64 = Platform("plan9/amd64") - Platform_Platform_Solaris_amd64 = Platform("solaris/amd64") - Platform_Platform_Windows_386 = Platform("windows/386") - Platform_Platform_Windows_amd64 = Platform("windows/amd64") -) diff --git a/sdk/go/dockerbuild/x/pulumiTypes.go b/sdk/go/dockerbuild/x/pulumiTypes.go deleted file mode 100644 index 5761f98..0000000 --- a/sdk/go/dockerbuild/x/pulumiTypes.go +++ /dev/null @@ -1,3413 +0,0 @@ -// Code generated by pulumi-language-go DO NOT EDIT. -// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** - -package dockerbuild - -import ( - "context" - "reflect" - - "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/pulumix" -) - -var _ = internal.GetEnvOrDefault - -type BuildContext struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location string `pulumi:"location"` - // Additional build contexts to use. - // - // These contexts are accessed with `FROM name` or `--from=name` - // statements when using Dockerfile 1.4+ syntax. - // - // Values can be local paths, HTTP URLs, or `docker-image://` images. - Named map[string]*Context `pulumi:"named"` -} - -type BuildContextArgs struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location pulumix.Input[string] `pulumi:"location"` - // Additional build contexts to use. - // - // These contexts are accessed with `FROM name` or `--from=name` - // statements when using Dockerfile 1.4+ syntax. - // - // Values can be local paths, HTTP URLs, or `docker-image://` images. - Named pulumix.Input[map[string]*ContextArgs] `pulumi:"named"` -} - -func (BuildContextArgs) ElementType() reflect.Type { - return reflect.TypeOf((*BuildContext)(nil)).Elem() -} - -func (i BuildContextArgs) ToBuildContextOutput() BuildContextOutput { - return i.ToBuildContextOutputWithContext(context.Background()) -} - -func (i BuildContextArgs) ToBuildContextOutputWithContext(ctx context.Context) BuildContextOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuildContextOutput) -} - -func (i *BuildContextArgs) ToOutput(ctx context.Context) pulumix.Output[*BuildContextArgs] { - return pulumix.Val(i) -} - -type BuildContextOutput struct{ *pulumi.OutputState } - -func (BuildContextOutput) ElementType() reflect.Type { - return reflect.TypeOf((*BuildContext)(nil)).Elem() -} - -func (o BuildContextOutput) ToBuildContextOutput() BuildContextOutput { - return o -} - -func (o BuildContextOutput) ToBuildContextOutputWithContext(ctx context.Context) BuildContextOutput { - return o -} - -func (o BuildContextOutput) ToOutput(ctx context.Context) pulumix.Output[BuildContext] { - return pulumix.Output[BuildContext]{ - OutputState: o.OutputState, - } -} - -// Resources to use for build context. -// -// The location can be: -// - A relative or absolute path to a local directory (`.`, `./app`, -// `/app`, etc.). -// - A remote URL of a Git repository, tarball, or plain text file -// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, -// etc.). -func (o BuildContextOutput) Location() pulumix.Output[string] { - return pulumix.Apply[BuildContext](o, func(v BuildContext) string { return v.Location }) -} - -// Additional build contexts to use. -// -// These contexts are accessed with `FROM name` or `--from=name` -// statements when using Dockerfile 1.4+ syntax. -// -// Values can be local paths, HTTP URLs, or `docker-image://` images. -func (o BuildContextOutput) Named() pulumix.GMapOutput[Context, ContextOutput] { - value := pulumix.Apply[BuildContext](o, func(v BuildContext) map[string]*Context { return v.Named }) - return pulumix.GMapOutput[Context, ContextOutput]{OutputState: value.OutputState} -} - -type BuilderConfig struct { - // Name of an existing buildx builder to use. - // - // Only `docker-container`, `kubernetes`, or `remote` drivers are - // supported. The legacy `docker` driver is not supported. - // - // Equivalent to Docker's `--builder` flag. - Name *string `pulumi:"name"` -} - -type BuilderConfigArgs struct { - // Name of an existing buildx builder to use. - // - // Only `docker-container`, `kubernetes`, or `remote` drivers are - // supported. The legacy `docker` driver is not supported. - // - // Equivalent to Docker's `--builder` flag. - Name pulumix.Input[*string] `pulumi:"name"` -} - -func (BuilderConfigArgs) ElementType() reflect.Type { - return reflect.TypeOf((*BuilderConfig)(nil)).Elem() -} - -func (i BuilderConfigArgs) ToBuilderConfigOutput() BuilderConfigOutput { - return i.ToBuilderConfigOutputWithContext(context.Background()) -} - -func (i BuilderConfigArgs) ToBuilderConfigOutputWithContext(ctx context.Context) BuilderConfigOutput { - return pulumi.ToOutputWithContext(ctx, i).(BuilderConfigOutput) -} - -func (i *BuilderConfigArgs) ToOutput(ctx context.Context) pulumix.Output[*BuilderConfigArgs] { - return pulumix.Val(i) -} - -type BuilderConfigOutput struct{ *pulumi.OutputState } - -func (BuilderConfigOutput) ElementType() reflect.Type { - return reflect.TypeOf((*BuilderConfig)(nil)).Elem() -} - -func (o BuilderConfigOutput) ToBuilderConfigOutput() BuilderConfigOutput { - return o -} - -func (o BuilderConfigOutput) ToBuilderConfigOutputWithContext(ctx context.Context) BuilderConfigOutput { - return o -} - -func (o BuilderConfigOutput) ToOutput(ctx context.Context) pulumix.Output[BuilderConfig] { - return pulumix.Output[BuilderConfig]{ - OutputState: o.OutputState, - } -} - -// Name of an existing buildx builder to use. -// -// Only `docker-container`, `kubernetes`, or `remote` drivers are -// supported. The legacy `docker` driver is not supported. -// -// Equivalent to Docker's `--builder` flag. -func (o BuilderConfigOutput) Name() pulumix.Output[*string] { - return pulumix.Apply[BuilderConfig](o, func(v BuilderConfig) *string { return v.Name }) -} - -type CacheFrom struct { - // Upload build caches to Azure's blob storage service. - Azblob *CacheFromAzureBlob `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha *CacheFromGitHubActions `pulumi:"gha"` - // A simple backend which caches images on your local filesystem. - Local *CacheFromLocal `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`). - Raw *string `pulumi:"raw"` - // Upload build caches to remote registries. - Registry *CacheFromRegistry `pulumi:"registry"` - // Upload build caches to AWS S3 or an S3-compatible services such as - // MinIO. - S3 *CacheFromS3 `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheFrom -func (val *CacheFrom) Defaults() *CacheFrom { - if val == nil { - return nil - } - tmp := *val - tmp.Gha = tmp.Gha.Defaults() - - tmp.S3 = tmp.S3.Defaults() - - return &tmp -} - -type CacheFromArgs struct { - // Upload build caches to Azure's blob storage service. - Azblob pulumix.Input[*CacheFromAzureBlobArgs] `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumix.Input[*bool] `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha pulumix.Input[*CacheFromGitHubActionsArgs] `pulumi:"gha"` - // A simple backend which caches images on your local filesystem. - Local pulumix.Input[*CacheFromLocalArgs] `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`). - Raw pulumix.Input[*string] `pulumi:"raw"` - // Upload build caches to remote registries. - Registry pulumix.Input[*CacheFromRegistryArgs] `pulumi:"registry"` - // Upload build caches to AWS S3 or an S3-compatible services such as - // MinIO. - S3 pulumix.Input[*CacheFromS3Args] `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheFromArgs -func (val *CacheFromArgs) Defaults() *CacheFromArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (CacheFromArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFrom)(nil)).Elem() -} - -func (i CacheFromArgs) ToCacheFromOutput() CacheFromOutput { - return i.ToCacheFromOutputWithContext(context.Background()) -} - -func (i CacheFromArgs) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromOutput) -} - -func (i *CacheFromArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheFromArgs] { - return pulumix.Val(i) -} - -type CacheFromOutput struct{ *pulumi.OutputState } - -func (CacheFromOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFrom)(nil)).Elem() -} - -func (o CacheFromOutput) ToCacheFromOutput() CacheFromOutput { - return o -} - -func (o CacheFromOutput) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { - return o -} - -func (o CacheFromOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFrom] { - return pulumix.Output[CacheFrom]{ - OutputState: o.OutputState, - } -} - -// Upload build caches to Azure's blob storage service. -func (o CacheFromOutput) Azblob() pulumix.GPtrOutput[CacheFromAzureBlob, CacheFromAzureBlobOutput] { - value := pulumix.Apply[CacheFrom](o, func(v CacheFrom) *CacheFromAzureBlob { return v.Azblob }) - return pulumix.GPtrOutput[CacheFromAzureBlob, CacheFromAzureBlobOutput]{OutputState: value.OutputState} -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o CacheFromOutput) Disabled() pulumix.Output[*bool] { - return pulumix.Apply[CacheFrom](o, func(v CacheFrom) *bool { return v.Disabled }) -} - -// Recommended for use with GitHub Actions workflows. -// -// An action like `crazy-max/ghaction-github-runtime` is recommended to -// expose appropriate credentials to your GitHub workflow. -func (o CacheFromOutput) Gha() pulumix.GPtrOutput[CacheFromGitHubActions, CacheFromGitHubActionsOutput] { - value := pulumix.Apply[CacheFrom](o, func(v CacheFrom) *CacheFromGitHubActions { return v.Gha }) - return pulumix.GPtrOutput[CacheFromGitHubActions, CacheFromGitHubActionsOutput]{OutputState: value.OutputState} -} - -// A simple backend which caches images on your local filesystem. -func (o CacheFromOutput) Local() pulumix.GPtrOutput[CacheFromLocal, CacheFromLocalOutput] { - value := pulumix.Apply[CacheFrom](o, func(v CacheFrom) *CacheFromLocal { return v.Local }) - return pulumix.GPtrOutput[CacheFromLocal, CacheFromLocalOutput]{OutputState: value.OutputState} -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=inline`). -func (o CacheFromOutput) Raw() pulumix.Output[*string] { - return pulumix.Apply[CacheFrom](o, func(v CacheFrom) *string { return v.Raw }) -} - -// Upload build caches to remote registries. -func (o CacheFromOutput) Registry() pulumix.GPtrOutput[CacheFromRegistry, CacheFromRegistryOutput] { - value := pulumix.Apply[CacheFrom](o, func(v CacheFrom) *CacheFromRegistry { return v.Registry }) - return pulumix.GPtrOutput[CacheFromRegistry, CacheFromRegistryOutput]{OutputState: value.OutputState} -} - -// Upload build caches to AWS S3 or an S3-compatible services such as -// MinIO. -func (o CacheFromOutput) S3() pulumix.GPtrOutput[CacheFromS3, CacheFromS3Output] { - value := pulumix.Apply[CacheFrom](o, func(v CacheFrom) *CacheFromS3 { return v.S3 }) - return pulumix.GPtrOutput[CacheFromS3, CacheFromS3Output]{OutputState: value.OutputState} -} - -type CacheFromAzureBlob struct { - // Base URL of the storage account. - AccountUrl *string `pulumi:"accountUrl"` - // The name of the cache image. - Name string `pulumi:"name"` - // Blob storage account key. - SecretAccessKey *string `pulumi:"secretAccessKey"` -} - -type CacheFromAzureBlobArgs struct { - // Base URL of the storage account. - AccountUrl pulumix.Input[*string] `pulumi:"accountUrl"` - // The name of the cache image. - Name pulumix.Input[string] `pulumi:"name"` - // Blob storage account key. - SecretAccessKey pulumix.Input[*string] `pulumi:"secretAccessKey"` -} - -func (CacheFromAzureBlobArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromAzureBlob)(nil)).Elem() -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobOutput() CacheFromAzureBlobOutput { - return i.ToCacheFromAzureBlobOutputWithContext(context.Background()) -} - -func (i CacheFromAzureBlobArgs) ToCacheFromAzureBlobOutputWithContext(ctx context.Context) CacheFromAzureBlobOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromAzureBlobOutput) -} - -func (i *CacheFromAzureBlobArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheFromAzureBlobArgs] { - return pulumix.Val(i) -} - -type CacheFromAzureBlobOutput struct{ *pulumi.OutputState } - -func (CacheFromAzureBlobOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromAzureBlob)(nil)).Elem() -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobOutput() CacheFromAzureBlobOutput { - return o -} - -func (o CacheFromAzureBlobOutput) ToCacheFromAzureBlobOutputWithContext(ctx context.Context) CacheFromAzureBlobOutput { - return o -} - -func (o CacheFromAzureBlobOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromAzureBlob] { - return pulumix.Output[CacheFromAzureBlob]{ - OutputState: o.OutputState, - } -} - -// Base URL of the storage account. -func (o CacheFromAzureBlobOutput) AccountUrl() pulumix.Output[*string] { - return pulumix.Apply[CacheFromAzureBlob](o, func(v CacheFromAzureBlob) *string { return v.AccountUrl }) -} - -// The name of the cache image. -func (o CacheFromAzureBlobOutput) Name() pulumix.Output[string] { - return pulumix.Apply[CacheFromAzureBlob](o, func(v CacheFromAzureBlob) string { return v.Name }) -} - -// Blob storage account key. -func (o CacheFromAzureBlobOutput) SecretAccessKey() pulumix.Output[*string] { - return pulumix.Apply[CacheFromAzureBlob](o, func(v CacheFromAzureBlob) *string { return v.SecretAccessKey }) -} - -type CacheFromGitHubActions struct { - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope *string `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token *string `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url *string `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheFromGitHubActions -func (val *CacheFromGitHubActions) Defaults() *CacheFromGitHubActions { - if val == nil { - return nil - } - tmp := *val - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - scope_ := d.(string) - tmp.Scope = &scope_ - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - token_ := d.(string) - tmp.Token = &token_ - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - url_ := d.(string) - tmp.Url = &url_ - } - } - return &tmp -} - -type CacheFromGitHubActionsArgs struct { - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope pulumix.Input[*string] `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token pulumix.Input[*string] `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url pulumix.Input[*string] `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheFromGitHubActionsArgs -func (val *CacheFromGitHubActionsArgs) Defaults() *CacheFromGitHubActionsArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - tmp.Scope = pulumix.Ptr(d.(string)) - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - tmp.Token = pulumix.Ptr(d.(string)) - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - tmp.Url = pulumix.Ptr(d.(string)) - } - } - return &tmp -} -func (CacheFromGitHubActionsArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromGitHubActions)(nil)).Elem() -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsOutput() CacheFromGitHubActionsOutput { - return i.ToCacheFromGitHubActionsOutputWithContext(context.Background()) -} - -func (i CacheFromGitHubActionsArgs) ToCacheFromGitHubActionsOutputWithContext(ctx context.Context) CacheFromGitHubActionsOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromGitHubActionsOutput) -} - -func (i *CacheFromGitHubActionsArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheFromGitHubActionsArgs] { - return pulumix.Val(i) -} - -type CacheFromGitHubActionsOutput struct{ *pulumi.OutputState } - -func (CacheFromGitHubActionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromGitHubActions)(nil)).Elem() -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsOutput() CacheFromGitHubActionsOutput { - return o -} - -func (o CacheFromGitHubActionsOutput) ToCacheFromGitHubActionsOutputWithContext(ctx context.Context) CacheFromGitHubActionsOutput { - return o -} - -func (o CacheFromGitHubActionsOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromGitHubActions] { - return pulumix.Output[CacheFromGitHubActions]{ - OutputState: o.OutputState, - } -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheFromGitHubActionsOutput) Scope() pulumix.Output[*string] { - return pulumix.Apply[CacheFromGitHubActions](o, func(v CacheFromGitHubActions) *string { return v.Scope }) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsOutput) Token() pulumix.Output[*string] { - return pulumix.Apply[CacheFromGitHubActions](o, func(v CacheFromGitHubActions) *string { return v.Token }) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheFromGitHubActionsOutput) Url() pulumix.Output[*string] { - return pulumix.Apply[CacheFromGitHubActions](o, func(v CacheFromGitHubActions) *string { return v.Url }) -} - -type CacheFromLocal struct { - // Digest of manifest to import. - Digest *string `pulumi:"digest"` - // Path of the local directory where cache gets imported from. - Src string `pulumi:"src"` -} - -type CacheFromLocalArgs struct { - // Digest of manifest to import. - Digest pulumix.Input[*string] `pulumi:"digest"` - // Path of the local directory where cache gets imported from. - Src pulumix.Input[string] `pulumi:"src"` -} - -func (CacheFromLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromLocal)(nil)).Elem() -} - -func (i CacheFromLocalArgs) ToCacheFromLocalOutput() CacheFromLocalOutput { - return i.ToCacheFromLocalOutputWithContext(context.Background()) -} - -func (i CacheFromLocalArgs) ToCacheFromLocalOutputWithContext(ctx context.Context) CacheFromLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromLocalOutput) -} - -func (i *CacheFromLocalArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheFromLocalArgs] { - return pulumix.Val(i) -} - -type CacheFromLocalOutput struct{ *pulumi.OutputState } - -func (CacheFromLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromLocal)(nil)).Elem() -} - -func (o CacheFromLocalOutput) ToCacheFromLocalOutput() CacheFromLocalOutput { - return o -} - -func (o CacheFromLocalOutput) ToCacheFromLocalOutputWithContext(ctx context.Context) CacheFromLocalOutput { - return o -} - -func (o CacheFromLocalOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromLocal] { - return pulumix.Output[CacheFromLocal]{ - OutputState: o.OutputState, - } -} - -// Digest of manifest to import. -func (o CacheFromLocalOutput) Digest() pulumix.Output[*string] { - return pulumix.Apply[CacheFromLocal](o, func(v CacheFromLocal) *string { return v.Digest }) -} - -// Path of the local directory where cache gets imported from. -func (o CacheFromLocalOutput) Src() pulumix.Output[string] { - return pulumix.Apply[CacheFromLocal](o, func(v CacheFromLocal) string { return v.Src }) -} - -type CacheFromRegistry struct { - // Fully qualified name of the cache image to import. - Ref string `pulumi:"ref"` -} - -type CacheFromRegistryArgs struct { - // Fully qualified name of the cache image to import. - Ref pulumix.Input[string] `pulumi:"ref"` -} - -func (CacheFromRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromRegistry)(nil)).Elem() -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryOutput() CacheFromRegistryOutput { - return i.ToCacheFromRegistryOutputWithContext(context.Background()) -} - -func (i CacheFromRegistryArgs) ToCacheFromRegistryOutputWithContext(ctx context.Context) CacheFromRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromRegistryOutput) -} - -func (i *CacheFromRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheFromRegistryArgs] { - return pulumix.Val(i) -} - -type CacheFromRegistryOutput struct{ *pulumi.OutputState } - -func (CacheFromRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromRegistry)(nil)).Elem() -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryOutput() CacheFromRegistryOutput { - return o -} - -func (o CacheFromRegistryOutput) ToCacheFromRegistryOutputWithContext(ctx context.Context) CacheFromRegistryOutput { - return o -} - -func (o CacheFromRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFromRegistry] { - return pulumix.Output[CacheFromRegistry]{ - OutputState: o.OutputState, - } -} - -// Fully qualified name of the cache image to import. -func (o CacheFromRegistryOutput) Ref() pulumix.Output[string] { - return pulumix.Apply[CacheFromRegistry](o, func(v CacheFromRegistry) string { return v.Ref }) -} - -type CacheFromS3 struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId *string `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix *string `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket string `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl *string `pulumi:"endpointUrl"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix *string `pulumi:"manifestsPrefix"` - // Name of the cache image. - Name *string `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region string `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey *string `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken *string `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle *bool `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheFromS3 -func (val *CacheFromS3) Defaults() *CacheFromS3 { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - accessKeyId_ := d.(string) - tmp.AccessKeyId = &accessKeyId_ - } - } - if internal.IsZero(tmp.Region) { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = d.(string) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - secretAccessKey_ := d.(string) - tmp.SecretAccessKey = &secretAccessKey_ - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - sessionToken_ := d.(string) - tmp.SessionToken = &sessionToken_ - } - } - return &tmp -} - -type CacheFromS3Args struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId pulumix.Input[*string] `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix pulumix.Input[*string] `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket pulumix.Input[string] `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl pulumix.Input[*string] `pulumi:"endpointUrl"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix pulumix.Input[*string] `pulumi:"manifestsPrefix"` - // Name of the cache image. - Name pulumix.Input[*string] `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region pulumix.Input[string] `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey pulumix.Input[*string] `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken pulumix.Input[*string] `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle pulumix.Input[*bool] `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheFromS3Args -func (val *CacheFromS3Args) Defaults() *CacheFromS3Args { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - tmp.AccessKeyId = pulumix.Ptr(d.(string)) - } - } - if tmp.Region == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = pulumix.Val(d.(string)) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - tmp.SecretAccessKey = pulumix.Ptr(d.(string)) - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - tmp.SessionToken = pulumix.Ptr(d.(string)) - } - } - return &tmp -} -func (CacheFromS3Args) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromS3)(nil)).Elem() -} - -func (i CacheFromS3Args) ToCacheFromS3Output() CacheFromS3Output { - return i.ToCacheFromS3OutputWithContext(context.Background()) -} - -func (i CacheFromS3Args) ToCacheFromS3OutputWithContext(ctx context.Context) CacheFromS3Output { - return pulumi.ToOutputWithContext(ctx, i).(CacheFromS3Output) -} - -func (i *CacheFromS3Args) ToOutput(ctx context.Context) pulumix.Output[*CacheFromS3Args] { - return pulumix.Val(i) -} - -type CacheFromS3Output struct{ *pulumi.OutputState } - -func (CacheFromS3Output) ElementType() reflect.Type { - return reflect.TypeOf((*CacheFromS3)(nil)).Elem() -} - -func (o CacheFromS3Output) ToCacheFromS3Output() CacheFromS3Output { - return o -} - -func (o CacheFromS3Output) ToCacheFromS3OutputWithContext(ctx context.Context) CacheFromS3Output { - return o -} - -func (o CacheFromS3Output) ToOutput(ctx context.Context) pulumix.Output[CacheFromS3] { - return pulumix.Output[CacheFromS3]{ - OutputState: o.OutputState, - } -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheFromS3Output) AccessKeyId() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.AccessKeyId }) -} - -// Prefix to prepend to blob filenames. -func (o CacheFromS3Output) BlobsPrefix() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.BlobsPrefix }) -} - -// Name of the S3 bucket. -func (o CacheFromS3Output) Bucket() pulumix.Output[string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) string { return v.Bucket }) -} - -// Endpoint of the S3 bucket. -func (o CacheFromS3Output) EndpointUrl() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.EndpointUrl }) -} - -// Prefix to prepend on manifest filenames. -func (o CacheFromS3Output) ManifestsPrefix() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.ManifestsPrefix }) -} - -// Name of the cache image. -func (o CacheFromS3Output) Name() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.Name }) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheFromS3Output) Region() pulumix.Output[string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) string { return v.Region }) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheFromS3Output) SecretAccessKey() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.SecretAccessKey }) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheFromS3Output) SessionToken() pulumix.Output[*string] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *string { return v.SessionToken }) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheFromS3Output) UsePathStyle() pulumix.Output[*bool] { - return pulumix.Apply[CacheFromS3](o, func(v CacheFromS3) *bool { return v.UsePathStyle }) -} - -type CacheTo struct { - // Push cache to Azure's blob storage service. - Azblob *CacheToAzureBlob `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha *CacheToGitHubActions `pulumi:"gha"` - // The inline cache storage backend is the simplest implementation to get - // started with, but it does not handle multi-stage builds. Consider the - // `registry` cache backend instead. - Inline *CacheToInline `pulumi:"inline"` - // A simple backend which caches imagines on your local filesystem. - Local *CacheToLocal `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`) - Raw *string `pulumi:"raw"` - // Push caches to remote registries. Incompatible with the `docker` build - // driver. - Registry *CacheToRegistry `pulumi:"registry"` - // Push cache to AWS S3 or S3-compatible services such as MinIO. - S3 *CacheToS3 `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheTo -func (val *CacheTo) Defaults() *CacheTo { - if val == nil { - return nil - } - tmp := *val - tmp.Azblob = tmp.Azblob.Defaults() - - tmp.Gha = tmp.Gha.Defaults() - - tmp.Local = tmp.Local.Defaults() - - tmp.Registry = tmp.Registry.Defaults() - - tmp.S3 = tmp.S3.Defaults() - - return &tmp -} - -type CacheToArgs struct { - // Push cache to Azure's blob storage service. - Azblob pulumix.Input[*CacheToAzureBlobArgs] `pulumi:"azblob"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumix.Input[*bool] `pulumi:"disabled"` - // Recommended for use with GitHub Actions workflows. - // - // An action like `crazy-max/ghaction-github-runtime` is recommended to - // expose appropriate credentials to your GitHub workflow. - Gha pulumix.Input[*CacheToGitHubActionsArgs] `pulumi:"gha"` - // The inline cache storage backend is the simplest implementation to get - // started with, but it does not handle multi-stage builds. Consider the - // `registry` cache backend instead. - Inline pulumix.Input[*CacheToInlineArgs] `pulumi:"inline"` - // A simple backend which caches imagines on your local filesystem. - Local pulumix.Input[*CacheToLocalArgs] `pulumi:"local"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=inline`) - Raw pulumix.Input[*string] `pulumi:"raw"` - // Push caches to remote registries. Incompatible with the `docker` build - // driver. - Registry pulumix.Input[*CacheToRegistryArgs] `pulumi:"registry"` - // Push cache to AWS S3 or S3-compatible services such as MinIO. - S3 pulumix.Input[*CacheToS3Args] `pulumi:"s3"` -} - -// Defaults sets the appropriate defaults for CacheToArgs -func (val *CacheToArgs) Defaults() *CacheToArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (CacheToArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheTo)(nil)).Elem() -} - -func (i CacheToArgs) ToCacheToOutput() CacheToOutput { - return i.ToCacheToOutputWithContext(context.Background()) -} - -func (i CacheToArgs) ToCacheToOutputWithContext(ctx context.Context) CacheToOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToOutput) -} - -func (i *CacheToArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToArgs] { - return pulumix.Val(i) -} - -type CacheToOutput struct{ *pulumi.OutputState } - -func (CacheToOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheTo)(nil)).Elem() -} - -func (o CacheToOutput) ToCacheToOutput() CacheToOutput { - return o -} - -func (o CacheToOutput) ToCacheToOutputWithContext(ctx context.Context) CacheToOutput { - return o -} - -func (o CacheToOutput) ToOutput(ctx context.Context) pulumix.Output[CacheTo] { - return pulumix.Output[CacheTo]{ - OutputState: o.OutputState, - } -} - -// Push cache to Azure's blob storage service. -func (o CacheToOutput) Azblob() pulumix.GPtrOutput[CacheToAzureBlob, CacheToAzureBlobOutput] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToAzureBlob { return v.Azblob }) - return pulumix.GPtrOutput[CacheToAzureBlob, CacheToAzureBlobOutput]{OutputState: value.OutputState} -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o CacheToOutput) Disabled() pulumix.Output[*bool] { - return pulumix.Apply[CacheTo](o, func(v CacheTo) *bool { return v.Disabled }) -} - -// Recommended for use with GitHub Actions workflows. -// -// An action like `crazy-max/ghaction-github-runtime` is recommended to -// expose appropriate credentials to your GitHub workflow. -func (o CacheToOutput) Gha() pulumix.GPtrOutput[CacheToGitHubActions, CacheToGitHubActionsOutput] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToGitHubActions { return v.Gha }) - return pulumix.GPtrOutput[CacheToGitHubActions, CacheToGitHubActionsOutput]{OutputState: value.OutputState} -} - -// The inline cache storage backend is the simplest implementation to get -// started with, but it does not handle multi-stage builds. Consider the -// `registry` cache backend instead. -func (o CacheToOutput) Inline() pulumix.GPtrOutput[CacheToInline, CacheToInlineOutput] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToInline { return v.Inline }) - return pulumix.GPtrOutput[CacheToInline, CacheToInlineOutput]{OutputState: value.OutputState} -} - -// A simple backend which caches imagines on your local filesystem. -func (o CacheToOutput) Local() pulumix.GPtrOutput[CacheToLocal, CacheToLocalOutput] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToLocal { return v.Local }) - return pulumix.GPtrOutput[CacheToLocal, CacheToLocalOutput]{OutputState: value.OutputState} -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=inline`) -func (o CacheToOutput) Raw() pulumix.Output[*string] { - return pulumix.Apply[CacheTo](o, func(v CacheTo) *string { return v.Raw }) -} - -// Push caches to remote registries. Incompatible with the `docker` build -// driver. -func (o CacheToOutput) Registry() pulumix.GPtrOutput[CacheToRegistry, CacheToRegistryOutput] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToRegistry { return v.Registry }) - return pulumix.GPtrOutput[CacheToRegistry, CacheToRegistryOutput]{OutputState: value.OutputState} -} - -// Push cache to AWS S3 or S3-compatible services such as MinIO. -func (o CacheToOutput) S3() pulumix.GPtrOutput[CacheToS3, CacheToS3Output] { - value := pulumix.Apply[CacheTo](o, func(v CacheTo) *CacheToS3 { return v.S3 }) - return pulumix.GPtrOutput[CacheToS3, CacheToS3Output]{OutputState: value.OutputState} -} - -type CacheToAzureBlob struct { - // Base URL of the storage account. - AccountUrl *string `pulumi:"accountUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // The name of the cache image. - Name string `pulumi:"name"` - // Blob storage account key. - SecretAccessKey *string `pulumi:"secretAccessKey"` -} - -// Defaults sets the appropriate defaults for CacheToAzureBlob -func (val *CacheToAzureBlob) Defaults() *CacheToAzureBlob { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - return &tmp -} - -type CacheToAzureBlobArgs struct { - // Base URL of the storage account. - AccountUrl pulumix.Input[*string] `pulumi:"accountUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumix.Input[*bool] `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode pulumix.Input[*CacheMode] `pulumi:"mode"` - // The name of the cache image. - Name pulumix.Input[string] `pulumi:"name"` - // Blob storage account key. - SecretAccessKey pulumix.Input[*string] `pulumi:"secretAccessKey"` -} - -// Defaults sets the appropriate defaults for CacheToAzureBlobArgs -func (val *CacheToAzureBlobArgs) Defaults() *CacheToAzureBlobArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumix.Ptr(false) - } - if tmp.Mode == nil { - tmp.Mode = pulumix.Ptr(CacheMode("min")) - } - return &tmp -} -func (CacheToAzureBlobArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToAzureBlob)(nil)).Elem() -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobOutput() CacheToAzureBlobOutput { - return i.ToCacheToAzureBlobOutputWithContext(context.Background()) -} - -func (i CacheToAzureBlobArgs) ToCacheToAzureBlobOutputWithContext(ctx context.Context) CacheToAzureBlobOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToAzureBlobOutput) -} - -func (i *CacheToAzureBlobArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToAzureBlobArgs] { - return pulumix.Val(i) -} - -type CacheToAzureBlobOutput struct{ *pulumi.OutputState } - -func (CacheToAzureBlobOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToAzureBlob)(nil)).Elem() -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobOutput() CacheToAzureBlobOutput { - return o -} - -func (o CacheToAzureBlobOutput) ToCacheToAzureBlobOutputWithContext(ctx context.Context) CacheToAzureBlobOutput { - return o -} - -func (o CacheToAzureBlobOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToAzureBlob] { - return pulumix.Output[CacheToAzureBlob]{ - OutputState: o.OutputState, - } -} - -// Base URL of the storage account. -func (o CacheToAzureBlobOutput) AccountUrl() pulumix.Output[*string] { - return pulumix.Apply[CacheToAzureBlob](o, func(v CacheToAzureBlob) *string { return v.AccountUrl }) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToAzureBlobOutput) IgnoreError() pulumix.Output[*bool] { - return pulumix.Apply[CacheToAzureBlob](o, func(v CacheToAzureBlob) *bool { return v.IgnoreError }) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToAzureBlobOutput) Mode() pulumix.Output[*CacheMode] { - return pulumix.Apply[CacheToAzureBlob](o, func(v CacheToAzureBlob) *CacheMode { return v.Mode }) -} - -// The name of the cache image. -func (o CacheToAzureBlobOutput) Name() pulumix.Output[string] { - return pulumix.Apply[CacheToAzureBlob](o, func(v CacheToAzureBlob) string { return v.Name }) -} - -// Blob storage account key. -func (o CacheToAzureBlobOutput) SecretAccessKey() pulumix.Output[*string] { - return pulumix.Apply[CacheToAzureBlob](o, func(v CacheToAzureBlob) *string { return v.SecretAccessKey }) -} - -type CacheToGitHubActions struct { - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope *string `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token *string `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url *string `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheToGitHubActions -func (val *CacheToGitHubActions) Defaults() *CacheToGitHubActions { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - scope_ := d.(string) - tmp.Scope = &scope_ - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - token_ := d.(string) - tmp.Token = &token_ - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - url_ := d.(string) - tmp.Url = &url_ - } - } - return &tmp -} - -type CacheToGitHubActionsArgs struct { - // Ignore errors caused by failed cache exports. - IgnoreError pulumix.Input[*bool] `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode pulumix.Input[*CacheMode] `pulumi:"mode"` - // The scope to use for cache keys. Defaults to `buildkit`. - // - // This should be set if building and caching multiple images in one - // workflow, otherwise caches will overwrite each other. - Scope pulumix.Input[*string] `pulumi:"scope"` - // The GitHub Actions token to use. This is not a personal access tokens - // and is typically generated automatically as part of each job. - // - // Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Token pulumix.Input[*string] `pulumi:"token"` - // The cache server URL to use for artifacts. - // - // Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - // `crazy-max/ghaction-github-runtime` is recommended to expose this - // environment variable to your jobs. - Url pulumix.Input[*string] `pulumi:"url"` -} - -// Defaults sets the appropriate defaults for CacheToGitHubActionsArgs -func (val *CacheToGitHubActionsArgs) Defaults() *CacheToGitHubActionsArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumix.Ptr(false) - } - if tmp.Mode == nil { - tmp.Mode = pulumix.Ptr(CacheMode("min")) - } - if tmp.Scope == nil { - if d := internal.GetEnvOrDefault("", nil, "buildkit"); d != nil { - tmp.Scope = pulumix.Ptr(d.(string)) - } - } - if tmp.Token == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_RUNTIME_TOKEN"); d != nil { - tmp.Token = pulumix.Ptr(d.(string)) - } - } - if tmp.Url == nil { - if d := internal.GetEnvOrDefault("", nil, "ACTIONS_CACHE_URL"); d != nil { - tmp.Url = pulumix.Ptr(d.(string)) - } - } - return &tmp -} -func (CacheToGitHubActionsArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToGitHubActions)(nil)).Elem() -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsOutput() CacheToGitHubActionsOutput { - return i.ToCacheToGitHubActionsOutputWithContext(context.Background()) -} - -func (i CacheToGitHubActionsArgs) ToCacheToGitHubActionsOutputWithContext(ctx context.Context) CacheToGitHubActionsOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToGitHubActionsOutput) -} - -func (i *CacheToGitHubActionsArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToGitHubActionsArgs] { - return pulumix.Val(i) -} - -type CacheToGitHubActionsOutput struct{ *pulumi.OutputState } - -func (CacheToGitHubActionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToGitHubActions)(nil)).Elem() -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsOutput() CacheToGitHubActionsOutput { - return o -} - -func (o CacheToGitHubActionsOutput) ToCacheToGitHubActionsOutputWithContext(ctx context.Context) CacheToGitHubActionsOutput { - return o -} - -func (o CacheToGitHubActionsOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToGitHubActions] { - return pulumix.Output[CacheToGitHubActions]{ - OutputState: o.OutputState, - } -} - -// Ignore errors caused by failed cache exports. -func (o CacheToGitHubActionsOutput) IgnoreError() pulumix.Output[*bool] { - return pulumix.Apply[CacheToGitHubActions](o, func(v CacheToGitHubActions) *bool { return v.IgnoreError }) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToGitHubActionsOutput) Mode() pulumix.Output[*CacheMode] { - return pulumix.Apply[CacheToGitHubActions](o, func(v CacheToGitHubActions) *CacheMode { return v.Mode }) -} - -// The scope to use for cache keys. Defaults to `buildkit`. -// -// This should be set if building and caching multiple images in one -// workflow, otherwise caches will overwrite each other. -func (o CacheToGitHubActionsOutput) Scope() pulumix.Output[*string] { - return pulumix.Apply[CacheToGitHubActions](o, func(v CacheToGitHubActions) *string { return v.Scope }) -} - -// The GitHub Actions token to use. This is not a personal access tokens -// and is typically generated automatically as part of each job. -// -// Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsOutput) Token() pulumix.Output[*string] { - return pulumix.Apply[CacheToGitHubActions](o, func(v CacheToGitHubActions) *string { return v.Token }) -} - -// The cache server URL to use for artifacts. -// -// Defaults to `$ACTIONS_CACHE_URL`, although a separate action like -// `crazy-max/ghaction-github-runtime` is recommended to expose this -// environment variable to your jobs. -func (o CacheToGitHubActionsOutput) Url() pulumix.Output[*string] { - return pulumix.Apply[CacheToGitHubActions](o, func(v CacheToGitHubActions) *string { return v.Url }) -} - -// Include an inline cache with the exported image. -type CacheToInline struct { -} - -// Include an inline cache with the exported image. -type CacheToInlineArgs struct { -} - -func (CacheToInlineArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToInline)(nil)).Elem() -} - -func (i CacheToInlineArgs) ToCacheToInlineOutput() CacheToInlineOutput { - return i.ToCacheToInlineOutputWithContext(context.Background()) -} - -func (i CacheToInlineArgs) ToCacheToInlineOutputWithContext(ctx context.Context) CacheToInlineOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToInlineOutput) -} - -func (i *CacheToInlineArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToInlineArgs] { - return pulumix.Val(i) -} - -// Include an inline cache with the exported image. -type CacheToInlineOutput struct{ *pulumi.OutputState } - -func (CacheToInlineOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToInline)(nil)).Elem() -} - -func (o CacheToInlineOutput) ToCacheToInlineOutput() CacheToInlineOutput { - return o -} - -func (o CacheToInlineOutput) ToCacheToInlineOutputWithContext(ctx context.Context) CacheToInlineOutput { - return o -} - -func (o CacheToInlineOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToInline] { - return pulumix.Output[CacheToInline]{ - OutputState: o.OutputState, - } -} - -type CacheToLocal struct { - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Path of the local directory to export the cache. - Dest string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` -} - -// Defaults sets the appropriate defaults for CacheToLocal -func (val *CacheToLocal) Defaults() *CacheToLocal { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - return &tmp -} - -type CacheToLocalArgs struct { - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // Path of the local directory to export the cache. - Dest pulumix.Input[string] `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumix.Input[*bool] `pulumi:"ignoreError"` - // The cache mode to use. Defaults to `min`. - Mode pulumix.Input[*CacheMode] `pulumi:"mode"` -} - -// Defaults sets the appropriate defaults for CacheToLocalArgs -func (val *CacheToLocalArgs) Defaults() *CacheToLocalArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumix.Ptr(false) - } - if tmp.Mode == nil { - tmp.Mode = pulumix.Ptr(CacheMode("min")) - } - return &tmp -} -func (CacheToLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToLocal)(nil)).Elem() -} - -func (i CacheToLocalArgs) ToCacheToLocalOutput() CacheToLocalOutput { - return i.ToCacheToLocalOutputWithContext(context.Background()) -} - -func (i CacheToLocalArgs) ToCacheToLocalOutputWithContext(ctx context.Context) CacheToLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToLocalOutput) -} - -func (i *CacheToLocalArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToLocalArgs] { - return pulumix.Val(i) -} - -type CacheToLocalOutput struct{ *pulumi.OutputState } - -func (CacheToLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToLocal)(nil)).Elem() -} - -func (o CacheToLocalOutput) ToCacheToLocalOutput() CacheToLocalOutput { - return o -} - -func (o CacheToLocalOutput) ToCacheToLocalOutputWithContext(ctx context.Context) CacheToLocalOutput { - return o -} - -func (o CacheToLocalOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToLocal] { - return pulumix.Output[CacheToLocal]{ - OutputState: o.OutputState, - } -} - -// The compression type to use. -func (o CacheToLocalOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o CacheToLocalOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) *int { return v.CompressionLevel }) -} - -// Path of the local directory to export the cache. -func (o CacheToLocalOutput) Dest() pulumix.Output[string] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) string { return v.Dest }) -} - -// Forcefully apply compression. -func (o CacheToLocalOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) *bool { return v.ForceCompression }) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToLocalOutput) IgnoreError() pulumix.Output[*bool] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) *bool { return v.IgnoreError }) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToLocalOutput) Mode() pulumix.Output[*CacheMode] { - return pulumix.Apply[CacheToLocal](o, func(v CacheToLocal) *CacheMode { return v.Mode }) -} - -type CacheToRegistry struct { - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // Export cache manifest as an OCI-compatible image manifest instead of a - // manifest list. Requires `ociMediaTypes` to also be `true`. - // - // Some registries like AWS ECR will not work with caching if this is - // `false`. - // - // Defaults to `false` to match Docker's default behavior. - ImageManifest *bool `pulumi:"imageManifest"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // Whether to use OCI media types in exported manifests. Defaults to - // `true`. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Fully qualified name of the cache image to import. - Ref string `pulumi:"ref"` -} - -// Defaults sets the appropriate defaults for CacheToRegistry -func (val *CacheToRegistry) Defaults() *CacheToRegistry { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.ImageManifest == nil { - imageManifest_ := false - tmp.ImageManifest = &imageManifest_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := true - tmp.OciMediaTypes = &ociMediaTypes_ - } - return &tmp -} - -type CacheToRegistryArgs struct { - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumix.Input[*bool] `pulumi:"ignoreError"` - // Export cache manifest as an OCI-compatible image manifest instead of a - // manifest list. Requires `ociMediaTypes` to also be `true`. - // - // Some registries like AWS ECR will not work with caching if this is - // `false`. - // - // Defaults to `false` to match Docker's default behavior. - ImageManifest pulumix.Input[*bool] `pulumi:"imageManifest"` - // The cache mode to use. Defaults to `min`. - Mode pulumix.Input[*CacheMode] `pulumi:"mode"` - // Whether to use OCI media types in exported manifests. Defaults to - // `true`. - OciMediaTypes pulumix.Input[*bool] `pulumi:"ociMediaTypes"` - // Fully qualified name of the cache image to import. - Ref pulumix.Input[string] `pulumi:"ref"` -} - -// Defaults sets the appropriate defaults for CacheToRegistryArgs -func (val *CacheToRegistryArgs) Defaults() *CacheToRegistryArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumix.Ptr(false) - } - if tmp.ImageManifest == nil { - tmp.ImageManifest = pulumix.Ptr(false) - } - if tmp.Mode == nil { - tmp.Mode = pulumix.Ptr(CacheMode("min")) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumix.Ptr(true) - } - return &tmp -} -func (CacheToRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToRegistry)(nil)).Elem() -} - -func (i CacheToRegistryArgs) ToCacheToRegistryOutput() CacheToRegistryOutput { - return i.ToCacheToRegistryOutputWithContext(context.Background()) -} - -func (i CacheToRegistryArgs) ToCacheToRegistryOutputWithContext(ctx context.Context) CacheToRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(CacheToRegistryOutput) -} - -func (i *CacheToRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[*CacheToRegistryArgs] { - return pulumix.Val(i) -} - -type CacheToRegistryOutput struct{ *pulumi.OutputState } - -func (CacheToRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToRegistry)(nil)).Elem() -} - -func (o CacheToRegistryOutput) ToCacheToRegistryOutput() CacheToRegistryOutput { - return o -} - -func (o CacheToRegistryOutput) ToCacheToRegistryOutputWithContext(ctx context.Context) CacheToRegistryOutput { - return o -} - -func (o CacheToRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[CacheToRegistry] { - return pulumix.Output[CacheToRegistry]{ - OutputState: o.OutputState, - } -} - -// The compression type to use. -func (o CacheToRegistryOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o CacheToRegistryOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *int { return v.CompressionLevel }) -} - -// Forcefully apply compression. -func (o CacheToRegistryOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *bool { return v.ForceCompression }) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToRegistryOutput) IgnoreError() pulumix.Output[*bool] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *bool { return v.IgnoreError }) -} - -// Export cache manifest as an OCI-compatible image manifest instead of a -// manifest list. Requires `ociMediaTypes` to also be `true`. -// -// Some registries like AWS ECR will not work with caching if this is -// `false`. -// -// Defaults to `false` to match Docker's default behavior. -func (o CacheToRegistryOutput) ImageManifest() pulumix.Output[*bool] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *bool { return v.ImageManifest }) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToRegistryOutput) Mode() pulumix.Output[*CacheMode] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *CacheMode { return v.Mode }) -} - -// Whether to use OCI media types in exported manifests. Defaults to -// `true`. -func (o CacheToRegistryOutput) OciMediaTypes() pulumix.Output[*bool] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) *bool { return v.OciMediaTypes }) -} - -// Fully qualified name of the cache image to import. -func (o CacheToRegistryOutput) Ref() pulumix.Output[string] { - return pulumix.Apply[CacheToRegistry](o, func(v CacheToRegistry) string { return v.Ref }) -} - -type CacheToS3 struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId *string `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix *string `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket string `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl *string `pulumi:"endpointUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError *bool `pulumi:"ignoreError"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix *string `pulumi:"manifestsPrefix"` - // The cache mode to use. Defaults to `min`. - Mode *CacheMode `pulumi:"mode"` - // Name of the cache image. - Name *string `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region string `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey *string `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken *string `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle *bool `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheToS3 -func (val *CacheToS3) Defaults() *CacheToS3 { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - accessKeyId_ := d.(string) - tmp.AccessKeyId = &accessKeyId_ - } - } - if tmp.IgnoreError == nil { - ignoreError_ := false - tmp.IgnoreError = &ignoreError_ - } - if tmp.Mode == nil { - mode_ := CacheMode("min") - tmp.Mode = &mode_ - } - if internal.IsZero(tmp.Region) { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = d.(string) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - secretAccessKey_ := d.(string) - tmp.SecretAccessKey = &secretAccessKey_ - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - sessionToken_ := d.(string) - tmp.SessionToken = &sessionToken_ - } - } - return &tmp -} - -type CacheToS3Args struct { - // Defaults to `$AWS_ACCESS_KEY_ID`. - AccessKeyId pulumix.Input[*string] `pulumi:"accessKeyId"` - // Prefix to prepend to blob filenames. - BlobsPrefix pulumix.Input[*string] `pulumi:"blobsPrefix"` - // Name of the S3 bucket. - Bucket pulumix.Input[string] `pulumi:"bucket"` - // Endpoint of the S3 bucket. - EndpointUrl pulumix.Input[*string] `pulumi:"endpointUrl"` - // Ignore errors caused by failed cache exports. - IgnoreError pulumix.Input[*bool] `pulumi:"ignoreError"` - // Prefix to prepend on manifest filenames. - ManifestsPrefix pulumix.Input[*string] `pulumi:"manifestsPrefix"` - // The cache mode to use. Defaults to `min`. - Mode pulumix.Input[*CacheMode] `pulumi:"mode"` - // Name of the cache image. - Name pulumix.Input[*string] `pulumi:"name"` - // The geographic location of the bucket. Defaults to `$AWS_REGION`. - Region pulumix.Input[string] `pulumi:"region"` - // Defaults to `$AWS_SECRET_ACCESS_KEY`. - SecretAccessKey pulumix.Input[*string] `pulumi:"secretAccessKey"` - // Defaults to `$AWS_SESSION_TOKEN`. - SessionToken pulumix.Input[*string] `pulumi:"sessionToken"` - // Uses `bucket` in the URL instead of hostname when `true`. - UsePathStyle pulumix.Input[*bool] `pulumi:"usePathStyle"` -} - -// Defaults sets the appropriate defaults for CacheToS3Args -func (val *CacheToS3Args) Defaults() *CacheToS3Args { - if val == nil { - return nil - } - tmp := *val - if tmp.AccessKeyId == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_ACCESS_KEY_ID"); d != nil { - tmp.AccessKeyId = pulumix.Ptr(d.(string)) - } - } - if tmp.IgnoreError == nil { - tmp.IgnoreError = pulumix.Ptr(false) - } - if tmp.Mode == nil { - tmp.Mode = pulumix.Ptr(CacheMode("min")) - } - if tmp.Region == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_REGION"); d != nil { - tmp.Region = pulumix.Val(d.(string)) - } - } - if tmp.SecretAccessKey == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SECRET_ACCESS_KEY"); d != nil { - tmp.SecretAccessKey = pulumix.Ptr(d.(string)) - } - } - if tmp.SessionToken == nil { - if d := internal.GetEnvOrDefault("", nil, "AWS_SESSION_TOKEN"); d != nil { - tmp.SessionToken = pulumix.Ptr(d.(string)) - } - } - return &tmp -} -func (CacheToS3Args) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToS3)(nil)).Elem() -} - -func (i CacheToS3Args) ToCacheToS3Output() CacheToS3Output { - return i.ToCacheToS3OutputWithContext(context.Background()) -} - -func (i CacheToS3Args) ToCacheToS3OutputWithContext(ctx context.Context) CacheToS3Output { - return pulumi.ToOutputWithContext(ctx, i).(CacheToS3Output) -} - -func (i *CacheToS3Args) ToOutput(ctx context.Context) pulumix.Output[*CacheToS3Args] { - return pulumix.Val(i) -} - -type CacheToS3Output struct{ *pulumi.OutputState } - -func (CacheToS3Output) ElementType() reflect.Type { - return reflect.TypeOf((*CacheToS3)(nil)).Elem() -} - -func (o CacheToS3Output) ToCacheToS3Output() CacheToS3Output { - return o -} - -func (o CacheToS3Output) ToCacheToS3OutputWithContext(ctx context.Context) CacheToS3Output { - return o -} - -func (o CacheToS3Output) ToOutput(ctx context.Context) pulumix.Output[CacheToS3] { - return pulumix.Output[CacheToS3]{ - OutputState: o.OutputState, - } -} - -// Defaults to `$AWS_ACCESS_KEY_ID`. -func (o CacheToS3Output) AccessKeyId() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.AccessKeyId }) -} - -// Prefix to prepend to blob filenames. -func (o CacheToS3Output) BlobsPrefix() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.BlobsPrefix }) -} - -// Name of the S3 bucket. -func (o CacheToS3Output) Bucket() pulumix.Output[string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) string { return v.Bucket }) -} - -// Endpoint of the S3 bucket. -func (o CacheToS3Output) EndpointUrl() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.EndpointUrl }) -} - -// Ignore errors caused by failed cache exports. -func (o CacheToS3Output) IgnoreError() pulumix.Output[*bool] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *bool { return v.IgnoreError }) -} - -// Prefix to prepend on manifest filenames. -func (o CacheToS3Output) ManifestsPrefix() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.ManifestsPrefix }) -} - -// The cache mode to use. Defaults to `min`. -func (o CacheToS3Output) Mode() pulumix.Output[*CacheMode] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *CacheMode { return v.Mode }) -} - -// Name of the cache image. -func (o CacheToS3Output) Name() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.Name }) -} - -// The geographic location of the bucket. Defaults to `$AWS_REGION`. -func (o CacheToS3Output) Region() pulumix.Output[string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) string { return v.Region }) -} - -// Defaults to `$AWS_SECRET_ACCESS_KEY`. -func (o CacheToS3Output) SecretAccessKey() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.SecretAccessKey }) -} - -// Defaults to `$AWS_SESSION_TOKEN`. -func (o CacheToS3Output) SessionToken() pulumix.Output[*string] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *string { return v.SessionToken }) -} - -// Uses `bucket` in the URL instead of hostname when `true`. -func (o CacheToS3Output) UsePathStyle() pulumix.Output[*bool] { - return pulumix.Apply[CacheToS3](o, func(v CacheToS3) *bool { return v.UsePathStyle }) -} - -type Context struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location string `pulumi:"location"` -} - -type ContextArgs struct { - // Resources to use for build context. - // - // The location can be: - // * A relative or absolute path to a local directory (`.`, `./app`, - // `/app`, etc.). - // * A remote URL of a Git repository, tarball, or plain text file - // (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - // etc.). - Location pulumix.Input[string] `pulumi:"location"` -} - -func (ContextArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Context)(nil)).Elem() -} - -func (i ContextArgs) ToContextOutput() ContextOutput { - return i.ToContextOutputWithContext(context.Background()) -} - -func (i ContextArgs) ToContextOutputWithContext(ctx context.Context) ContextOutput { - return pulumi.ToOutputWithContext(ctx, i).(ContextOutput) -} - -func (i *ContextArgs) ToOutput(ctx context.Context) pulumix.Output[*ContextArgs] { - return pulumix.Val(i) -} - -type ContextOutput struct{ *pulumi.OutputState } - -func (ContextOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Context)(nil)).Elem() -} - -func (o ContextOutput) ToContextOutput() ContextOutput { - return o -} - -func (o ContextOutput) ToContextOutputWithContext(ctx context.Context) ContextOutput { - return o -} - -func (o ContextOutput) ToOutput(ctx context.Context) pulumix.Output[Context] { - return pulumix.Output[Context]{ - OutputState: o.OutputState, - } -} - -// Resources to use for build context. -// -// The location can be: -// - A relative or absolute path to a local directory (`.`, `./app`, -// `/app`, etc.). -// - A remote URL of a Git repository, tarball, or plain text file -// (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, -// etc.). -func (o ContextOutput) Location() pulumix.Output[string] { - return pulumix.Apply[Context](o, func(v Context) string { return v.Location }) -} - -type Dockerfile struct { - // Raw Dockerfile contents. - // - // Conflicts with `location`. - // - // Equivalent to invoking Docker with `-f -`. - Inline *string `pulumi:"inline"` - // Location of the Dockerfile to use. - // - // Can be a relative or absolute path to a local file, or a remote URL. - // - // Defaults to `${context.location}/Dockerfile` if context is on-disk. - // - // Conflicts with `inline`. - Location *string `pulumi:"location"` -} - -type DockerfileArgs struct { - // Raw Dockerfile contents. - // - // Conflicts with `location`. - // - // Equivalent to invoking Docker with `-f -`. - Inline pulumix.Input[*string] `pulumi:"inline"` - // Location of the Dockerfile to use. - // - // Can be a relative or absolute path to a local file, or a remote URL. - // - // Defaults to `${context.location}/Dockerfile` if context is on-disk. - // - // Conflicts with `inline`. - Location pulumix.Input[*string] `pulumi:"location"` -} - -func (DockerfileArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Dockerfile)(nil)).Elem() -} - -func (i DockerfileArgs) ToDockerfileOutput() DockerfileOutput { - return i.ToDockerfileOutputWithContext(context.Background()) -} - -func (i DockerfileArgs) ToDockerfileOutputWithContext(ctx context.Context) DockerfileOutput { - return pulumi.ToOutputWithContext(ctx, i).(DockerfileOutput) -} - -func (i *DockerfileArgs) ToOutput(ctx context.Context) pulumix.Output[*DockerfileArgs] { - return pulumix.Val(i) -} - -type DockerfileOutput struct{ *pulumi.OutputState } - -func (DockerfileOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Dockerfile)(nil)).Elem() -} - -func (o DockerfileOutput) ToDockerfileOutput() DockerfileOutput { - return o -} - -func (o DockerfileOutput) ToDockerfileOutputWithContext(ctx context.Context) DockerfileOutput { - return o -} - -func (o DockerfileOutput) ToOutput(ctx context.Context) pulumix.Output[Dockerfile] { - return pulumix.Output[Dockerfile]{ - OutputState: o.OutputState, - } -} - -// Raw Dockerfile contents. -// -// Conflicts with `location`. -// -// Equivalent to invoking Docker with `-f -`. -func (o DockerfileOutput) Inline() pulumix.Output[*string] { - return pulumix.Apply[Dockerfile](o, func(v Dockerfile) *string { return v.Inline }) -} - -// Location of the Dockerfile to use. -// -// Can be a relative or absolute path to a local file, or a remote URL. -// -// Defaults to `${context.location}/Dockerfile` if context is on-disk. -// -// Conflicts with `inline`. -func (o DockerfileOutput) Location() pulumix.Output[*string] { - return pulumix.Apply[Dockerfile](o, func(v Dockerfile) *string { return v.Location }) -} - -type Export struct { - // A no-op export. Helpful for silencing the 'no exports' warning if you - // just want to populate caches. - Cacheonly *ExportCacheOnly `pulumi:"cacheonly"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled *bool `pulumi:"disabled"` - // Export as a Docker image layout. - Docker *ExportDocker `pulumi:"docker"` - // Outputs the build result into a container image format. - Image *ExportImage `pulumi:"image"` - // Export to a local directory as files and directories. - Local *ExportLocal `pulumi:"local"` - // Identical to the Docker exporter but uses OCI media types by default. - Oci *ExportOCI `pulumi:"oci"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=docker`) - Raw *string `pulumi:"raw"` - // Identical to the Image exporter, but pushes by default. - Registry *ExportRegistry `pulumi:"registry"` - // Export to a local directory as a tarball. - Tar *ExportTar `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for Export -func (val *Export) Defaults() *Export { - if val == nil { - return nil - } - tmp := *val - tmp.Docker = tmp.Docker.Defaults() - - tmp.Image = tmp.Image.Defaults() - - tmp.Oci = tmp.Oci.Defaults() - - tmp.Registry = tmp.Registry.Defaults() - - return &tmp -} - -type ExportArgs struct { - // A no-op export. Helpful for silencing the 'no exports' warning if you - // just want to populate caches. - Cacheonly pulumix.Input[*ExportCacheOnlyArgs] `pulumi:"cacheonly"` - // When `true` this entry will be excluded. Defaults to `false`. - Disabled pulumix.Input[*bool] `pulumi:"disabled"` - // Export as a Docker image layout. - Docker pulumix.Input[*ExportDockerArgs] `pulumi:"docker"` - // Outputs the build result into a container image format. - Image pulumix.Input[*ExportImageArgs] `pulumi:"image"` - // Export to a local directory as files and directories. - Local pulumix.Input[*ExportLocalArgs] `pulumi:"local"` - // Identical to the Docker exporter but uses OCI media types by default. - Oci pulumix.Input[*ExportOCIArgs] `pulumi:"oci"` - // A raw string as you would provide it to the Docker CLI (e.g., - // `type=docker`) - Raw pulumix.Input[*string] `pulumi:"raw"` - // Identical to the Image exporter, but pushes by default. - Registry pulumix.Input[*ExportRegistryArgs] `pulumi:"registry"` - // Export to a local directory as a tarball. - Tar pulumix.Input[*ExportTarArgs] `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportArgs -func (val *ExportArgs) Defaults() *ExportArgs { - if val == nil { - return nil - } - tmp := *val - - return &tmp -} -func (ExportArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Export)(nil)).Elem() -} - -func (i ExportArgs) ToExportOutput() ExportOutput { - return i.ToExportOutputWithContext(context.Background()) -} - -func (i ExportArgs) ToExportOutputWithContext(ctx context.Context) ExportOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOutput) -} - -func (i *ExportArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportArgs] { - return pulumix.Val(i) -} - -type ExportOutput struct{ *pulumi.OutputState } - -func (ExportOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Export)(nil)).Elem() -} - -func (o ExportOutput) ToExportOutput() ExportOutput { - return o -} - -func (o ExportOutput) ToExportOutputWithContext(ctx context.Context) ExportOutput { - return o -} - -func (o ExportOutput) ToOutput(ctx context.Context) pulumix.Output[Export] { - return pulumix.Output[Export]{ - OutputState: o.OutputState, - } -} - -// A no-op export. Helpful for silencing the 'no exports' warning if you -// just want to populate caches. -func (o ExportOutput) Cacheonly() pulumix.GPtrOutput[ExportCacheOnly, ExportCacheOnlyOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportCacheOnly { return v.Cacheonly }) - return pulumix.GPtrOutput[ExportCacheOnly, ExportCacheOnlyOutput]{OutputState: value.OutputState} -} - -// When `true` this entry will be excluded. Defaults to `false`. -func (o ExportOutput) Disabled() pulumix.Output[*bool] { - return pulumix.Apply[Export](o, func(v Export) *bool { return v.Disabled }) -} - -// Export as a Docker image layout. -func (o ExportOutput) Docker() pulumix.GPtrOutput[ExportDocker, ExportDockerOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportDocker { return v.Docker }) - return pulumix.GPtrOutput[ExportDocker, ExportDockerOutput]{OutputState: value.OutputState} -} - -// Outputs the build result into a container image format. -func (o ExportOutput) Image() pulumix.GPtrOutput[ExportImage, ExportImageOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportImage { return v.Image }) - return pulumix.GPtrOutput[ExportImage, ExportImageOutput]{OutputState: value.OutputState} -} - -// Export to a local directory as files and directories. -func (o ExportOutput) Local() pulumix.GPtrOutput[ExportLocal, ExportLocalOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportLocal { return v.Local }) - return pulumix.GPtrOutput[ExportLocal, ExportLocalOutput]{OutputState: value.OutputState} -} - -// Identical to the Docker exporter but uses OCI media types by default. -func (o ExportOutput) Oci() pulumix.GPtrOutput[ExportOCI, ExportOCIOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportOCI { return v.Oci }) - return pulumix.GPtrOutput[ExportOCI, ExportOCIOutput]{OutputState: value.OutputState} -} - -// A raw string as you would provide it to the Docker CLI (e.g., -// `type=docker`) -func (o ExportOutput) Raw() pulumix.Output[*string] { - return pulumix.Apply[Export](o, func(v Export) *string { return v.Raw }) -} - -// Identical to the Image exporter, but pushes by default. -func (o ExportOutput) Registry() pulumix.GPtrOutput[ExportRegistry, ExportRegistryOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportRegistry { return v.Registry }) - return pulumix.GPtrOutput[ExportRegistry, ExportRegistryOutput]{OutputState: value.OutputState} -} - -// Export to a local directory as a tarball. -func (o ExportOutput) Tar() pulumix.GPtrOutput[ExportTar, ExportTarOutput] { - value := pulumix.Apply[Export](o, func(v Export) *ExportTar { return v.Tar }) - return pulumix.GPtrOutput[ExportTar, ExportTarOutput]{OutputState: value.OutputState} -} - -type ExportCacheOnly struct { -} - -type ExportCacheOnlyArgs struct { -} - -func (ExportCacheOnlyArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportCacheOnly)(nil)).Elem() -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyOutput() ExportCacheOnlyOutput { - return i.ToExportCacheOnlyOutputWithContext(context.Background()) -} - -func (i ExportCacheOnlyArgs) ToExportCacheOnlyOutputWithContext(ctx context.Context) ExportCacheOnlyOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportCacheOnlyOutput) -} - -func (i *ExportCacheOnlyArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportCacheOnlyArgs] { - return pulumix.Val(i) -} - -type ExportCacheOnlyOutput struct{ *pulumi.OutputState } - -func (ExportCacheOnlyOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportCacheOnly)(nil)).Elem() -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyOutput() ExportCacheOnlyOutput { - return o -} - -func (o ExportCacheOnlyOutput) ToExportCacheOnlyOutputWithContext(ctx context.Context) ExportCacheOnlyOutput { - return o -} - -func (o ExportCacheOnlyOutput) ToOutput(ctx context.Context) pulumix.Output[ExportCacheOnly] { - return pulumix.Output[ExportCacheOnly]{ - OutputState: o.OutputState, - } -} - -type ExportDocker struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // The local export path. - Dest *string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar *bool `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportDocker -func (val *ExportDocker) Defaults() *ExportDocker { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Tar == nil { - tar_ := true - tmp.Tar = &tar_ - } - return &tmp -} - -type ExportDockerArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumix.Input[map[string]string] `pulumi:"annotations"` - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // The local export path. - Dest pulumix.Input[*string] `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumix.Input[[]string] `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumix.Input[*bool] `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar pulumix.Input[*bool] `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportDockerArgs -func (val *ExportDockerArgs) Defaults() *ExportDockerArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumix.Ptr(false) - } - if tmp.Tar == nil { - tmp.Tar = pulumix.Ptr(true) - } - return &tmp -} -func (ExportDockerArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportDocker)(nil)).Elem() -} - -func (i ExportDockerArgs) ToExportDockerOutput() ExportDockerOutput { - return i.ToExportDockerOutputWithContext(context.Background()) -} - -func (i ExportDockerArgs) ToExportDockerOutputWithContext(ctx context.Context) ExportDockerOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportDockerOutput) -} - -func (i *ExportDockerArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportDockerArgs] { - return pulumix.Val(i) -} - -type ExportDockerOutput struct{ *pulumi.OutputState } - -func (ExportDockerOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportDocker)(nil)).Elem() -} - -func (o ExportDockerOutput) ToExportDockerOutput() ExportDockerOutput { - return o -} - -func (o ExportDockerOutput) ToExportDockerOutputWithContext(ctx context.Context) ExportDockerOutput { - return o -} - -func (o ExportDockerOutput) ToOutput(ctx context.Context) pulumix.Output[ExportDocker] { - return pulumix.Output[ExportDocker]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportDockerOutput) Annotations() pulumix.MapOutput[string] { - value := pulumix.Apply[ExportDocker](o, func(v ExportDocker) map[string]string { return v.Annotations }) - return pulumix.MapOutput[string]{OutputState: value.OutputState} -} - -// The compression type to use. -func (o ExportDockerOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o ExportDockerOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *int { return v.CompressionLevel }) -} - -// The local export path. -func (o ExportDockerOutput) Dest() pulumix.Output[*string] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *string { return v.Dest }) -} - -// Forcefully apply compression. -func (o ExportDockerOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *bool { return v.ForceCompression }) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportDockerOutput) Names() pulumix.ArrayOutput[string] { - value := pulumix.Apply[ExportDocker](o, func(v ExportDocker) []string { return v.Names }) - return pulumix.ArrayOutput[string]{OutputState: value.OutputState} -} - -// Use OCI media types in exporter manifests. -func (o ExportDockerOutput) OciMediaTypes() pulumix.Output[*bool] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *bool { return v.OciMediaTypes }) -} - -// Bundle the output into a tarball layout. -func (o ExportDockerOutput) Tar() pulumix.Output[*bool] { - return pulumix.Apply[ExportDocker](o, func(v ExportDocker) *bool { return v.Tar }) -} - -type ExportImage struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix *string `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure *bool `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical *bool `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `false`. - Push *bool `pulumi:"push"` - // Push image without name. - PushByDigest *bool `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store *bool `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack *bool `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportImage -func (val *ExportImage) Defaults() *ExportImage { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Store == nil { - store_ := true - tmp.Store = &store_ - } - return &tmp -} - -type ExportImageArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumix.Input[map[string]string] `pulumi:"annotations"` - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix pulumix.Input[*string] `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure pulumix.Input[*bool] `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical pulumix.Input[*bool] `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumix.Input[[]string] `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumix.Input[*bool] `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `false`. - Push pulumix.Input[*bool] `pulumi:"push"` - // Push image without name. - PushByDigest pulumix.Input[*bool] `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store pulumix.Input[*bool] `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack pulumix.Input[*bool] `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportImageArgs -func (val *ExportImageArgs) Defaults() *ExportImageArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumix.Ptr(false) - } - if tmp.Store == nil { - tmp.Store = pulumix.Ptr(true) - } - return &tmp -} -func (ExportImageArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportImage)(nil)).Elem() -} - -func (i ExportImageArgs) ToExportImageOutput() ExportImageOutput { - return i.ToExportImageOutputWithContext(context.Background()) -} - -func (i ExportImageArgs) ToExportImageOutputWithContext(ctx context.Context) ExportImageOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportImageOutput) -} - -func (i *ExportImageArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportImageArgs] { - return pulumix.Val(i) -} - -type ExportImageOutput struct{ *pulumi.OutputState } - -func (ExportImageOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportImage)(nil)).Elem() -} - -func (o ExportImageOutput) ToExportImageOutput() ExportImageOutput { - return o -} - -func (o ExportImageOutput) ToExportImageOutputWithContext(ctx context.Context) ExportImageOutput { - return o -} - -func (o ExportImageOutput) ToOutput(ctx context.Context) pulumix.Output[ExportImage] { - return pulumix.Output[ExportImage]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportImageOutput) Annotations() pulumix.MapOutput[string] { - value := pulumix.Apply[ExportImage](o, func(v ExportImage) map[string]string { return v.Annotations }) - return pulumix.MapOutput[string]{OutputState: value.OutputState} -} - -// The compression type to use. -func (o ExportImageOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o ExportImageOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *int { return v.CompressionLevel }) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportImageOutput) DanglingNamePrefix() pulumix.Output[*string] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *string { return v.DanglingNamePrefix }) -} - -// Forcefully apply compression. -func (o ExportImageOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.ForceCompression }) -} - -// Allow pushing to an insecure registry. -func (o ExportImageOutput) Insecure() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.Insecure }) -} - -// Add additional canonical name (`name@`). -func (o ExportImageOutput) NameCanonical() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.NameCanonical }) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportImageOutput) Names() pulumix.ArrayOutput[string] { - value := pulumix.Apply[ExportImage](o, func(v ExportImage) []string { return v.Names }) - return pulumix.ArrayOutput[string]{OutputState: value.OutputState} -} - -// Use OCI media types in exporter manifests. -func (o ExportImageOutput) OciMediaTypes() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.OciMediaTypes }) -} - -// Push after creating the image. Defaults to `false`. -func (o ExportImageOutput) Push() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.Push }) -} - -// Push image without name. -func (o ExportImageOutput) PushByDigest() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.PushByDigest }) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportImageOutput) Store() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.Store }) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportImageOutput) Unpack() pulumix.Output[*bool] { - return pulumix.Apply[ExportImage](o, func(v ExportImage) *bool { return v.Unpack }) -} - -type ExportLocal struct { - // Output path. - Dest string `pulumi:"dest"` -} - -type ExportLocalArgs struct { - // Output path. - Dest pulumix.Input[string] `pulumi:"dest"` -} - -func (ExportLocalArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportLocal)(nil)).Elem() -} - -func (i ExportLocalArgs) ToExportLocalOutput() ExportLocalOutput { - return i.ToExportLocalOutputWithContext(context.Background()) -} - -func (i ExportLocalArgs) ToExportLocalOutputWithContext(ctx context.Context) ExportLocalOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportLocalOutput) -} - -func (i *ExportLocalArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportLocalArgs] { - return pulumix.Val(i) -} - -type ExportLocalOutput struct{ *pulumi.OutputState } - -func (ExportLocalOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportLocal)(nil)).Elem() -} - -func (o ExportLocalOutput) ToExportLocalOutput() ExportLocalOutput { - return o -} - -func (o ExportLocalOutput) ToExportLocalOutputWithContext(ctx context.Context) ExportLocalOutput { - return o -} - -func (o ExportLocalOutput) ToOutput(ctx context.Context) pulumix.Output[ExportLocal] { - return pulumix.Output[ExportLocal]{ - OutputState: o.OutputState, - } -} - -// Output path. -func (o ExportLocalOutput) Dest() pulumix.Output[string] { - return pulumix.Apply[ExportLocal](o, func(v ExportLocal) string { return v.Dest }) -} - -type ExportOCI struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // The local export path. - Dest *string `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar *bool `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportOCI -func (val *ExportOCI) Defaults() *ExportOCI { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := true - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Tar == nil { - tar_ := true - tmp.Tar = &tar_ - } - return &tmp -} - -type ExportOCIArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumix.Input[map[string]string] `pulumi:"annotations"` - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // The local export path. - Dest pulumix.Input[*string] `pulumi:"dest"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumix.Input[[]string] `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumix.Input[*bool] `pulumi:"ociMediaTypes"` - // Bundle the output into a tarball layout. - Tar pulumix.Input[*bool] `pulumi:"tar"` -} - -// Defaults sets the appropriate defaults for ExportOCIArgs -func (val *ExportOCIArgs) Defaults() *ExportOCIArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumix.Ptr(true) - } - if tmp.Tar == nil { - tmp.Tar = pulumix.Ptr(true) - } - return &tmp -} -func (ExportOCIArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportOCI)(nil)).Elem() -} - -func (i ExportOCIArgs) ToExportOCIOutput() ExportOCIOutput { - return i.ToExportOCIOutputWithContext(context.Background()) -} - -func (i ExportOCIArgs) ToExportOCIOutputWithContext(ctx context.Context) ExportOCIOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportOCIOutput) -} - -func (i *ExportOCIArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportOCIArgs] { - return pulumix.Val(i) -} - -type ExportOCIOutput struct{ *pulumi.OutputState } - -func (ExportOCIOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportOCI)(nil)).Elem() -} - -func (o ExportOCIOutput) ToExportOCIOutput() ExportOCIOutput { - return o -} - -func (o ExportOCIOutput) ToExportOCIOutputWithContext(ctx context.Context) ExportOCIOutput { - return o -} - -func (o ExportOCIOutput) ToOutput(ctx context.Context) pulumix.Output[ExportOCI] { - return pulumix.Output[ExportOCI]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportOCIOutput) Annotations() pulumix.MapOutput[string] { - value := pulumix.Apply[ExportOCI](o, func(v ExportOCI) map[string]string { return v.Annotations }) - return pulumix.MapOutput[string]{OutputState: value.OutputState} -} - -// The compression type to use. -func (o ExportOCIOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o ExportOCIOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *int { return v.CompressionLevel }) -} - -// The local export path. -func (o ExportOCIOutput) Dest() pulumix.Output[*string] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *string { return v.Dest }) -} - -// Forcefully apply compression. -func (o ExportOCIOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *bool { return v.ForceCompression }) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportOCIOutput) Names() pulumix.ArrayOutput[string] { - value := pulumix.Apply[ExportOCI](o, func(v ExportOCI) []string { return v.Names }) - return pulumix.ArrayOutput[string]{OutputState: value.OutputState} -} - -// Use OCI media types in exporter manifests. -func (o ExportOCIOutput) OciMediaTypes() pulumix.Output[*bool] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *bool { return v.OciMediaTypes }) -} - -// Bundle the output into a tarball layout. -func (o ExportOCIOutput) Tar() pulumix.Output[*bool] { - return pulumix.Apply[ExportOCI](o, func(v ExportOCI) *bool { return v.Tar }) -} - -type ExportRegistry struct { - // Attach an arbitrary key/value annotation to the image. - Annotations map[string]string `pulumi:"annotations"` - // The compression type to use. - Compression *CompressionType `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel *int `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix *string `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression *bool `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure *bool `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical *bool `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names []string `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes *bool `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `true`. - Push *bool `pulumi:"push"` - // Push image without name. - PushByDigest *bool `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store *bool `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack *bool `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportRegistry -func (val *ExportRegistry) Defaults() *ExportRegistry { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - compression_ := CompressionType("gzip") - tmp.Compression = &compression_ - } - if tmp.CompressionLevel == nil { - compressionLevel_ := 0 - tmp.CompressionLevel = &compressionLevel_ - } - if tmp.ForceCompression == nil { - forceCompression_ := false - tmp.ForceCompression = &forceCompression_ - } - if tmp.OciMediaTypes == nil { - ociMediaTypes_ := false - tmp.OciMediaTypes = &ociMediaTypes_ - } - if tmp.Push == nil { - push_ := true - tmp.Push = &push_ - } - if tmp.Store == nil { - store_ := true - tmp.Store = &store_ - } - return &tmp -} - -type ExportRegistryArgs struct { - // Attach an arbitrary key/value annotation to the image. - Annotations pulumix.Input[map[string]string] `pulumi:"annotations"` - // The compression type to use. - Compression pulumix.Input[*CompressionType] `pulumi:"compression"` - // Compression level from 0 to 22. - CompressionLevel pulumix.Input[*int] `pulumi:"compressionLevel"` - // Name image with `prefix@`, used for anonymous images. - DanglingNamePrefix pulumix.Input[*string] `pulumi:"danglingNamePrefix"` - // Forcefully apply compression. - ForceCompression pulumix.Input[*bool] `pulumi:"forceCompression"` - // Allow pushing to an insecure registry. - Insecure pulumix.Input[*bool] `pulumi:"insecure"` - // Add additional canonical name (`name@`). - NameCanonical pulumix.Input[*bool] `pulumi:"nameCanonical"` - // Specify images names to export. This is overridden if tags are already specified. - Names pulumix.Input[[]string] `pulumi:"names"` - // Use OCI media types in exporter manifests. - OciMediaTypes pulumix.Input[*bool] `pulumi:"ociMediaTypes"` - // Push after creating the image. Defaults to `true`. - Push pulumix.Input[*bool] `pulumi:"push"` - // Push image without name. - PushByDigest pulumix.Input[*bool] `pulumi:"pushByDigest"` - // Store resulting images to the worker's image store and ensure all of - // its blobs are in the content store. - // - // Defaults to `true`. - // - // Ignored if the worker doesn't have image store (when using OCI workers, - // for example). - Store pulumix.Input[*bool] `pulumi:"store"` - // Unpack image after creation (for use with containerd). Defaults to - // `false`. - Unpack pulumix.Input[*bool] `pulumi:"unpack"` -} - -// Defaults sets the appropriate defaults for ExportRegistryArgs -func (val *ExportRegistryArgs) Defaults() *ExportRegistryArgs { - if val == nil { - return nil - } - tmp := *val - if tmp.Compression == nil { - tmp.Compression = pulumix.Ptr(CompressionType("gzip")) - } - if tmp.CompressionLevel == nil { - tmp.CompressionLevel = pulumix.Ptr(0) - } - if tmp.ForceCompression == nil { - tmp.ForceCompression = pulumix.Ptr(false) - } - if tmp.OciMediaTypes == nil { - tmp.OciMediaTypes = pulumix.Ptr(false) - } - if tmp.Push == nil { - tmp.Push = pulumix.Ptr(true) - } - if tmp.Store == nil { - tmp.Store = pulumix.Ptr(true) - } - return &tmp -} -func (ExportRegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportRegistry)(nil)).Elem() -} - -func (i ExportRegistryArgs) ToExportRegistryOutput() ExportRegistryOutput { - return i.ToExportRegistryOutputWithContext(context.Background()) -} - -func (i ExportRegistryArgs) ToExportRegistryOutputWithContext(ctx context.Context) ExportRegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportRegistryOutput) -} - -func (i *ExportRegistryArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportRegistryArgs] { - return pulumix.Val(i) -} - -type ExportRegistryOutput struct{ *pulumi.OutputState } - -func (ExportRegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportRegistry)(nil)).Elem() -} - -func (o ExportRegistryOutput) ToExportRegistryOutput() ExportRegistryOutput { - return o -} - -func (o ExportRegistryOutput) ToExportRegistryOutputWithContext(ctx context.Context) ExportRegistryOutput { - return o -} - -func (o ExportRegistryOutput) ToOutput(ctx context.Context) pulumix.Output[ExportRegistry] { - return pulumix.Output[ExportRegistry]{ - OutputState: o.OutputState, - } -} - -// Attach an arbitrary key/value annotation to the image. -func (o ExportRegistryOutput) Annotations() pulumix.MapOutput[string] { - value := pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) map[string]string { return v.Annotations }) - return pulumix.MapOutput[string]{OutputState: value.OutputState} -} - -// The compression type to use. -func (o ExportRegistryOutput) Compression() pulumix.Output[*CompressionType] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *CompressionType { return v.Compression }) -} - -// Compression level from 0 to 22. -func (o ExportRegistryOutput) CompressionLevel() pulumix.Output[*int] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *int { return v.CompressionLevel }) -} - -// Name image with `prefix@`, used for anonymous images. -func (o ExportRegistryOutput) DanglingNamePrefix() pulumix.Output[*string] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *string { return v.DanglingNamePrefix }) -} - -// Forcefully apply compression. -func (o ExportRegistryOutput) ForceCompression() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.ForceCompression }) -} - -// Allow pushing to an insecure registry. -func (o ExportRegistryOutput) Insecure() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.Insecure }) -} - -// Add additional canonical name (`name@`). -func (o ExportRegistryOutput) NameCanonical() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.NameCanonical }) -} - -// Specify images names to export. This is overridden if tags are already specified. -func (o ExportRegistryOutput) Names() pulumix.ArrayOutput[string] { - value := pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) []string { return v.Names }) - return pulumix.ArrayOutput[string]{OutputState: value.OutputState} -} - -// Use OCI media types in exporter manifests. -func (o ExportRegistryOutput) OciMediaTypes() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.OciMediaTypes }) -} - -// Push after creating the image. Defaults to `true`. -func (o ExportRegistryOutput) Push() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.Push }) -} - -// Push image without name. -func (o ExportRegistryOutput) PushByDigest() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.PushByDigest }) -} - -// Store resulting images to the worker's image store and ensure all of -// its blobs are in the content store. -// -// Defaults to `true`. -// -// Ignored if the worker doesn't have image store (when using OCI workers, -// for example). -func (o ExportRegistryOutput) Store() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.Store }) -} - -// Unpack image after creation (for use with containerd). Defaults to -// `false`. -func (o ExportRegistryOutput) Unpack() pulumix.Output[*bool] { - return pulumix.Apply[ExportRegistry](o, func(v ExportRegistry) *bool { return v.Unpack }) -} - -type ExportTar struct { - // Output path. - Dest string `pulumi:"dest"` -} - -type ExportTarArgs struct { - // Output path. - Dest pulumix.Input[string] `pulumi:"dest"` -} - -func (ExportTarArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ExportTar)(nil)).Elem() -} - -func (i ExportTarArgs) ToExportTarOutput() ExportTarOutput { - return i.ToExportTarOutputWithContext(context.Background()) -} - -func (i ExportTarArgs) ToExportTarOutputWithContext(ctx context.Context) ExportTarOutput { - return pulumi.ToOutputWithContext(ctx, i).(ExportTarOutput) -} - -func (i *ExportTarArgs) ToOutput(ctx context.Context) pulumix.Output[*ExportTarArgs] { - return pulumix.Val(i) -} - -type ExportTarOutput struct{ *pulumi.OutputState } - -func (ExportTarOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ExportTar)(nil)).Elem() -} - -func (o ExportTarOutput) ToExportTarOutput() ExportTarOutput { - return o -} - -func (o ExportTarOutput) ToExportTarOutputWithContext(ctx context.Context) ExportTarOutput { - return o -} - -func (o ExportTarOutput) ToOutput(ctx context.Context) pulumix.Output[ExportTar] { - return pulumix.Output[ExportTar]{ - OutputState: o.OutputState, - } -} - -// Output path. -func (o ExportTarOutput) Dest() pulumix.Output[string] { - return pulumix.Apply[ExportTar](o, func(v ExportTar) string { return v.Dest }) -} - -type Registry struct { - // The registry's address (e.g. "docker.io"). - Address string `pulumi:"address"` - // Password or token for the registry. - Password *string `pulumi:"password"` - // Username for the registry. - Username *string `pulumi:"username"` -} - -type RegistryArgs struct { - // The registry's address (e.g. "docker.io"). - Address pulumix.Input[string] `pulumi:"address"` - // Password or token for the registry. - Password pulumix.Input[*string] `pulumi:"password"` - // Username for the registry. - Username pulumix.Input[*string] `pulumi:"username"` -} - -func (RegistryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*Registry)(nil)).Elem() -} - -func (i RegistryArgs) ToRegistryOutput() RegistryOutput { - return i.ToRegistryOutputWithContext(context.Background()) -} - -func (i RegistryArgs) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { - return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput) -} - -func (i *RegistryArgs) ToOutput(ctx context.Context) pulumix.Output[*RegistryArgs] { - return pulumix.Val(i) -} - -type RegistryOutput struct{ *pulumi.OutputState } - -func (RegistryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*Registry)(nil)).Elem() -} - -func (o RegistryOutput) ToRegistryOutput() RegistryOutput { - return o -} - -func (o RegistryOutput) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { - return o -} - -func (o RegistryOutput) ToOutput(ctx context.Context) pulumix.Output[Registry] { - return pulumix.Output[Registry]{ - OutputState: o.OutputState, - } -} - -// The registry's address (e.g. "docker.io"). -func (o RegistryOutput) Address() pulumix.Output[string] { - return pulumix.Apply[Registry](o, func(v Registry) string { return v.Address }) -} - -// Password or token for the registry. -func (o RegistryOutput) Password() pulumix.Output[*string] { - return pulumix.Apply[Registry](o, func(v Registry) *string { return v.Password }) -} - -// Username for the registry. -func (o RegistryOutput) Username() pulumix.Output[*string] { - return pulumix.Apply[Registry](o, func(v Registry) *string { return v.Username }) -} - -type SSH struct { - // Useful for distinguishing different servers that are part of the same - // build. - // - // A value of `default` is appropriate if only dealing with a single host. - Id string `pulumi:"id"` - // SSH agent socket or private keys to expose to the build under the given - // identifier. - // - // Defaults to `[$SSH_AUTH_SOCK]`. - // - // Note that your keys are **not** automatically added when using an - // agent. Run `ssh-add -l` locally to confirm which public keys are - // visible to the agent; these will be exposed to your build. - Paths []string `pulumi:"paths"` -} - -type SSHArgs struct { - // Useful for distinguishing different servers that are part of the same - // build. - // - // A value of `default` is appropriate if only dealing with a single host. - Id pulumix.Input[string] `pulumi:"id"` - // SSH agent socket or private keys to expose to the build under the given - // identifier. - // - // Defaults to `[$SSH_AUTH_SOCK]`. - // - // Note that your keys are **not** automatically added when using an - // agent. Run `ssh-add -l` locally to confirm which public keys are - // visible to the agent; these will be exposed to your build. - Paths pulumix.Input[[]string] `pulumi:"paths"` -} - -func (SSHArgs) ElementType() reflect.Type { - return reflect.TypeOf((*SSH)(nil)).Elem() -} - -func (i SSHArgs) ToSSHOutput() SSHOutput { - return i.ToSSHOutputWithContext(context.Background()) -} - -func (i SSHArgs) ToSSHOutputWithContext(ctx context.Context) SSHOutput { - return pulumi.ToOutputWithContext(ctx, i).(SSHOutput) -} - -func (i *SSHArgs) ToOutput(ctx context.Context) pulumix.Output[*SSHArgs] { - return pulumix.Val(i) -} - -type SSHOutput struct{ *pulumi.OutputState } - -func (SSHOutput) ElementType() reflect.Type { - return reflect.TypeOf((*SSH)(nil)).Elem() -} - -func (o SSHOutput) ToSSHOutput() SSHOutput { - return o -} - -func (o SSHOutput) ToSSHOutputWithContext(ctx context.Context) SSHOutput { - return o -} - -func (o SSHOutput) ToOutput(ctx context.Context) pulumix.Output[SSH] { - return pulumix.Output[SSH]{ - OutputState: o.OutputState, - } -} - -// Useful for distinguishing different servers that are part of the same -// build. -// -// A value of `default` is appropriate if only dealing with a single host. -func (o SSHOutput) Id() pulumix.Output[string] { - return pulumix.Apply[SSH](o, func(v SSH) string { return v.Id }) -} - -// SSH agent socket or private keys to expose to the build under the given -// identifier. -// -// Defaults to `[$SSH_AUTH_SOCK]`. -// -// Note that your keys are **not** automatically added when using an -// agent. Run `ssh-add -l` locally to confirm which public keys are -// visible to the agent; these will be exposed to your build. -func (o SSHOutput) Paths() pulumix.ArrayOutput[string] { - value := pulumix.Apply[SSH](o, func(v SSH) []string { return v.Paths }) - return pulumix.ArrayOutput[string]{OutputState: value.OutputState} -} - -func init() { - pulumi.RegisterOutputType(BuildContextOutput{}) - pulumi.RegisterOutputType(BuilderConfigOutput{}) - pulumi.RegisterOutputType(CacheFromOutput{}) - pulumi.RegisterOutputType(CacheFromAzureBlobOutput{}) - pulumi.RegisterOutputType(CacheFromGitHubActionsOutput{}) - pulumi.RegisterOutputType(CacheFromLocalOutput{}) - pulumi.RegisterOutputType(CacheFromRegistryOutput{}) - pulumi.RegisterOutputType(CacheFromS3Output{}) - pulumi.RegisterOutputType(CacheToOutput{}) - pulumi.RegisterOutputType(CacheToAzureBlobOutput{}) - pulumi.RegisterOutputType(CacheToGitHubActionsOutput{}) - pulumi.RegisterOutputType(CacheToInlineOutput{}) - pulumi.RegisterOutputType(CacheToLocalOutput{}) - pulumi.RegisterOutputType(CacheToRegistryOutput{}) - pulumi.RegisterOutputType(CacheToS3Output{}) - pulumi.RegisterOutputType(ContextOutput{}) - pulumi.RegisterOutputType(DockerfileOutput{}) - pulumi.RegisterOutputType(ExportOutput{}) - pulumi.RegisterOutputType(ExportCacheOnlyOutput{}) - pulumi.RegisterOutputType(ExportDockerOutput{}) - pulumi.RegisterOutputType(ExportImageOutput{}) - pulumi.RegisterOutputType(ExportLocalOutput{}) - pulumi.RegisterOutputType(ExportOCIOutput{}) - pulumi.RegisterOutputType(ExportRegistryOutput{}) - pulumi.RegisterOutputType(ExportTarOutput{}) - pulumi.RegisterOutputType(RegistryOutput{}) - pulumi.RegisterOutputType(SSHOutput{}) -} diff --git a/sdk/java/README.md b/sdk/java/README.md deleted file mode 100644 index a778720..0000000 --- a/sdk/java/README.md +++ /dev/null @@ -1 +0,0 @@ -A Pulumi provider for building modern Docker images with buildx and BuildKit. diff --git a/sdk/java/settings.gradle b/sdk/java/settings.gradle deleted file mode 100644 index 74155ae..0000000 --- a/sdk/java/settings.gradle +++ /dev/null @@ -1,14 +0,0 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -pluginManagement { - repositories { - maven { // The google mirror is less flaky than mavenCentral() - url("https://maven-central.storage-download.googleapis.com/maven2/") - } - gradlePluginPortal() - } -} - -rootProject.name = "com.pulumi.docker-build" -include("lib") diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java deleted file mode 100644 index 188bc35..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/Config.java +++ /dev/null @@ -1,26 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.TypeShape; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.inputs.Registry; -import java.lang.String; -import java.util.List; -import java.util.Optional; - -public final class Config { - - private static final com.pulumi.Config config = com.pulumi.Config.of("docker-build"); -/** - * The build daemon's address. - * - */ - public Optional host() { - return Codegen.stringProp("host").config(config).env("DOCKER_HOST").def("").get(); - } - public Optional> registries() { - return Codegen.objectProp("registries", TypeShape.>builder(List.class).addParameter(Registry.class).build()).config(config).get(); - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java deleted file mode 100644 index adb1cfd..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/Image.java +++ /dev/null @@ -1,1281 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Export; -import com.pulumi.core.annotations.ResourceType; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.ImageArgs; -import com.pulumi.dockerbuild.Utilities; -import com.pulumi.dockerbuild.enums.NetworkMode; -import com.pulumi.dockerbuild.enums.Platform; -import com.pulumi.dockerbuild.outputs.BuildContext; -import com.pulumi.dockerbuild.outputs.BuilderConfig; -import com.pulumi.dockerbuild.outputs.CacheFrom; -import com.pulumi.dockerbuild.outputs.CacheTo; -import com.pulumi.dockerbuild.outputs.Dockerfile; -import com.pulumi.dockerbuild.outputs.Registry; -import com.pulumi.dockerbuild.outputs.SSH; -import java.lang.Boolean; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import javax.annotation.Nullable; - -/** - * A Docker image built using buildx -- Docker's interface to the improved - * BuildKit backend. - * - * ## Stability - * - * **This resource is pre-1.0 and in public preview.** - * - * We will strive to keep APIs and behavior as stable as possible, but we - * cannot guarantee stability until version 1.0. - * - * ## Migrating Pulumi Docker v3 and v4 Image resources - * - * This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. - * Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - * - * ### Behavioral differences - * - * There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - * - * #### Previews - * - * Version `3.x` of the Pulumi Docker provider always builds images during preview operations. - * This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - * - * Version `4.x` changed build-on-preview behavior to be opt-in. - * By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. - * Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - * - * The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. - * This behavior can be changed by specifying `buildOnPreview`. - * - * #### Push behavior - * - * Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. - * They expose a `skipPush: true` option to disable pushing. - * - * This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - * - * To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). - * Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - * - * #### Secrets - * - * Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - * - * Version `4.x` of the Pulumi Docker provider does not support secrets. - * - * The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. - * Instead, they should be passed directly as values. - * (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) - * Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - * - * #### Caching - * - * Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. - * It builds targets individually and pushes them to separate images for caching. - * - * Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - * - * Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. - * This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - * - * The `Image` resource delegates all caching behavior to Docker. - * `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - * - * #### Outputs - * - * Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. - * In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - * - * Unlike earlier providers the `Image` resource can push multiple tags. - * As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. - * If multiple tags were pushed this uses one at random. - * - * If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - * - * #### Tag deletion and refreshes - * - * Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - * - * The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. - * If any are missing a subsequent `update` will push them. - * - * When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. - * Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). - * Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - * - * Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - * - * ### Example migration - * - * Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - * - * The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. - * After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. - * In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - * - * The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. - * It it is shown with parameters similar to the `v3` example for completeness. - * - * ## Example Usage - * - * ## Example Usage - * ### Push to AWS ECR with caching - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.aws.ecr.Repository;
- * import com.pulumi.aws.ecr.EcrFunctions;
- * import com.pulumi.aws.ecr.inputs.GetAuthorizationTokenArgs;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.inputs.RegistryArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var ecrRepository = new Repository("ecrRepository");
- * 
- *         final var authToken = EcrFunctions.getAuthorizationToken(GetAuthorizationTokenArgs.builder()
- *             .registryId(ecrRepository.registryId())
- *             .build());
- * 
- *         var myImage = new Image("myImage", ImageArgs.builder()        
- *             .cacheFrom(CacheFromArgs.builder()
- *                 .registry(CacheFromRegistryArgs.builder()
- *                     .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
- *                     .build())
- *                 .build())
- *             .cacheTo(CacheToArgs.builder()
- *                 .registry(CacheToRegistryArgs.builder()
- *                     .imageManifest(true)
- *                     .ociMediaTypes(true)
- *                     .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
- *                     .build())
- *                 .build())
- *             .context(BuildContextArgs.builder()
- *                 .location("./app")
- *                 .build())
- *             .push(true)
- *             .registries(RegistryArgs.builder()
- *                 .address(ecrRepository.repositoryUrl())
- *                 .password(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.password())))
- *                 .username(authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult).applyValue(authToken -> authToken.applyValue(getAuthorizationTokenResult -> getAuthorizationTokenResult.userName())))
- *                 .build())
- *             .tags(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:latest", repositoryUrl)))
- *             .build());
- * 
- *         ctx.export("ref", myImage.ref());
- *     }
- * }
- * }
- * 
- * ### Multi-platform image - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .platforms(            
- *                 "plan9/amd64",
- *                 "plan9/386")
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Registry export - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.inputs.RegistryArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .push(true)
- *             .registries(RegistryArgs.builder()
- *                 .address("docker.io")
- *                 .password(dockerHubPassword)
- *                 .username("pulumibot")
- *                 .build())
- *             .tags("docker.io/pulumi/pulumi:3.107.0")
- *             .build());
- * 
- *         ctx.export("ref", myImage.ref());
- *     }
- * }
- * }
- * 
- * ### Caching - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToLocalArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .cacheFrom(CacheFromArgs.builder()
- *                 .local(CacheFromLocalArgs.builder()
- *                     .src("tmp/cache")
- *                     .build())
- *                 .build())
- *             .cacheTo(CacheToArgs.builder()
- *                 .local(CacheToLocalArgs.builder()
- *                     .dest("tmp/cache")
- *                     .mode("max")
- *                     .build())
- *                 .build())
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Docker Build Cloud - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuilderConfigArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .builder(BuilderConfigArgs.builder()
- *                 .name("cloud-builder-name")
- *                 .build())
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .exec(true)
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Build arguments - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .buildArgs(Map.of("SET_ME_TO_TRUE", "true"))
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Build target - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .push(false)
- *             .target("build-me")
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Named contexts - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .named(Map.of("golang:latest", Map.of("location", "docker-image://golang{@literal @}sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984")))
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Remote context - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile")
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Inline Dockerfile - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.inputs.DockerfileArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .dockerfile(DockerfileArgs.builder()
- *                 .inline("""
- * FROM busybox
- * COPY hello.c ./
- *                 """)
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Remote context - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.inputs.DockerfileArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("https://github.com/docker-library/hello-world.git")
- *                 .build())
- *             .dockerfile(DockerfileArgs.builder()
- *                 .location("app/Dockerfile")
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * ### Local export - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.inputs.ExportArgs;
- * import com.pulumi.dockerbuild.inputs.ExportDockerArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var image = new Image("image", ImageArgs.builder()        
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .exports(ExportArgs.builder()
- *                 .docker(ExportDockerArgs.builder()
- *                     .tar(true)
- *                     .build())
- *                 .build())
- *             .push(false)
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * - */ -@ResourceType(type="docker-build:index:Image") -public class Image extends com.pulumi.resources.CustomResource { - /** - * Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - */ - @Export(name="addHosts", refs={List.class,String.class}, tree="[0,1]") - private Output> addHosts; - - /** - * @return Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - */ - public Output>> addHosts() { - return Codegen.optional(this.addHosts); - } - /** - * `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - */ - @Export(name="buildArgs", refs={Map.class,String.class}, tree="[0,1,1]") - private Output> buildArgs; - - /** - * @return `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - */ - public Output>> buildArgs() { - return Codegen.optional(this.buildArgs); - } - /** - * Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - */ - @Export(name="buildOnPreview", refs={Boolean.class}, tree="[0]") - private Output buildOnPreview; - - /** - * @return Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - */ - public Output> buildOnPreview() { - return Codegen.optional(this.buildOnPreview); - } - /** - * Builder configuration. - * - */ - @Export(name="builder", refs={BuilderConfig.class}, tree="[0]") - private Output builder; - - /** - * @return Builder configuration. - * - */ - public Output> builder_() { - return Codegen.optional(this.builder); - } - /** - * Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - */ - @Export(name="cacheFrom", refs={List.class,CacheFrom.class}, tree="[0,1]") - private Output> cacheFrom; - - /** - * @return Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - */ - public Output>> cacheFrom() { - return Codegen.optional(this.cacheFrom); - } - /** - * Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - */ - @Export(name="cacheTo", refs={List.class,CacheTo.class}, tree="[0,1]") - private Output> cacheTo; - - /** - * @return Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - */ - public Output>> cacheTo() { - return Codegen.optional(this.cacheTo); - } - /** - * Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - */ - @Export(name="context", refs={BuildContext.class}, tree="[0]") - private Output context; - - /** - * @return Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - */ - public Output> context() { - return Codegen.optional(this.context); - } - /** - * A preliminary hash of the image's build context. - * - * Pulumi uses this to determine if an image _may_ need to be re-built. - * - */ - @Export(name="contextHash", refs={String.class}, tree="[0]") - private Output contextHash; - - /** - * @return A preliminary hash of the image's build context. - * - * Pulumi uses this to determine if an image _may_ need to be re-built. - * - */ - public Output contextHash() { - return this.contextHash; - } - /** - * A SHA256 digest of the image if it was exported to a registry or - * elsewhere. - * - * Empty if the image was not exported. - * - * Registry images can be referenced precisely as `<tag>{@literal @}<digest>`. The - * `ref` output provides one such reference as a convenience. - * - */ - @Export(name="digest", refs={String.class}, tree="[0]") - private Output digest; - - /** - * @return A SHA256 digest of the image if it was exported to a registry or - * elsewhere. - * - * Empty if the image was not exported. - * - * Registry images can be referenced precisely as `<tag>{@literal @}<digest>`. The - * `ref` output provides one such reference as a convenience. - * - */ - public Output digest() { - return this.digest; - } - /** - * Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - */ - @Export(name="dockerfile", refs={Dockerfile.class}, tree="[0]") - private Output dockerfile; - - /** - * @return Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - */ - public Output> dockerfile() { - return Codegen.optional(this.dockerfile); - } - /** - * Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - */ - @Export(name="exec", refs={Boolean.class}, tree="[0]") - private Output exec; - - /** - * @return Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - */ - public Output> exec() { - return Codegen.optional(this.exec); - } - /** - * Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - */ - @Export(name="exports", refs={List.class,com.pulumi.dockerbuild.outputs.Export.class}, tree="[0,1]") - private Output> exports; - - /** - * @return Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - */ - public Output>> exports() { - return Codegen.optional(this.exports); - } - /** - * Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - */ - @Export(name="labels", refs={Map.class,String.class}, tree="[0,1,1]") - private Output> labels; - - /** - * @return Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - */ - public Output>> labels() { - return Codegen.optional(this.labels); - } - /** - * When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - */ - @Export(name="load", refs={Boolean.class}, tree="[0]") - private Output load; - - /** - * @return When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - */ - public Output> load() { - return Codegen.optional(this.load); - } - /** - * Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - */ - @Export(name="network", refs={NetworkMode.class}, tree="[0]") - private Output network; - - /** - * @return Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - */ - public Output> network() { - return Codegen.optional(this.network); - } - /** - * Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - */ - @Export(name="noCache", refs={Boolean.class}, tree="[0]") - private Output noCache; - - /** - * @return Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - */ - public Output> noCache() { - return Codegen.optional(this.noCache); - } - /** - * Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - */ - @Export(name="platforms", refs={List.class,Platform.class}, tree="[0,1]") - private Output> platforms; - - /** - * @return Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - */ - public Output>> platforms() { - return Codegen.optional(this.platforms); - } - /** - * Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - */ - @Export(name="pull", refs={Boolean.class}, tree="[0]") - private Output pull; - - /** - * @return Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - */ - public Output> pull() { - return Codegen.optional(this.pull); - } - /** - * When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - */ - @Export(name="push", refs={Boolean.class}, tree="[0]") - private Output push; - - /** - * @return When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - */ - public Output push() { - return this.push; - } - /** - * If the image was pushed to any registries then this will contain a - * single fully-qualified tag including the build's digest. - * - * If the image had tags but was not exported, this will take on a value - * of one of those tags. - * - * This will be empty if the image had no exports and no tags. - * - * This is only for convenience and may not be appropriate for situations - * where multiple tags or registries are involved. In those cases this - * output is not guaranteed to be stable. - * - * For more control over tags consumed by downstream resources you should - * use the `digest` output. - * - */ - @Export(name="ref", refs={String.class}, tree="[0]") - private Output ref; - - /** - * @return If the image was pushed to any registries then this will contain a - * single fully-qualified tag including the build's digest. - * - * If the image had tags but was not exported, this will take on a value - * of one of those tags. - * - * This will be empty if the image had no exports and no tags. - * - * This is only for convenience and may not be appropriate for situations - * where multiple tags or registries are involved. In those cases this - * output is not guaranteed to be stable. - * - * For more control over tags consumed by downstream resources you should - * use the `digest` output. - * - */ - public Output ref() { - return this.ref; - } - /** - * Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - */ - @Export(name="registries", refs={List.class,Registry.class}, tree="[0,1]") - private Output> registries; - - /** - * @return Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - */ - public Output>> registries() { - return Codegen.optional(this.registries); - } - /** - * A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - */ - @Export(name="secrets", refs={Map.class,String.class}, tree="[0,1,1]") - private Output> secrets; - - /** - * @return A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - */ - public Output>> secrets() { - return Codegen.optional(this.secrets); - } - /** - * SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - */ - @Export(name="ssh", refs={List.class,SSH.class}, tree="[0,1]") - private Output> ssh; - - /** - * @return SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - */ - public Output>> ssh() { - return Codegen.optional(this.ssh); - } - /** - * Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - */ - @Export(name="tags", refs={List.class,String.class}, tree="[0,1]") - private Output> tags; - - /** - * @return Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - */ - public Output>> tags() { - return Codegen.optional(this.tags); - } - /** - * Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - */ - @Export(name="target", refs={String.class}, tree="[0]") - private Output target; - - /** - * @return Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - */ - public Output> target() { - return Codegen.optional(this.target); - } - - /** - * - * @param name The _unique_ name of the resulting resource. - */ - public Image(String name) { - this(name, ImageArgs.Empty); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - */ - public Image(String name, ImageArgs args) { - this(name, args, null); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - * @param options A bag of options that control this resource's behavior. - */ - public Image(String name, ImageArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { - super("docker-build:index:Image", name, args == null ? ImageArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); - } - - private Image(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { - super("docker-build:index:Image", name, null, makeResourceOptions(options, id)); - } - - private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { - var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() - .version(Utilities.getVersion()) - .build(); - return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); - } - - /** - * Get an existing Host resource's state with the given name, ID, and optional extra - * properties used to qualify the lookup. - * - * @param name The _unique_ name of the resulting resource. - * @param id The _unique_ provider ID of the resource to lookup. - * @param options Optional settings to control the behavior of the CustomResource. - */ - public static Image get(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { - return new Image(name, id, options); - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java deleted file mode 100644 index eb594a0..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/ImageArgs.java +++ /dev/null @@ -1,1389 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.NetworkMode; -import com.pulumi.dockerbuild.enums.Platform; -import com.pulumi.dockerbuild.inputs.BuildContextArgs; -import com.pulumi.dockerbuild.inputs.BuilderConfigArgs; -import com.pulumi.dockerbuild.inputs.CacheFromArgs; -import com.pulumi.dockerbuild.inputs.CacheToArgs; -import com.pulumi.dockerbuild.inputs.DockerfileArgs; -import com.pulumi.dockerbuild.inputs.ExportArgs; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import com.pulumi.dockerbuild.inputs.SSHArgs; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ImageArgs extends com.pulumi.resources.ResourceArgs { - - public static final ImageArgs Empty = new ImageArgs(); - - /** - * Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - */ - @Import(name="addHosts") - private @Nullable Output> addHosts; - - /** - * @return Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - */ - public Optional>> addHosts() { - return Optional.ofNullable(this.addHosts); - } - - /** - * `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - */ - @Import(name="buildArgs") - private @Nullable Output> buildArgs; - - /** - * @return `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - */ - public Optional>> buildArgs() { - return Optional.ofNullable(this.buildArgs); - } - - /** - * Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - */ - @Import(name="buildOnPreview") - private @Nullable Output buildOnPreview; - - /** - * @return Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - */ - public Optional> buildOnPreview() { - return Optional.ofNullable(this.buildOnPreview); - } - - /** - * Builder configuration. - * - */ - @Import(name="builder") - private @Nullable Output builder; - - /** - * @return Builder configuration. - * - */ - public Optional> builder_() { - return Optional.ofNullable(this.builder); - } - - /** - * Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - */ - @Import(name="cacheFrom") - private @Nullable Output> cacheFrom; - - /** - * @return Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - */ - public Optional>> cacheFrom() { - return Optional.ofNullable(this.cacheFrom); - } - - /** - * Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - */ - @Import(name="cacheTo") - private @Nullable Output> cacheTo; - - /** - * @return Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - */ - public Optional>> cacheTo() { - return Optional.ofNullable(this.cacheTo); - } - - /** - * Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - */ - @Import(name="context") - private @Nullable Output context; - - /** - * @return Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - */ - public Optional> context() { - return Optional.ofNullable(this.context); - } - - /** - * Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - */ - @Import(name="dockerfile") - private @Nullable Output dockerfile; - - /** - * @return Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - */ - public Optional> dockerfile() { - return Optional.ofNullable(this.dockerfile); - } - - /** - * Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - */ - @Import(name="exec") - private @Nullable Output exec; - - /** - * @return Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - */ - public Optional> exec() { - return Optional.ofNullable(this.exec); - } - - /** - * Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - */ - @Import(name="exports") - private @Nullable Output> exports; - - /** - * @return Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - */ - public Optional>> exports() { - return Optional.ofNullable(this.exports); - } - - /** - * Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - */ - @Import(name="labels") - private @Nullable Output> labels; - - /** - * @return Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - */ - public Optional>> labels() { - return Optional.ofNullable(this.labels); - } - - /** - * When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - */ - @Import(name="load") - private @Nullable Output load; - - /** - * @return When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - */ - public Optional> load() { - return Optional.ofNullable(this.load); - } - - /** - * Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - */ - @Import(name="network") - private @Nullable Output network; - - /** - * @return Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - */ - public Optional> network() { - return Optional.ofNullable(this.network); - } - - /** - * Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - */ - @Import(name="noCache") - private @Nullable Output noCache; - - /** - * @return Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - */ - public Optional> noCache() { - return Optional.ofNullable(this.noCache); - } - - /** - * Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - */ - @Import(name="platforms") - private @Nullable Output> platforms; - - /** - * @return Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - */ - public Optional>> platforms() { - return Optional.ofNullable(this.platforms); - } - - /** - * Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - */ - @Import(name="pull") - private @Nullable Output pull; - - /** - * @return Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - */ - public Optional> pull() { - return Optional.ofNullable(this.pull); - } - - /** - * When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - */ - @Import(name="push", required=true) - private Output push; - - /** - * @return When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - */ - public Output push() { - return this.push; - } - - /** - * Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - */ - @Import(name="registries") - private @Nullable Output> registries; - - /** - * @return Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - */ - public Optional>> registries() { - return Optional.ofNullable(this.registries); - } - - /** - * A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - */ - @Import(name="secrets") - private @Nullable Output> secrets; - - /** - * @return A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - */ - public Optional>> secrets() { - return Optional.ofNullable(this.secrets); - } - - /** - * SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - */ - @Import(name="ssh") - private @Nullable Output> ssh; - - /** - * @return SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - */ - public Optional>> ssh() { - return Optional.ofNullable(this.ssh); - } - - /** - * Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - */ - @Import(name="tags") - private @Nullable Output> tags; - - /** - * @return Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - */ - public Optional>> tags() { - return Optional.ofNullable(this.tags); - } - - /** - * Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - */ - @Import(name="target") - private @Nullable Output target; - - /** - * @return Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - */ - public Optional> target() { - return Optional.ofNullable(this.target); - } - - private ImageArgs() {} - - private ImageArgs(ImageArgs $) { - this.addHosts = $.addHosts; - this.buildArgs = $.buildArgs; - this.buildOnPreview = $.buildOnPreview; - this.builder = $.builder; - this.cacheFrom = $.cacheFrom; - this.cacheTo = $.cacheTo; - this.context = $.context; - this.dockerfile = $.dockerfile; - this.exec = $.exec; - this.exports = $.exports; - this.labels = $.labels; - this.load = $.load; - this.network = $.network; - this.noCache = $.noCache; - this.platforms = $.platforms; - this.pull = $.pull; - this.push = $.push; - this.registries = $.registries; - this.secrets = $.secrets; - this.ssh = $.ssh; - this.tags = $.tags; - this.target = $.target; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ImageArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ImageArgs $; - - public Builder() { - $ = new ImageArgs(); - } - - public Builder(ImageArgs defaults) { - $ = new ImageArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param addHosts Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - * @return builder - * - */ - public Builder addHosts(@Nullable Output> addHosts) { - $.addHosts = addHosts; - return this; - } - - /** - * @param addHosts Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - * @return builder - * - */ - public Builder addHosts(List addHosts) { - return addHosts(Output.of(addHosts)); - } - - /** - * @param addHosts Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - * - * @return builder - * - */ - public Builder addHosts(String... addHosts) { - return addHosts(List.of(addHosts)); - } - - /** - * @param buildArgs `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - * @return builder - * - */ - public Builder buildArgs(@Nullable Output> buildArgs) { - $.buildArgs = buildArgs; - return this; - } - - /** - * @param buildArgs `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - * - * @return builder - * - */ - public Builder buildArgs(Map buildArgs) { - return buildArgs(Output.of(buildArgs)); - } - - /** - * @param buildOnPreview Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - * @return builder - * - */ - public Builder buildOnPreview(@Nullable Output buildOnPreview) { - $.buildOnPreview = buildOnPreview; - return this; - } - - /** - * @param buildOnPreview Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - * - * @return builder - * - */ - public Builder buildOnPreview(Boolean buildOnPreview) { - return buildOnPreview(Output.of(buildOnPreview)); - } - - /** - * @param builder Builder configuration. - * - * @return builder - * - */ - public Builder builder_(@Nullable Output builder) { - $.builder = builder; - return this; - } - - /** - * @param builder Builder configuration. - * - * @return builder - * - */ - public Builder builder_(BuilderConfigArgs builder) { - return builder_(Output.of(builder)); - } - - /** - * @param cacheFrom Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - * @return builder - * - */ - public Builder cacheFrom(@Nullable Output> cacheFrom) { - $.cacheFrom = cacheFrom; - return this; - } - - /** - * @param cacheFrom Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - * @return builder - * - */ - public Builder cacheFrom(List cacheFrom) { - return cacheFrom(Output.of(cacheFrom)); - } - - /** - * @param cacheFrom Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - * - * @return builder - * - */ - public Builder cacheFrom(CacheFromArgs... cacheFrom) { - return cacheFrom(List.of(cacheFrom)); - } - - /** - * @param cacheTo Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - * @return builder - * - */ - public Builder cacheTo(@Nullable Output> cacheTo) { - $.cacheTo = cacheTo; - return this; - } - - /** - * @param cacheTo Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - * @return builder - * - */ - public Builder cacheTo(List cacheTo) { - return cacheTo(Output.of(cacheTo)); - } - - /** - * @param cacheTo Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - * - * @return builder - * - */ - public Builder cacheTo(CacheToArgs... cacheTo) { - return cacheTo(List.of(cacheTo)); - } - - /** - * @param context Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - * @return builder - * - */ - public Builder context(@Nullable Output context) { - $.context = context; - return this; - } - - /** - * @param context Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - * - * @return builder - * - */ - public Builder context(BuildContextArgs context) { - return context(Output.of(context)); - } - - /** - * @param dockerfile Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - * @return builder - * - */ - public Builder dockerfile(@Nullable Output dockerfile) { - $.dockerfile = dockerfile; - return this; - } - - /** - * @param dockerfile Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - * - * @return builder - * - */ - public Builder dockerfile(DockerfileArgs dockerfile) { - return dockerfile(Output.of(dockerfile)); - } - - /** - * @param exec Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - * @return builder - * - */ - public Builder exec(@Nullable Output exec) { - $.exec = exec; - return this; - } - - /** - * @param exec Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - * - * @return builder - * - */ - public Builder exec(Boolean exec) { - return exec(Output.of(exec)); - } - - /** - * @param exports Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - * @return builder - * - */ - public Builder exports(@Nullable Output> exports) { - $.exports = exports; - return this; - } - - /** - * @param exports Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - * @return builder - * - */ - public Builder exports(List exports) { - return exports(Output.of(exports)); - } - - /** - * @param exports Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - * - * @return builder - * - */ - public Builder exports(ExportArgs... exports) { - return exports(List.of(exports)); - } - - /** - * @param labels Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - * @return builder - * - */ - public Builder labels(@Nullable Output> labels) { - $.labels = labels; - return this; - } - - /** - * @param labels Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - * - * @return builder - * - */ - public Builder labels(Map labels) { - return labels(Output.of(labels)); - } - - /** - * @param load When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - * @return builder - * - */ - public Builder load(@Nullable Output load) { - $.load = load; - return this; - } - - /** - * @param load When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - * - * @return builder - * - */ - public Builder load(Boolean load) { - return load(Output.of(load)); - } - - /** - * @param network Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - * @return builder - * - */ - public Builder network(@Nullable Output network) { - $.network = network; - return this; - } - - /** - * @param network Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - * - * @return builder - * - */ - public Builder network(NetworkMode network) { - return network(Output.of(network)); - } - - /** - * @param noCache Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - * @return builder - * - */ - public Builder noCache(@Nullable Output noCache) { - $.noCache = noCache; - return this; - } - - /** - * @param noCache Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - * - * @return builder - * - */ - public Builder noCache(Boolean noCache) { - return noCache(Output.of(noCache)); - } - - /** - * @param platforms Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - * @return builder - * - */ - public Builder platforms(@Nullable Output> platforms) { - $.platforms = platforms; - return this; - } - - /** - * @param platforms Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - * @return builder - * - */ - public Builder platforms(List platforms) { - return platforms(Output.of(platforms)); - } - - /** - * @param platforms Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - * - * @return builder - * - */ - public Builder platforms(Platform... platforms) { - return platforms(List.of(platforms)); - } - - /** - * @param pull Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - * @return builder - * - */ - public Builder pull(@Nullable Output pull) { - $.pull = pull; - return this; - } - - /** - * @param pull Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - * - * @return builder - * - */ - public Builder pull(Boolean pull) { - return pull(Output.of(pull)); - } - - /** - * @param push When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - * @return builder - * - */ - public Builder push(Output push) { - $.push = push; - return this; - } - - /** - * @param push When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - * - * @return builder - * - */ - public Builder push(Boolean push) { - return push(Output.of(push)); - } - - /** - * @param registries Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - * @return builder - * - */ - public Builder registries(@Nullable Output> registries) { - $.registries = registries; - return this; - } - - /** - * @param registries Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - * @return builder - * - */ - public Builder registries(List registries) { - return registries(Output.of(registries)); - } - - /** - * @param registries Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - * - * @return builder - * - */ - public Builder registries(RegistryArgs... registries) { - return registries(List.of(registries)); - } - - /** - * @param secrets A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - * @return builder - * - */ - public Builder secrets(@Nullable Output> secrets) { - $.secrets = secrets; - return this; - } - - /** - * @param secrets A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - * - * @return builder - * - */ - public Builder secrets(Map secrets) { - return secrets(Output.of(secrets)); - } - - /** - * @param ssh SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - * @return builder - * - */ - public Builder ssh(@Nullable Output> ssh) { - $.ssh = ssh; - return this; - } - - /** - * @param ssh SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - * @return builder - * - */ - public Builder ssh(List ssh) { - return ssh(Output.of(ssh)); - } - - /** - * @param ssh SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - * - * @return builder - * - */ - public Builder ssh(SSHArgs... ssh) { - return ssh(List.of(ssh)); - } - - /** - * @param tags Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - * @return builder - * - */ - public Builder tags(@Nullable Output> tags) { - $.tags = tags; - return this; - } - - /** - * @param tags Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - * @return builder - * - */ - public Builder tags(List tags) { - return tags(Output.of(tags)); - } - - /** - * @param tags Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - * - * @return builder - * - */ - public Builder tags(String... tags) { - return tags(List.of(tags)); - } - - /** - * @param target Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - * @return builder - * - */ - public Builder target(@Nullable Output target) { - $.target = target; - return this; - } - - /** - * @param target Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - * - * @return builder - * - */ - public Builder target(String target) { - return target(Output.of(target)); - } - - public ImageArgs build() { - $.buildOnPreview = Codegen.booleanProp("buildOnPreview").output().arg($.buildOnPreview).def(true).getNullable(); - $.network = Codegen.objectProp("network", NetworkMode.class).output().arg($.network).def(NetworkMode.Default_).getNullable(); - if ($.push == null) { - throw new MissingRequiredPropertyException("ImageArgs", "push"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java deleted file mode 100644 index ee897d5..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/Index.java +++ /dev/null @@ -1,255 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Export; -import com.pulumi.core.annotations.ResourceType; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.IndexArgs; -import com.pulumi.dockerbuild.Utilities; -import com.pulumi.dockerbuild.outputs.Registry; -import java.lang.Boolean; -import java.lang.String; -import java.util.List; -import java.util.Optional; -import javax.annotation.Nullable; - -/** - * A wrapper around `docker buildx imagetools create` to create an index - * (or manifest list) referencing one or more existing images. - * - * In most cases you do not need an `Index` to build a multi-platform - * image -- specifying multiple platforms on the `Image` will handle this - * for you automatically. - * - * However, as of April 2024, building multi-platform images _with - * caching_ will only export a cache for one platform at a time (see [this - * discussion](https://github.com/docker/buildx/discussions/1382) for more - * details). - * - * Therefore this resource can be helpful if you are building - * multi-platform images with caching: each platform can be built and - * cached separately, and an `Index` can join them all together. An - * example of this is shown below. - * - * This resource creates an OCI image index or a Docker manifest list - * depending on the media types of the source images. - * - * ## Example Usage - * ### Multi-platform registry caching - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.dockerbuild.Image;
- * import com.pulumi.dockerbuild.ImageArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromArgs;
- * import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToArgs;
- * import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs;
- * import com.pulumi.dockerbuild.inputs.BuildContextArgs;
- * import com.pulumi.dockerbuild.Index;
- * import com.pulumi.dockerbuild.IndexArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var amd64 = new Image("amd64", ImageArgs.builder()        
- *             .cacheFrom(CacheFromArgs.builder()
- *                 .registry(CacheFromRegistryArgs.builder()
- *                     .ref("docker.io/pulumi/pulumi:cache-amd64")
- *                     .build())
- *                 .build())
- *             .cacheTo(CacheToArgs.builder()
- *                 .registry(CacheToRegistryArgs.builder()
- *                     .mode("max")
- *                     .ref("docker.io/pulumi/pulumi:cache-amd64")
- *                     .build())
- *                 .build())
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .platforms("linux/amd64")
- *             .tags("docker.io/pulumi/pulumi:3.107.0-amd64")
- *             .build());
- * 
- *         var arm64 = new Image("arm64", ImageArgs.builder()        
- *             .cacheFrom(CacheFromArgs.builder()
- *                 .registry(CacheFromRegistryArgs.builder()
- *                     .ref("docker.io/pulumi/pulumi:cache-arm64")
- *                     .build())
- *                 .build())
- *             .cacheTo(CacheToArgs.builder()
- *                 .registry(CacheToRegistryArgs.builder()
- *                     .mode("max")
- *                     .ref("docker.io/pulumi/pulumi:cache-arm64")
- *                     .build())
- *                 .build())
- *             .context(BuildContextArgs.builder()
- *                 .location("app")
- *                 .build())
- *             .platforms("linux/arm64")
- *             .tags("docker.io/pulumi/pulumi:3.107.0-arm64")
- *             .build());
- * 
- *         var index = new Index("index", IndexArgs.builder()        
- *             .sources(            
- *                 amd64.ref(),
- *                 arm64.ref())
- *             .tag("docker.io/pulumi/pulumi:3.107.0")
- *             .build());
- * 
- *         ctx.export("ref", index.ref());
- *     }
- * }
- * }
- * 
- * - */ -@ResourceType(type="docker-build:index:Index") -public class Index extends com.pulumi.resources.CustomResource { - /** - * If true, push the index to the target registry. - * - * Defaults to `true`. - * - */ - @Export(name="push", refs={Boolean.class}, tree="[0]") - private Output push; - - /** - * @return If true, push the index to the target registry. - * - * Defaults to `true`. - * - */ - public Output> push() { - return Codegen.optional(this.push); - } - /** - * The pushed tag with digest. - * - * Identical to the tag if the index was not pushed. - * - */ - @Export(name="ref", refs={String.class}, tree="[0]") - private Output ref; - - /** - * @return The pushed tag with digest. - * - * Identical to the tag if the index was not pushed. - * - */ - public Output ref() { - return this.ref; - } - /** - * Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - */ - @Export(name="registry", refs={Registry.class}, tree="[0]") - private Output registry; - - /** - * @return Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - */ - public Output> registry() { - return Codegen.optional(this.registry); - } - /** - * Existing images to include in the index. - * - */ - @Export(name="sources", refs={List.class,String.class}, tree="[0,1]") - private Output> sources; - - /** - * @return Existing images to include in the index. - * - */ - public Output> sources() { - return this.sources; - } - /** - * The tag to apply to the index. - * - */ - @Export(name="tag", refs={String.class}, tree="[0]") - private Output tag; - - /** - * @return The tag to apply to the index. - * - */ - public Output tag() { - return this.tag; - } - - /** - * - * @param name The _unique_ name of the resulting resource. - */ - public Index(String name) { - this(name, IndexArgs.Empty); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - */ - public Index(String name, IndexArgs args) { - this(name, args, null); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - * @param options A bag of options that control this resource's behavior. - */ - public Index(String name, IndexArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { - super("docker-build:index:Index", name, args == null ? IndexArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); - } - - private Index(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { - super("docker-build:index:Index", name, null, makeResourceOptions(options, id)); - } - - private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { - var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() - .version(Utilities.getVersion()) - .build(); - return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); - } - - /** - * Get an existing Host resource's state with the given name, ID, and optional extra - * properties used to qualify the lookup. - * - * @param name The _unique_ name of the resulting resource. - * @param id The _unique_ provider ID of the resource to lookup. - * @param options Optional settings to control the behavior of the CustomResource. - */ - public static Index get(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) { - return new Index(name, id, options); - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java deleted file mode 100644 index ba66dab..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/IndexArgs.java +++ /dev/null @@ -1,232 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class IndexArgs extends com.pulumi.resources.ResourceArgs { - - public static final IndexArgs Empty = new IndexArgs(); - - /** - * If true, push the index to the target registry. - * - * Defaults to `true`. - * - */ - @Import(name="push") - private @Nullable Output push; - - /** - * @return If true, push the index to the target registry. - * - * Defaults to `true`. - * - */ - public Optional> push() { - return Optional.ofNullable(this.push); - } - - /** - * Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - */ - @Import(name="registry") - private @Nullable Output registry; - - /** - * @return Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - */ - public Optional> registry() { - return Optional.ofNullable(this.registry); - } - - /** - * Existing images to include in the index. - * - */ - @Import(name="sources", required=true) - private Output> sources; - - /** - * @return Existing images to include in the index. - * - */ - public Output> sources() { - return this.sources; - } - - /** - * The tag to apply to the index. - * - */ - @Import(name="tag", required=true) - private Output tag; - - /** - * @return The tag to apply to the index. - * - */ - public Output tag() { - return this.tag; - } - - private IndexArgs() {} - - private IndexArgs(IndexArgs $) { - this.push = $.push; - this.registry = $.registry; - this.sources = $.sources; - this.tag = $.tag; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(IndexArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private IndexArgs $; - - public Builder() { - $ = new IndexArgs(); - } - - public Builder(IndexArgs defaults) { - $ = new IndexArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param push If true, push the index to the target registry. - * - * Defaults to `true`. - * - * @return builder - * - */ - public Builder push(@Nullable Output push) { - $.push = push; - return this; - } - - /** - * @param push If true, push the index to the target registry. - * - * Defaults to `true`. - * - * @return builder - * - */ - public Builder push(Boolean push) { - return push(Output.of(push)); - } - - /** - * @param registry Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - * @return builder - * - */ - public Builder registry(@Nullable Output registry) { - $.registry = registry; - return this; - } - - /** - * @param registry Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - * - * @return builder - * - */ - public Builder registry(RegistryArgs registry) { - return registry(Output.of(registry)); - } - - /** - * @param sources Existing images to include in the index. - * - * @return builder - * - */ - public Builder sources(Output> sources) { - $.sources = sources; - return this; - } - - /** - * @param sources Existing images to include in the index. - * - * @return builder - * - */ - public Builder sources(List sources) { - return sources(Output.of(sources)); - } - - /** - * @param sources Existing images to include in the index. - * - * @return builder - * - */ - public Builder sources(String... sources) { - return sources(List.of(sources)); - } - - /** - * @param tag The tag to apply to the index. - * - * @return builder - * - */ - public Builder tag(Output tag) { - $.tag = tag; - return this; - } - - /** - * @param tag The tag to apply to the index. - * - * @return builder - * - */ - public Builder tag(String tag) { - return tag(Output.of(tag)); - } - - public IndexArgs build() { - $.push = Codegen.booleanProp("push").output().arg($.push).def(true).getNullable(); - if ($.sources == null) { - throw new MissingRequiredPropertyException("IndexArgs", "sources"); - } - if ($.tag == null) { - throw new MissingRequiredPropertyException("IndexArgs", "tag"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java deleted file mode 100644 index 0d8460b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/Provider.java +++ /dev/null @@ -1,65 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Export; -import com.pulumi.core.annotations.ResourceType; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.ProviderArgs; -import com.pulumi.dockerbuild.Utilities; -import java.lang.String; -import java.util.Optional; -import javax.annotation.Nullable; - -@ResourceType(type="pulumi:providers:docker-build") -public class Provider extends com.pulumi.resources.ProviderResource { - /** - * The build daemon's address. - * - */ - @Export(name="host", refs={String.class}, tree="[0]") - private Output host; - - /** - * @return The build daemon's address. - * - */ - public Output> host() { - return Codegen.optional(this.host); - } - - /** - * - * @param name The _unique_ name of the resulting resource. - */ - public Provider(String name) { - this(name, ProviderArgs.Empty); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - */ - public Provider(String name, @Nullable ProviderArgs args) { - this(name, args, null); - } - /** - * - * @param name The _unique_ name of the resulting resource. - * @param args The arguments to use to populate this resource's properties. - * @param options A bag of options that control this resource's behavior. - */ - public Provider(String name, @Nullable ProviderArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { - super("docker-build", name, args == null ? ProviderArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); - } - - private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { - var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() - .version(Utilities.getVersion()) - .build(); - return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java deleted file mode 100644 index d42d184..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/ProviderArgs.java +++ /dev/null @@ -1,108 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.inputs.RegistryArgs; -import java.lang.String; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ProviderArgs extends com.pulumi.resources.ResourceArgs { - - public static final ProviderArgs Empty = new ProviderArgs(); - - /** - * The build daemon's address. - * - */ - @Import(name="host") - private @Nullable Output host; - - /** - * @return The build daemon's address. - * - */ - public Optional> host() { - return Optional.ofNullable(this.host); - } - - @Import(name="registries", json=true) - private @Nullable Output> registries; - - public Optional>> registries() { - return Optional.ofNullable(this.registries); - } - - private ProviderArgs() {} - - private ProviderArgs(ProviderArgs $) { - this.host = $.host; - this.registries = $.registries; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ProviderArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ProviderArgs $; - - public Builder() { - $ = new ProviderArgs(); - } - - public Builder(ProviderArgs defaults) { - $ = new ProviderArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param host The build daemon's address. - * - * @return builder - * - */ - public Builder host(@Nullable Output host) { - $.host = host; - return this; - } - - /** - * @param host The build daemon's address. - * - * @return builder - * - */ - public Builder host(String host) { - return host(Output.of(host)); - } - - public Builder registries(@Nullable Output> registries) { - $.registries = registries; - return this; - } - - public Builder registries(List registries) { - return registries(Output.of(registries)); - } - - public Builder registries(RegistryArgs... registries) { - return registries(List.of(registries)); - } - - public ProviderArgs build() { - $.host = Codegen.stringProp("host").output().arg($.host).env("DOCKER_HOST").def("").getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java deleted file mode 100644 index c8c809b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/Utilities.java +++ /dev/null @@ -1,89 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild; - - - - - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.Optional; -import java.util.stream.Collectors; -import javax.annotation.Nullable; -import com.pulumi.core.internal.Environment; -import com.pulumi.deployment.InvokeOptions; - -public class Utilities { - - public static Optional getEnv(String... names) { - for (var n : names) { - var value = Environment.getEnvironmentVariable(n); - if (value.isValue()) { - return Optional.of(value.value()); - } - } - return Optional.empty(); - } - - public static Optional getEnvBoolean(String... names) { - for (var n : names) { - var value = Environment.getBooleanEnvironmentVariable(n); - if (value.isValue()) { - return Optional.of(value.value()); - } - } - return Optional.empty(); - } - - public static Optional getEnvInteger(String... names) { - for (var n : names) { - var value = Environment.getIntegerEnvironmentVariable(n); - if (value.isValue()) { - return Optional.of(value.value()); - } - } - return Optional.empty(); - } - - public static Optional getEnvDouble(String... names) { - for (var n : names) { - var value = Environment.getDoubleEnvironmentVariable(n); - if (value.isValue()) { - return Optional.of(value.value()); - } - } - return Optional.empty(); - } - - public static InvokeOptions withVersion(@Nullable InvokeOptions options) { - if (options != null && options.getVersion().isPresent()) { - return options; - } - return new InvokeOptions( - options == null ? null : options.getParent().orElse(null), - options == null ? null : options.getProvider().orElse(null), - getVersion() - ); - } - - private static final String version; - public static String getVersion() { - return version; - } - - static { - var resourceName = "com/pulumi/docker-build/version.txt"; - var versionFile = Utilities.class.getClassLoader().getResourceAsStream(resourceName); - if (versionFile == null) { - throw new IllegalStateException( - String.format("expected resource '%s' on Classpath, not found", resourceName) - ); - } - version = new BufferedReader(new InputStreamReader(versionFile)) - .lines() - .collect(Collectors.joining("\n")) - .trim(); - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java deleted file mode 100644 index fb705e9..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CacheMode.java +++ /dev/null @@ -1,41 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.enums; - -import com.pulumi.core.annotations.EnumType; -import java.lang.String; -import java.util.Objects; -import java.util.StringJoiner; - - @EnumType - public enum CacheMode { - /** - * Only layers that are exported into the resulting image are cached. - * - */ - Min("min"), - /** - * All layers are cached, even those of intermediate steps. - * - */ - Max("max"); - - private final String value; - - CacheMode(String value) { - this.value = Objects.requireNonNull(value); - } - - @EnumType.Converter - public String getValue() { - return this.value; - } - - @Override - public String toString() { - return new StringJoiner(", ", "CacheMode[", "]") - .add("value='" + this.value + "'") - .toString(); - } - } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java deleted file mode 100644 index bc5ab8e..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/CompressionType.java +++ /dev/null @@ -1,46 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.enums; - -import com.pulumi.core.annotations.EnumType; -import java.lang.String; -import java.util.Objects; -import java.util.StringJoiner; - - @EnumType - public enum CompressionType { - /** - * Use `gzip` for compression. - * - */ - Gzip("gzip"), - /** - * Use `estargz` for compression. - * - */ - Estargz("estargz"), - /** - * Use `zstd` for compression. - * - */ - Zstd("zstd"); - - private final String value; - - CompressionType(String value) { - this.value = Objects.requireNonNull(value); - } - - @EnumType.Converter - public String getValue() { - return this.value; - } - - @Override - public String toString() { - return new StringJoiner(", ", "CompressionType[", "]") - .add("value='" + this.value + "'") - .toString(); - } - } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java deleted file mode 100644 index 5b27243..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/NetworkMode.java +++ /dev/null @@ -1,46 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.enums; - -import com.pulumi.core.annotations.EnumType; -import java.lang.String; -import java.util.Objects; -import java.util.StringJoiner; - - @EnumType - public enum NetworkMode { - /** - * The default sandbox network mode. - * - */ - Default_("default"), - /** - * Host network mode. - * - */ - Host("host"), - /** - * Disable network access. - * - */ - None("none"); - - private final String value; - - NetworkMode(String value) { - this.value = Objects.requireNonNull(value); - } - - @EnumType.Converter - public String getValue() { - return this.value; - } - - @Override - public String toString() { - return new StringJoiner(", ", "NetworkMode[", "]") - .add("value='" + this.value + "'") - .toString(); - } - } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java deleted file mode 100644 index 6c14b3a..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/enums/Platform.java +++ /dev/null @@ -1,59 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.enums; - -import com.pulumi.core.annotations.EnumType; -import java.lang.String; -import java.util.Objects; -import java.util.StringJoiner; - - @EnumType - public enum Platform { - Darwin_386("darwin/386"), - Darwin_amd64("darwin/amd64"), - Darwin_arm("darwin/arm"), - Darwin_arm64("darwin/arm64"), - Dragonfly_amd64("dragonfly/amd64"), - Freebsd_386("freebsd/386"), - Freebsd_amd64("freebsd/amd64"), - Freebsd_arm("freebsd/arm"), - Linux_386("linux/386"), - Linux_amd64("linux/amd64"), - Linux_arm("linux/arm"), - Linux_arm64("linux/arm64"), - Linux_mips64("linux/mips64"), - Linux_mips64le("linux/mips64le"), - Linux_ppc64le("linux/ppc64le"), - Linux_riscv64("linux/riscv64"), - Linux_s390x("linux/s390x"), - Netbsd_386("netbsd/386"), - Netbsd_amd64("netbsd/amd64"), - Netbsd_arm("netbsd/arm"), - Openbsd_386("openbsd/386"), - Openbsd_amd64("openbsd/amd64"), - Openbsd_arm("openbsd/arm"), - Plan9_386("plan9/386"), - Plan9_amd64("plan9/amd64"), - Solaris_amd64("solaris/amd64"), - Windows_386("windows/386"), - Windows_amd64("windows/amd64"); - - private final String value; - - Platform(String value) { - this.value = Objects.requireNonNull(value); - } - - @EnumType.Converter - public String getValue() { - return this.value; - } - - @Override - public String toString() { - return new StringJoiner(", ", "Platform[", "]") - .add("value='" + this.value + "'") - .toString(); - } - } diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java deleted file mode 100644 index 8baa84d..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuildContextArgs.java +++ /dev/null @@ -1,174 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.dockerbuild.inputs.ContextArgs; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class BuildContextArgs extends com.pulumi.resources.ResourceArgs { - - public static final BuildContextArgs Empty = new BuildContextArgs(); - - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - @Import(name="location", required=true) - private Output location; - - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - public Output location() { - return this.location; - } - - /** - * Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - */ - @Import(name="named") - private @Nullable Output> named; - - /** - * @return Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - */ - public Optional>> named() { - return Optional.ofNullable(this.named); - } - - private BuildContextArgs() {} - - private BuildContextArgs(BuildContextArgs $) { - this.location = $.location; - this.named = $.named; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(BuildContextArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private BuildContextArgs $; - - public Builder() { - $ = new BuildContextArgs(); - } - - public Builder(BuildContextArgs defaults) { - $ = new BuildContextArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param location Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - * @return builder - * - */ - public Builder location(Output location) { - $.location = location; - return this; - } - - /** - * @param location Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - * @return builder - * - */ - public Builder location(String location) { - return location(Output.of(location)); - } - - /** - * @param named Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - * @return builder - * - */ - public Builder named(@Nullable Output> named) { - $.named = named; - return this; - } - - /** - * @param named Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - * @return builder - * - */ - public Builder named(Map named) { - return named(Output.of(named)); - } - - public BuildContextArgs build() { - if ($.location == null) { - throw new MissingRequiredPropertyException("BuildContextArgs", "location"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java deleted file mode 100644 index 986bbaf..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/BuilderConfigArgs.java +++ /dev/null @@ -1,103 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class BuilderConfigArgs extends com.pulumi.resources.ResourceArgs { - - public static final BuilderConfigArgs Empty = new BuilderConfigArgs(); - - /** - * Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - */ - @Import(name="name") - private @Nullable Output name; - - /** - * @return Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - */ - public Optional> name() { - return Optional.ofNullable(this.name); - } - - private BuilderConfigArgs() {} - - private BuilderConfigArgs(BuilderConfigArgs $) { - this.name = $.name; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(BuilderConfigArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private BuilderConfigArgs $; - - public Builder() { - $ = new BuilderConfigArgs(); - } - - public Builder(BuilderConfigArgs defaults) { - $ = new BuilderConfigArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param name Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - * @return builder - * - */ - public Builder name(@Nullable Output name) { - $.name = name; - return this; - } - - /** - * @param name Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - public BuilderConfigArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java deleted file mode 100644 index a05f9cf..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromArgs.java +++ /dev/null @@ -1,331 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.dockerbuild.inputs.CacheFromAzureBlobArgs; -import com.pulumi.dockerbuild.inputs.CacheFromGitHubActionsArgs; -import com.pulumi.dockerbuild.inputs.CacheFromLocalArgs; -import com.pulumi.dockerbuild.inputs.CacheFromRegistryArgs; -import com.pulumi.dockerbuild.inputs.CacheFromS3Args; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheFromArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromArgs Empty = new CacheFromArgs(); - - /** - * Upload build caches to Azure's blob storage service. - * - */ - @Import(name="azblob") - private @Nullable Output azblob; - - /** - * @return Upload build caches to Azure's blob storage service. - * - */ - public Optional> azblob() { - return Optional.ofNullable(this.azblob); - } - - /** - * When `true` this entry will be excluded. Defaults to `false`. - * - */ - @Import(name="disabled") - private @Nullable Output disabled; - - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional> disabled() { - return Optional.ofNullable(this.disabled); - } - - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - @Import(name="gha") - private @Nullable Output gha; - - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - public Optional> gha() { - return Optional.ofNullable(this.gha); - } - - /** - * A simple backend which caches images on your local filesystem. - * - */ - @Import(name="local") - private @Nullable Output local; - - /** - * @return A simple backend which caches images on your local filesystem. - * - */ - public Optional> local() { - return Optional.ofNullable(this.local); - } - - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - */ - @Import(name="raw") - private @Nullable Output raw; - - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - */ - public Optional> raw() { - return Optional.ofNullable(this.raw); - } - - /** - * Upload build caches to remote registries. - * - */ - @Import(name="registry") - private @Nullable Output registry; - - /** - * @return Upload build caches to remote registries. - * - */ - public Optional> registry() { - return Optional.ofNullable(this.registry); - } - - /** - * Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - */ - @Import(name="s3") - private @Nullable Output s3; - - /** - * @return Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - */ - public Optional> s3() { - return Optional.ofNullable(this.s3); - } - - private CacheFromArgs() {} - - private CacheFromArgs(CacheFromArgs $) { - this.azblob = $.azblob; - this.disabled = $.disabled; - this.gha = $.gha; - this.local = $.local; - this.raw = $.raw; - this.registry = $.registry; - this.s3 = $.s3; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromArgs $; - - public Builder() { - $ = new CacheFromArgs(); - } - - public Builder(CacheFromArgs defaults) { - $ = new CacheFromArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param azblob Upload build caches to Azure's blob storage service. - * - * @return builder - * - */ - public Builder azblob(@Nullable Output azblob) { - $.azblob = azblob; - return this; - } - - /** - * @param azblob Upload build caches to Azure's blob storage service. - * - * @return builder - * - */ - public Builder azblob(CacheFromAzureBlobArgs azblob) { - return azblob(Output.of(azblob)); - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(@Nullable Output disabled) { - $.disabled = disabled; - return this; - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(Boolean disabled) { - return disabled(Output.of(disabled)); - } - - /** - * @param gha Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - * @return builder - * - */ - public Builder gha(@Nullable Output gha) { - $.gha = gha; - return this; - } - - /** - * @param gha Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - * @return builder - * - */ - public Builder gha(CacheFromGitHubActionsArgs gha) { - return gha(Output.of(gha)); - } - - /** - * @param local A simple backend which caches images on your local filesystem. - * - * @return builder - * - */ - public Builder local(@Nullable Output local) { - $.local = local; - return this; - } - - /** - * @param local A simple backend which caches images on your local filesystem. - * - * @return builder - * - */ - public Builder local(CacheFromLocalArgs local) { - return local(Output.of(local)); - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - * @return builder - * - */ - public Builder raw(@Nullable Output raw) { - $.raw = raw; - return this; - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - * @return builder - * - */ - public Builder raw(String raw) { - return raw(Output.of(raw)); - } - - /** - * @param registry Upload build caches to remote registries. - * - * @return builder - * - */ - public Builder registry(@Nullable Output registry) { - $.registry = registry; - return this; - } - - /** - * @param registry Upload build caches to remote registries. - * - * @return builder - * - */ - public Builder registry(CacheFromRegistryArgs registry) { - return registry(Output.of(registry)); - } - - /** - * @param s3 Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - * @return builder - * - */ - public Builder s3(@Nullable Output s3) { - $.s3 = s3; - return this; - } - - /** - * @param s3 Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - * @return builder - * - */ - public Builder s3(CacheFromS3Args s3) { - return s3(Output.of(s3)); - } - - public CacheFromArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java deleted file mode 100644 index 5c3fca8..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromAzureBlobArgs.java +++ /dev/null @@ -1,161 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheFromAzureBlobArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromAzureBlobArgs Empty = new CacheFromAzureBlobArgs(); - - /** - * Base URL of the storage account. - * - */ - @Import(name="accountUrl") - private @Nullable Output accountUrl; - - /** - * @return Base URL of the storage account. - * - */ - public Optional> accountUrl() { - return Optional.ofNullable(this.accountUrl); - } - - /** - * The name of the cache image. - * - */ - @Import(name="name", required=true) - private Output name; - - /** - * @return The name of the cache image. - * - */ - public Output name() { - return this.name; - } - - /** - * Blob storage account key. - * - */ - @Import(name="secretAccessKey") - private @Nullable Output secretAccessKey; - - /** - * @return Blob storage account key. - * - */ - public Optional> secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - private CacheFromAzureBlobArgs() {} - - private CacheFromAzureBlobArgs(CacheFromAzureBlobArgs $) { - this.accountUrl = $.accountUrl; - this.name = $.name; - this.secretAccessKey = $.secretAccessKey; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromAzureBlobArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromAzureBlobArgs $; - - public Builder() { - $ = new CacheFromAzureBlobArgs(); - } - - public Builder(CacheFromAzureBlobArgs defaults) { - $ = new CacheFromAzureBlobArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param accountUrl Base URL of the storage account. - * - * @return builder - * - */ - public Builder accountUrl(@Nullable Output accountUrl) { - $.accountUrl = accountUrl; - return this; - } - - /** - * @param accountUrl Base URL of the storage account. - * - * @return builder - * - */ - public Builder accountUrl(String accountUrl) { - return accountUrl(Output.of(accountUrl)); - } - - /** - * @param name The name of the cache image. - * - * @return builder - * - */ - public Builder name(Output name) { - $.name = name; - return this; - } - - /** - * @param name The name of the cache image. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - /** - * @param secretAccessKey Blob storage account key. - * - * @return builder - * - */ - public Builder secretAccessKey(@Nullable Output secretAccessKey) { - $.secretAccessKey = secretAccessKey; - return this; - } - - /** - * @param secretAccessKey Blob storage account key. - * - * @return builder - * - */ - public Builder secretAccessKey(String secretAccessKey) { - return secretAccessKey(Output.of(secretAccessKey)); - } - - public CacheFromAzureBlobArgs build() { - if ($.name == null) { - throw new MissingRequiredPropertyException("CacheFromAzureBlobArgs", "name"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java deleted file mode 100644 index e92991a..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromGitHubActionsArgs.java +++ /dev/null @@ -1,209 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheFromGitHubActionsArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromGitHubActionsArgs Empty = new CacheFromGitHubActionsArgs(); - - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - @Import(name="scope") - private @Nullable Output scope; - - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - public Optional> scope() { - return Optional.ofNullable(this.scope); - } - - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - @Import(name="token") - private @Nullable Output token; - - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional> token() { - return Optional.ofNullable(this.token); - } - - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - @Import(name="url") - private @Nullable Output url; - - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional> url() { - return Optional.ofNullable(this.url); - } - - private CacheFromGitHubActionsArgs() {} - - private CacheFromGitHubActionsArgs(CacheFromGitHubActionsArgs $) { - this.scope = $.scope; - this.token = $.token; - this.url = $.url; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromGitHubActionsArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromGitHubActionsArgs $; - - public Builder() { - $ = new CacheFromGitHubActionsArgs(); - } - - public Builder(CacheFromGitHubActionsArgs defaults) { - $ = new CacheFromGitHubActionsArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param scope The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - * @return builder - * - */ - public Builder scope(@Nullable Output scope) { - $.scope = scope; - return this; - } - - /** - * @param scope The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - * @return builder - * - */ - public Builder scope(String scope) { - return scope(Output.of(scope)); - } - - /** - * @param token The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder token(@Nullable Output token) { - $.token = token; - return this; - } - - /** - * @param token The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder token(String token) { - return token(Output.of(token)); - } - - /** - * @param url The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder url(@Nullable Output url) { - $.url = url; - return this; - } - - /** - * @param url The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder url(String url) { - return url(Output.of(url)); - } - - public CacheFromGitHubActionsArgs build() { - $.scope = Codegen.stringProp("scope").output().arg($.scope).env("buildkit").def("").getNullable(); - $.token = Codegen.stringProp("token").secret().arg($.token).env("ACTIONS_RUNTIME_TOKEN").def("").getNullable(); - $.url = Codegen.stringProp("url").output().arg($.url).env("ACTIONS_CACHE_URL").def("").getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java deleted file mode 100644 index ce2a89a..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromLocalArgs.java +++ /dev/null @@ -1,124 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheFromLocalArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromLocalArgs Empty = new CacheFromLocalArgs(); - - /** - * Digest of manifest to import. - * - */ - @Import(name="digest") - private @Nullable Output digest; - - /** - * @return Digest of manifest to import. - * - */ - public Optional> digest() { - return Optional.ofNullable(this.digest); - } - - /** - * Path of the local directory where cache gets imported from. - * - */ - @Import(name="src", required=true) - private Output src; - - /** - * @return Path of the local directory where cache gets imported from. - * - */ - public Output src() { - return this.src; - } - - private CacheFromLocalArgs() {} - - private CacheFromLocalArgs(CacheFromLocalArgs $) { - this.digest = $.digest; - this.src = $.src; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromLocalArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromLocalArgs $; - - public Builder() { - $ = new CacheFromLocalArgs(); - } - - public Builder(CacheFromLocalArgs defaults) { - $ = new CacheFromLocalArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param digest Digest of manifest to import. - * - * @return builder - * - */ - public Builder digest(@Nullable Output digest) { - $.digest = digest; - return this; - } - - /** - * @param digest Digest of manifest to import. - * - * @return builder - * - */ - public Builder digest(String digest) { - return digest(Output.of(digest)); - } - - /** - * @param src Path of the local directory where cache gets imported from. - * - * @return builder - * - */ - public Builder src(Output src) { - $.src = src; - return this; - } - - /** - * @param src Path of the local directory where cache gets imported from. - * - * @return builder - * - */ - public Builder src(String src) { - return src(Output.of(src)); - } - - public CacheFromLocalArgs build() { - if ($.src == null) { - throw new MissingRequiredPropertyException("CacheFromLocalArgs", "src"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java deleted file mode 100644 index 901419c..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromRegistryArgs.java +++ /dev/null @@ -1,85 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - - -public final class CacheFromRegistryArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromRegistryArgs Empty = new CacheFromRegistryArgs(); - - /** - * Fully qualified name of the cache image to import. - * - */ - @Import(name="ref", required=true) - private Output ref; - - /** - * @return Fully qualified name of the cache image to import. - * - */ - public Output ref() { - return this.ref; - } - - private CacheFromRegistryArgs() {} - - private CacheFromRegistryArgs(CacheFromRegistryArgs $) { - this.ref = $.ref; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromRegistryArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromRegistryArgs $; - - public Builder() { - $ = new CacheFromRegistryArgs(); - } - - public Builder(CacheFromRegistryArgs defaults) { - $ = new CacheFromRegistryArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param ref Fully qualified name of the cache image to import. - * - * @return builder - * - */ - public Builder ref(Output ref) { - $.ref = ref; - return this; - } - - /** - * @param ref Fully qualified name of the cache image to import. - * - * @return builder - * - */ - public Builder ref(String ref) { - return ref(Output.of(ref)); - } - - public CacheFromRegistryArgs build() { - if ($.ref == null) { - throw new MissingRequiredPropertyException("CacheFromRegistryArgs", "ref"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java deleted file mode 100644 index 1fafcda..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheFromS3Args.java +++ /dev/null @@ -1,426 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheFromS3Args extends com.pulumi.resources.ResourceArgs { - - public static final CacheFromS3Args Empty = new CacheFromS3Args(); - - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - @Import(name="accessKeyId") - private @Nullable Output accessKeyId; - - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - public Optional> accessKeyId() { - return Optional.ofNullable(this.accessKeyId); - } - - /** - * Prefix to prepend to blob filenames. - * - */ - @Import(name="blobsPrefix") - private @Nullable Output blobsPrefix; - - /** - * @return Prefix to prepend to blob filenames. - * - */ - public Optional> blobsPrefix() { - return Optional.ofNullable(this.blobsPrefix); - } - - /** - * Name of the S3 bucket. - * - */ - @Import(name="bucket", required=true) - private Output bucket; - - /** - * @return Name of the S3 bucket. - * - */ - public Output bucket() { - return this.bucket; - } - - /** - * Endpoint of the S3 bucket. - * - */ - @Import(name="endpointUrl") - private @Nullable Output endpointUrl; - - /** - * @return Endpoint of the S3 bucket. - * - */ - public Optional> endpointUrl() { - return Optional.ofNullable(this.endpointUrl); - } - - /** - * Prefix to prepend on manifest filenames. - * - */ - @Import(name="manifestsPrefix") - private @Nullable Output manifestsPrefix; - - /** - * @return Prefix to prepend on manifest filenames. - * - */ - public Optional> manifestsPrefix() { - return Optional.ofNullable(this.manifestsPrefix); - } - - /** - * Name of the cache image. - * - */ - @Import(name="name") - private @Nullable Output name; - - /** - * @return Name of the cache image. - * - */ - public Optional> name() { - return Optional.ofNullable(this.name); - } - - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - @Import(name="region", required=true) - private Output region; - - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - public Output region() { - return this.region; - } - - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - @Import(name="secretAccessKey") - private @Nullable Output secretAccessKey; - - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - public Optional> secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - /** - * Defaults to `$AWS_SESSION_TOKEN`. - * - */ - @Import(name="sessionToken") - private @Nullable Output sessionToken; - - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - public Optional> sessionToken() { - return Optional.ofNullable(this.sessionToken); - } - - /** - * Uses `bucket` in the URL instead of hostname when `true`. - * - */ - @Import(name="usePathStyle") - private @Nullable Output usePathStyle; - - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - public Optional> usePathStyle() { - return Optional.ofNullable(this.usePathStyle); - } - - private CacheFromS3Args() {} - - private CacheFromS3Args(CacheFromS3Args $) { - this.accessKeyId = $.accessKeyId; - this.blobsPrefix = $.blobsPrefix; - this.bucket = $.bucket; - this.endpointUrl = $.endpointUrl; - this.manifestsPrefix = $.manifestsPrefix; - this.name = $.name; - this.region = $.region; - this.secretAccessKey = $.secretAccessKey; - this.sessionToken = $.sessionToken; - this.usePathStyle = $.usePathStyle; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheFromS3Args defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheFromS3Args $; - - public Builder() { - $ = new CacheFromS3Args(); - } - - public Builder(CacheFromS3Args defaults) { - $ = new CacheFromS3Args(Objects.requireNonNull(defaults)); - } - - /** - * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. - * - * @return builder - * - */ - public Builder accessKeyId(@Nullable Output accessKeyId) { - $.accessKeyId = accessKeyId; - return this; - } - - /** - * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. - * - * @return builder - * - */ - public Builder accessKeyId(String accessKeyId) { - return accessKeyId(Output.of(accessKeyId)); - } - - /** - * @param blobsPrefix Prefix to prepend to blob filenames. - * - * @return builder - * - */ - public Builder blobsPrefix(@Nullable Output blobsPrefix) { - $.blobsPrefix = blobsPrefix; - return this; - } - - /** - * @param blobsPrefix Prefix to prepend to blob filenames. - * - * @return builder - * - */ - public Builder blobsPrefix(String blobsPrefix) { - return blobsPrefix(Output.of(blobsPrefix)); - } - - /** - * @param bucket Name of the S3 bucket. - * - * @return builder - * - */ - public Builder bucket(Output bucket) { - $.bucket = bucket; - return this; - } - - /** - * @param bucket Name of the S3 bucket. - * - * @return builder - * - */ - public Builder bucket(String bucket) { - return bucket(Output.of(bucket)); - } - - /** - * @param endpointUrl Endpoint of the S3 bucket. - * - * @return builder - * - */ - public Builder endpointUrl(@Nullable Output endpointUrl) { - $.endpointUrl = endpointUrl; - return this; - } - - /** - * @param endpointUrl Endpoint of the S3 bucket. - * - * @return builder - * - */ - public Builder endpointUrl(String endpointUrl) { - return endpointUrl(Output.of(endpointUrl)); - } - - /** - * @param manifestsPrefix Prefix to prepend on manifest filenames. - * - * @return builder - * - */ - public Builder manifestsPrefix(@Nullable Output manifestsPrefix) { - $.manifestsPrefix = manifestsPrefix; - return this; - } - - /** - * @param manifestsPrefix Prefix to prepend on manifest filenames. - * - * @return builder - * - */ - public Builder manifestsPrefix(String manifestsPrefix) { - return manifestsPrefix(Output.of(manifestsPrefix)); - } - - /** - * @param name Name of the cache image. - * - * @return builder - * - */ - public Builder name(@Nullable Output name) { - $.name = name; - return this; - } - - /** - * @param name Name of the cache image. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - /** - * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - * @return builder - * - */ - public Builder region(Output region) { - $.region = region; - return this; - } - - /** - * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - * @return builder - * - */ - public Builder region(String region) { - return region(Output.of(region)); - } - - /** - * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - * @return builder - * - */ - public Builder secretAccessKey(@Nullable Output secretAccessKey) { - $.secretAccessKey = secretAccessKey; - return this; - } - - /** - * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - * @return builder - * - */ - public Builder secretAccessKey(String secretAccessKey) { - return secretAccessKey(Output.of(secretAccessKey)); - } - - /** - * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. - * - * @return builder - * - */ - public Builder sessionToken(@Nullable Output sessionToken) { - $.sessionToken = sessionToken; - return this; - } - - /** - * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. - * - * @return builder - * - */ - public Builder sessionToken(String sessionToken) { - return sessionToken(Output.of(sessionToken)); - } - - /** - * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. - * - * @return builder - * - */ - public Builder usePathStyle(@Nullable Output usePathStyle) { - $.usePathStyle = usePathStyle; - return this; - } - - /** - * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. - * - * @return builder - * - */ - public Builder usePathStyle(Boolean usePathStyle) { - return usePathStyle(Output.of(usePathStyle)); - } - - public CacheFromS3Args build() { - $.accessKeyId = Codegen.stringProp("accessKeyId").output().arg($.accessKeyId).env("AWS_ACCESS_KEY_ID").def("").getNullable(); - if ($.bucket == null) { - throw new MissingRequiredPropertyException("CacheFromS3Args", "bucket"); - } - $.region = Codegen.stringProp("region").output().arg($.region).env("AWS_REGION").def("").require(); - $.secretAccessKey = Codegen.stringProp("secretAccessKey").secret().arg($.secretAccessKey).env("AWS_SECRET_ACCESS_KEY").def("").getNullable(); - $.sessionToken = Codegen.stringProp("sessionToken").secret().arg($.sessionToken).env("AWS_SESSION_TOKEN").def("").getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java deleted file mode 100644 index 22cc53b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToArgs.java +++ /dev/null @@ -1,377 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.dockerbuild.inputs.CacheToAzureBlobArgs; -import com.pulumi.dockerbuild.inputs.CacheToGitHubActionsArgs; -import com.pulumi.dockerbuild.inputs.CacheToInlineArgs; -import com.pulumi.dockerbuild.inputs.CacheToLocalArgs; -import com.pulumi.dockerbuild.inputs.CacheToRegistryArgs; -import com.pulumi.dockerbuild.inputs.CacheToS3Args; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToArgs Empty = new CacheToArgs(); - - /** - * Push cache to Azure's blob storage service. - * - */ - @Import(name="azblob") - private @Nullable Output azblob; - - /** - * @return Push cache to Azure's blob storage service. - * - */ - public Optional> azblob() { - return Optional.ofNullable(this.azblob); - } - - /** - * When `true` this entry will be excluded. Defaults to `false`. - * - */ - @Import(name="disabled") - private @Nullable Output disabled; - - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional> disabled() { - return Optional.ofNullable(this.disabled); - } - - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - @Import(name="gha") - private @Nullable Output gha; - - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - public Optional> gha() { - return Optional.ofNullable(this.gha); - } - - /** - * The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - */ - @Import(name="inline") - private @Nullable Output inline; - - /** - * @return The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - */ - public Optional> inline() { - return Optional.ofNullable(this.inline); - } - - /** - * A simple backend which caches imagines on your local filesystem. - * - */ - @Import(name="local") - private @Nullable Output local; - - /** - * @return A simple backend which caches imagines on your local filesystem. - * - */ - public Optional> local() { - return Optional.ofNullable(this.local); - } - - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - */ - @Import(name="raw") - private @Nullable Output raw; - - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - */ - public Optional> raw() { - return Optional.ofNullable(this.raw); - } - - /** - * Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - */ - @Import(name="registry") - private @Nullable Output registry; - - /** - * @return Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - */ - public Optional> registry() { - return Optional.ofNullable(this.registry); - } - - /** - * Push cache to AWS S3 or S3-compatible services such as MinIO. - * - */ - @Import(name="s3") - private @Nullable Output s3; - - /** - * @return Push cache to AWS S3 or S3-compatible services such as MinIO. - * - */ - public Optional> s3() { - return Optional.ofNullable(this.s3); - } - - private CacheToArgs() {} - - private CacheToArgs(CacheToArgs $) { - this.azblob = $.azblob; - this.disabled = $.disabled; - this.gha = $.gha; - this.inline = $.inline; - this.local = $.local; - this.raw = $.raw; - this.registry = $.registry; - this.s3 = $.s3; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToArgs $; - - public Builder() { - $ = new CacheToArgs(); - } - - public Builder(CacheToArgs defaults) { - $ = new CacheToArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param azblob Push cache to Azure's blob storage service. - * - * @return builder - * - */ - public Builder azblob(@Nullable Output azblob) { - $.azblob = azblob; - return this; - } - - /** - * @param azblob Push cache to Azure's blob storage service. - * - * @return builder - * - */ - public Builder azblob(CacheToAzureBlobArgs azblob) { - return azblob(Output.of(azblob)); - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(@Nullable Output disabled) { - $.disabled = disabled; - return this; - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(Boolean disabled) { - return disabled(Output.of(disabled)); - } - - /** - * @param gha Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - * @return builder - * - */ - public Builder gha(@Nullable Output gha) { - $.gha = gha; - return this; - } - - /** - * @param gha Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - * @return builder - * - */ - public Builder gha(CacheToGitHubActionsArgs gha) { - return gha(Output.of(gha)); - } - - /** - * @param inline The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - * @return builder - * - */ - public Builder inline(@Nullable Output inline) { - $.inline = inline; - return this; - } - - /** - * @param inline The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - * @return builder - * - */ - public Builder inline(CacheToInlineArgs inline) { - return inline(Output.of(inline)); - } - - /** - * @param local A simple backend which caches imagines on your local filesystem. - * - * @return builder - * - */ - public Builder local(@Nullable Output local) { - $.local = local; - return this; - } - - /** - * @param local A simple backend which caches imagines on your local filesystem. - * - * @return builder - * - */ - public Builder local(CacheToLocalArgs local) { - return local(Output.of(local)); - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - * @return builder - * - */ - public Builder raw(@Nullable Output raw) { - $.raw = raw; - return this; - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - * @return builder - * - */ - public Builder raw(String raw) { - return raw(Output.of(raw)); - } - - /** - * @param registry Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - * @return builder - * - */ - public Builder registry(@Nullable Output registry) { - $.registry = registry; - return this; - } - - /** - * @param registry Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - * @return builder - * - */ - public Builder registry(CacheToRegistryArgs registry) { - return registry(Output.of(registry)); - } - - /** - * @param s3 Push cache to AWS S3 or S3-compatible services such as MinIO. - * - * @return builder - * - */ - public Builder s3(@Nullable Output s3) { - $.s3 = s3; - return this; - } - - /** - * @param s3 Push cache to AWS S3 or S3-compatible services such as MinIO. - * - * @return builder - * - */ - public Builder s3(CacheToS3Args s3) { - return s3(Output.of(s3)); - } - - public CacheToArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java deleted file mode 100644 index 2b4e50b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToAzureBlobArgs.java +++ /dev/null @@ -1,240 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToAzureBlobArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToAzureBlobArgs Empty = new CacheToAzureBlobArgs(); - - /** - * Base URL of the storage account. - * - */ - @Import(name="accountUrl") - private @Nullable Output accountUrl; - - /** - * @return Base URL of the storage account. - * - */ - public Optional> accountUrl() { - return Optional.ofNullable(this.accountUrl); - } - - /** - * Ignore errors caused by failed cache exports. - * - */ - @Import(name="ignoreError") - private @Nullable Output ignoreError; - - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional> ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - - /** - * The cache mode to use. Defaults to `min`. - * - */ - @Import(name="mode") - private @Nullable Output mode; - - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional> mode() { - return Optional.ofNullable(this.mode); - } - - /** - * The name of the cache image. - * - */ - @Import(name="name", required=true) - private Output name; - - /** - * @return The name of the cache image. - * - */ - public Output name() { - return this.name; - } - - /** - * Blob storage account key. - * - */ - @Import(name="secretAccessKey") - private @Nullable Output secretAccessKey; - - /** - * @return Blob storage account key. - * - */ - public Optional> secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - private CacheToAzureBlobArgs() {} - - private CacheToAzureBlobArgs(CacheToAzureBlobArgs $) { - this.accountUrl = $.accountUrl; - this.ignoreError = $.ignoreError; - this.mode = $.mode; - this.name = $.name; - this.secretAccessKey = $.secretAccessKey; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToAzureBlobArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToAzureBlobArgs $; - - public Builder() { - $ = new CacheToAzureBlobArgs(); - } - - public Builder(CacheToAzureBlobArgs defaults) { - $ = new CacheToAzureBlobArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param accountUrl Base URL of the storage account. - * - * @return builder - * - */ - public Builder accountUrl(@Nullable Output accountUrl) { - $.accountUrl = accountUrl; - return this; - } - - /** - * @param accountUrl Base URL of the storage account. - * - * @return builder - * - */ - public Builder accountUrl(String accountUrl) { - return accountUrl(Output.of(accountUrl)); - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(@Nullable Output ignoreError) { - $.ignoreError = ignoreError; - return this; - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(Boolean ignoreError) { - return ignoreError(Output.of(ignoreError)); - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(@Nullable Output mode) { - $.mode = mode; - return this; - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(CacheMode mode) { - return mode(Output.of(mode)); - } - - /** - * @param name The name of the cache image. - * - * @return builder - * - */ - public Builder name(Output name) { - $.name = name; - return this; - } - - /** - * @param name The name of the cache image. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - /** - * @param secretAccessKey Blob storage account key. - * - * @return builder - * - */ - public Builder secretAccessKey(@Nullable Output secretAccessKey) { - $.secretAccessKey = secretAccessKey; - return this; - } - - /** - * @param secretAccessKey Blob storage account key. - * - * @return builder - * - */ - public Builder secretAccessKey(String secretAccessKey) { - return secretAccessKey(Output.of(secretAccessKey)); - } - - public CacheToAzureBlobArgs build() { - $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); - $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); - if ($.name == null) { - throw new MissingRequiredPropertyException("CacheToAzureBlobArgs", "name"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java deleted file mode 100644 index e9379cc..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToGitHubActionsArgs.java +++ /dev/null @@ -1,287 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CacheMode; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToGitHubActionsArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToGitHubActionsArgs Empty = new CacheToGitHubActionsArgs(); - - /** - * Ignore errors caused by failed cache exports. - * - */ - @Import(name="ignoreError") - private @Nullable Output ignoreError; - - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional> ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - - /** - * The cache mode to use. Defaults to `min`. - * - */ - @Import(name="mode") - private @Nullable Output mode; - - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional> mode() { - return Optional.ofNullable(this.mode); - } - - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - @Import(name="scope") - private @Nullable Output scope; - - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - public Optional> scope() { - return Optional.ofNullable(this.scope); - } - - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - @Import(name="token") - private @Nullable Output token; - - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional> token() { - return Optional.ofNullable(this.token); - } - - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - @Import(name="url") - private @Nullable Output url; - - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional> url() { - return Optional.ofNullable(this.url); - } - - private CacheToGitHubActionsArgs() {} - - private CacheToGitHubActionsArgs(CacheToGitHubActionsArgs $) { - this.ignoreError = $.ignoreError; - this.mode = $.mode; - this.scope = $.scope; - this.token = $.token; - this.url = $.url; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToGitHubActionsArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToGitHubActionsArgs $; - - public Builder() { - $ = new CacheToGitHubActionsArgs(); - } - - public Builder(CacheToGitHubActionsArgs defaults) { - $ = new CacheToGitHubActionsArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(@Nullable Output ignoreError) { - $.ignoreError = ignoreError; - return this; - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(Boolean ignoreError) { - return ignoreError(Output.of(ignoreError)); - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(@Nullable Output mode) { - $.mode = mode; - return this; - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(CacheMode mode) { - return mode(Output.of(mode)); - } - - /** - * @param scope The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - * @return builder - * - */ - public Builder scope(@Nullable Output scope) { - $.scope = scope; - return this; - } - - /** - * @param scope The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - * @return builder - * - */ - public Builder scope(String scope) { - return scope(Output.of(scope)); - } - - /** - * @param token The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder token(@Nullable Output token) { - $.token = token; - return this; - } - - /** - * @param token The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder token(String token) { - return token(Output.of(token)); - } - - /** - * @param url The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder url(@Nullable Output url) { - $.url = url; - return this; - } - - /** - * @param url The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - * @return builder - * - */ - public Builder url(String url) { - return url(Output.of(url)); - } - - public CacheToGitHubActionsArgs build() { - $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); - $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); - $.scope = Codegen.stringProp("scope").output().arg($.scope).env("buildkit").def("").getNullable(); - $.token = Codegen.stringProp("token").secret().arg($.token).env("ACTIONS_RUNTIME_TOKEN").def("").getNullable(); - $.url = Codegen.stringProp("url").output().arg($.url).env("ACTIONS_CACHE_URL").def("").getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java deleted file mode 100644 index bc54717..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToInlineArgs.java +++ /dev/null @@ -1,32 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - - - - -/** - * Include an inline cache with the exported image. - * - */ -public final class CacheToInlineArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToInlineArgs Empty = new CacheToInlineArgs(); - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder { - private CacheToInlineArgs $; - - public Builder() { - $ = new CacheToInlineArgs(); - } - public CacheToInlineArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java deleted file mode 100644 index aed92e0..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToLocalArgs.java +++ /dev/null @@ -1,282 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.dockerbuild.enums.CompressionType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToLocalArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToLocalArgs Empty = new CacheToLocalArgs(); - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * Path of the local directory to export the cache. - * - */ - @Import(name="dest", required=true) - private Output dest; - - /** - * @return Path of the local directory to export the cache. - * - */ - public Output dest() { - return this.dest; - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Ignore errors caused by failed cache exports. - * - */ - @Import(name="ignoreError") - private @Nullable Output ignoreError; - - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional> ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - - /** - * The cache mode to use. Defaults to `min`. - * - */ - @Import(name="mode") - private @Nullable Output mode; - - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional> mode() { - return Optional.ofNullable(this.mode); - } - - private CacheToLocalArgs() {} - - private CacheToLocalArgs(CacheToLocalArgs $) { - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.dest = $.dest; - this.forceCompression = $.forceCompression; - this.ignoreError = $.ignoreError; - this.mode = $.mode; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToLocalArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToLocalArgs $; - - public Builder() { - $ = new CacheToLocalArgs(); - } - - public Builder(CacheToLocalArgs defaults) { - $ = new CacheToLocalArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param dest Path of the local directory to export the cache. - * - * @return builder - * - */ - public Builder dest(Output dest) { - $.dest = dest; - return this; - } - - /** - * @param dest Path of the local directory to export the cache. - * - * @return builder - * - */ - public Builder dest(String dest) { - return dest(Output.of(dest)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(@Nullable Output ignoreError) { - $.ignoreError = ignoreError; - return this; - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(Boolean ignoreError) { - return ignoreError(Output.of(ignoreError)); - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(@Nullable Output mode) { - $.mode = mode; - return this; - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(CacheMode mode) { - return mode(Output.of(mode)); - } - - public CacheToLocalArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - if ($.dest == null) { - throw new MissingRequiredPropertyException("CacheToLocalArgs", "dest"); - } - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); - $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java deleted file mode 100644 index 5144527..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToRegistryArgs.java +++ /dev/null @@ -1,386 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.dockerbuild.enums.CompressionType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToRegistryArgs extends com.pulumi.resources.ResourceArgs { - - public static final CacheToRegistryArgs Empty = new CacheToRegistryArgs(); - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Ignore errors caused by failed cache exports. - * - */ - @Import(name="ignoreError") - private @Nullable Output ignoreError; - - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional> ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - - /** - * Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - */ - @Import(name="imageManifest") - private @Nullable Output imageManifest; - - /** - * @return Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - */ - public Optional> imageManifest() { - return Optional.ofNullable(this.imageManifest); - } - - /** - * The cache mode to use. Defaults to `min`. - * - */ - @Import(name="mode") - private @Nullable Output mode; - - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional> mode() { - return Optional.ofNullable(this.mode); - } - - /** - * Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - */ - @Import(name="ociMediaTypes") - private @Nullable Output ociMediaTypes; - - /** - * @return Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - */ - public Optional> ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - - /** - * Fully qualified name of the cache image to import. - * - */ - @Import(name="ref", required=true) - private Output ref; - - /** - * @return Fully qualified name of the cache image to import. - * - */ - public Output ref() { - return this.ref; - } - - private CacheToRegistryArgs() {} - - private CacheToRegistryArgs(CacheToRegistryArgs $) { - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.forceCompression = $.forceCompression; - this.ignoreError = $.ignoreError; - this.imageManifest = $.imageManifest; - this.mode = $.mode; - this.ociMediaTypes = $.ociMediaTypes; - this.ref = $.ref; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToRegistryArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToRegistryArgs $; - - public Builder() { - $ = new CacheToRegistryArgs(); - } - - public Builder(CacheToRegistryArgs defaults) { - $ = new CacheToRegistryArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(@Nullable Output ignoreError) { - $.ignoreError = ignoreError; - return this; - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(Boolean ignoreError) { - return ignoreError(Output.of(ignoreError)); - } - - /** - * @param imageManifest Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - * @return builder - * - */ - public Builder imageManifest(@Nullable Output imageManifest) { - $.imageManifest = imageManifest; - return this; - } - - /** - * @param imageManifest Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - * @return builder - * - */ - public Builder imageManifest(Boolean imageManifest) { - return imageManifest(Output.of(imageManifest)); - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(@Nullable Output mode) { - $.mode = mode; - return this; - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(CacheMode mode) { - return mode(Output.of(mode)); - } - - /** - * @param ociMediaTypes Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - * @return builder - * - */ - public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { - $.ociMediaTypes = ociMediaTypes; - return this; - } - - /** - * @param ociMediaTypes Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - * @return builder - * - */ - public Builder ociMediaTypes(Boolean ociMediaTypes) { - return ociMediaTypes(Output.of(ociMediaTypes)); - } - - /** - * @param ref Fully qualified name of the cache image to import. - * - * @return builder - * - */ - public Builder ref(Output ref) { - $.ref = ref; - return this; - } - - /** - * @param ref Fully qualified name of the cache image to import. - * - * @return builder - * - */ - public Builder ref(String ref) { - return ref(Output.of(ref)); - } - - public CacheToRegistryArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); - $.imageManifest = Codegen.booleanProp("imageManifest").output().arg($.imageManifest).def(false).getNullable(); - $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); - $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(true).getNullable(); - if ($.ref == null) { - throw new MissingRequiredPropertyException("CacheToRegistryArgs", "ref"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java deleted file mode 100644 index 0bb6934..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/CacheToS3Args.java +++ /dev/null @@ -1,503 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class CacheToS3Args extends com.pulumi.resources.ResourceArgs { - - public static final CacheToS3Args Empty = new CacheToS3Args(); - - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - @Import(name="accessKeyId") - private @Nullable Output accessKeyId; - - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - public Optional> accessKeyId() { - return Optional.ofNullable(this.accessKeyId); - } - - /** - * Prefix to prepend to blob filenames. - * - */ - @Import(name="blobsPrefix") - private @Nullable Output blobsPrefix; - - /** - * @return Prefix to prepend to blob filenames. - * - */ - public Optional> blobsPrefix() { - return Optional.ofNullable(this.blobsPrefix); - } - - /** - * Name of the S3 bucket. - * - */ - @Import(name="bucket", required=true) - private Output bucket; - - /** - * @return Name of the S3 bucket. - * - */ - public Output bucket() { - return this.bucket; - } - - /** - * Endpoint of the S3 bucket. - * - */ - @Import(name="endpointUrl") - private @Nullable Output endpointUrl; - - /** - * @return Endpoint of the S3 bucket. - * - */ - public Optional> endpointUrl() { - return Optional.ofNullable(this.endpointUrl); - } - - /** - * Ignore errors caused by failed cache exports. - * - */ - @Import(name="ignoreError") - private @Nullable Output ignoreError; - - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional> ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - - /** - * Prefix to prepend on manifest filenames. - * - */ - @Import(name="manifestsPrefix") - private @Nullable Output manifestsPrefix; - - /** - * @return Prefix to prepend on manifest filenames. - * - */ - public Optional> manifestsPrefix() { - return Optional.ofNullable(this.manifestsPrefix); - } - - /** - * The cache mode to use. Defaults to `min`. - * - */ - @Import(name="mode") - private @Nullable Output mode; - - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional> mode() { - return Optional.ofNullable(this.mode); - } - - /** - * Name of the cache image. - * - */ - @Import(name="name") - private @Nullable Output name; - - /** - * @return Name of the cache image. - * - */ - public Optional> name() { - return Optional.ofNullable(this.name); - } - - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - @Import(name="region", required=true) - private Output region; - - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - public Output region() { - return this.region; - } - - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - @Import(name="secretAccessKey") - private @Nullable Output secretAccessKey; - - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - public Optional> secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - /** - * Defaults to `$AWS_SESSION_TOKEN`. - * - */ - @Import(name="sessionToken") - private @Nullable Output sessionToken; - - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - public Optional> sessionToken() { - return Optional.ofNullable(this.sessionToken); - } - - /** - * Uses `bucket` in the URL instead of hostname when `true`. - * - */ - @Import(name="usePathStyle") - private @Nullable Output usePathStyle; - - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - public Optional> usePathStyle() { - return Optional.ofNullable(this.usePathStyle); - } - - private CacheToS3Args() {} - - private CacheToS3Args(CacheToS3Args $) { - this.accessKeyId = $.accessKeyId; - this.blobsPrefix = $.blobsPrefix; - this.bucket = $.bucket; - this.endpointUrl = $.endpointUrl; - this.ignoreError = $.ignoreError; - this.manifestsPrefix = $.manifestsPrefix; - this.mode = $.mode; - this.name = $.name; - this.region = $.region; - this.secretAccessKey = $.secretAccessKey; - this.sessionToken = $.sessionToken; - this.usePathStyle = $.usePathStyle; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(CacheToS3Args defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private CacheToS3Args $; - - public Builder() { - $ = new CacheToS3Args(); - } - - public Builder(CacheToS3Args defaults) { - $ = new CacheToS3Args(Objects.requireNonNull(defaults)); - } - - /** - * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. - * - * @return builder - * - */ - public Builder accessKeyId(@Nullable Output accessKeyId) { - $.accessKeyId = accessKeyId; - return this; - } - - /** - * @param accessKeyId Defaults to `$AWS_ACCESS_KEY_ID`. - * - * @return builder - * - */ - public Builder accessKeyId(String accessKeyId) { - return accessKeyId(Output.of(accessKeyId)); - } - - /** - * @param blobsPrefix Prefix to prepend to blob filenames. - * - * @return builder - * - */ - public Builder blobsPrefix(@Nullable Output blobsPrefix) { - $.blobsPrefix = blobsPrefix; - return this; - } - - /** - * @param blobsPrefix Prefix to prepend to blob filenames. - * - * @return builder - * - */ - public Builder blobsPrefix(String blobsPrefix) { - return blobsPrefix(Output.of(blobsPrefix)); - } - - /** - * @param bucket Name of the S3 bucket. - * - * @return builder - * - */ - public Builder bucket(Output bucket) { - $.bucket = bucket; - return this; - } - - /** - * @param bucket Name of the S3 bucket. - * - * @return builder - * - */ - public Builder bucket(String bucket) { - return bucket(Output.of(bucket)); - } - - /** - * @param endpointUrl Endpoint of the S3 bucket. - * - * @return builder - * - */ - public Builder endpointUrl(@Nullable Output endpointUrl) { - $.endpointUrl = endpointUrl; - return this; - } - - /** - * @param endpointUrl Endpoint of the S3 bucket. - * - * @return builder - * - */ - public Builder endpointUrl(String endpointUrl) { - return endpointUrl(Output.of(endpointUrl)); - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(@Nullable Output ignoreError) { - $.ignoreError = ignoreError; - return this; - } - - /** - * @param ignoreError Ignore errors caused by failed cache exports. - * - * @return builder - * - */ - public Builder ignoreError(Boolean ignoreError) { - return ignoreError(Output.of(ignoreError)); - } - - /** - * @param manifestsPrefix Prefix to prepend on manifest filenames. - * - * @return builder - * - */ - public Builder manifestsPrefix(@Nullable Output manifestsPrefix) { - $.manifestsPrefix = manifestsPrefix; - return this; - } - - /** - * @param manifestsPrefix Prefix to prepend on manifest filenames. - * - * @return builder - * - */ - public Builder manifestsPrefix(String manifestsPrefix) { - return manifestsPrefix(Output.of(manifestsPrefix)); - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(@Nullable Output mode) { - $.mode = mode; - return this; - } - - /** - * @param mode The cache mode to use. Defaults to `min`. - * - * @return builder - * - */ - public Builder mode(CacheMode mode) { - return mode(Output.of(mode)); - } - - /** - * @param name Name of the cache image. - * - * @return builder - * - */ - public Builder name(@Nullable Output name) { - $.name = name; - return this; - } - - /** - * @param name Name of the cache image. - * - * @return builder - * - */ - public Builder name(String name) { - return name(Output.of(name)); - } - - /** - * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - * @return builder - * - */ - public Builder region(Output region) { - $.region = region; - return this; - } - - /** - * @param region The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - * @return builder - * - */ - public Builder region(String region) { - return region(Output.of(region)); - } - - /** - * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - * @return builder - * - */ - public Builder secretAccessKey(@Nullable Output secretAccessKey) { - $.secretAccessKey = secretAccessKey; - return this; - } - - /** - * @param secretAccessKey Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - * @return builder - * - */ - public Builder secretAccessKey(String secretAccessKey) { - return secretAccessKey(Output.of(secretAccessKey)); - } - - /** - * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. - * - * @return builder - * - */ - public Builder sessionToken(@Nullable Output sessionToken) { - $.sessionToken = sessionToken; - return this; - } - - /** - * @param sessionToken Defaults to `$AWS_SESSION_TOKEN`. - * - * @return builder - * - */ - public Builder sessionToken(String sessionToken) { - return sessionToken(Output.of(sessionToken)); - } - - /** - * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. - * - * @return builder - * - */ - public Builder usePathStyle(@Nullable Output usePathStyle) { - $.usePathStyle = usePathStyle; - return this; - } - - /** - * @param usePathStyle Uses `bucket` in the URL instead of hostname when `true`. - * - * @return builder - * - */ - public Builder usePathStyle(Boolean usePathStyle) { - return usePathStyle(Output.of(usePathStyle)); - } - - public CacheToS3Args build() { - $.accessKeyId = Codegen.stringProp("accessKeyId").output().arg($.accessKeyId).env("AWS_ACCESS_KEY_ID").def("").getNullable(); - if ($.bucket == null) { - throw new MissingRequiredPropertyException("CacheToS3Args", "bucket"); - } - $.ignoreError = Codegen.booleanProp("ignoreError").output().arg($.ignoreError).def(false).getNullable(); - $.mode = Codegen.objectProp("mode", CacheMode.class).output().arg($.mode).def(CacheMode.Min).getNullable(); - $.region = Codegen.stringProp("region").output().arg($.region).env("AWS_REGION").def("").require(); - $.secretAccessKey = Codegen.stringProp("secretAccessKey").secret().arg($.secretAccessKey).env("AWS_SECRET_ACCESS_KEY").def("").getNullable(); - $.sessionToken = Codegen.stringProp("sessionToken").secret().arg($.sessionToken).env("AWS_SESSION_TOKEN").def("").getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java deleted file mode 100644 index 4f187e8..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ContextArgs.java +++ /dev/null @@ -1,113 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - - -public final class ContextArgs extends com.pulumi.resources.ResourceArgs { - - public static final ContextArgs Empty = new ContextArgs(); - - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - @Import(name="location", required=true) - private Output location; - - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - public Output location() { - return this.location; - } - - private ContextArgs() {} - - private ContextArgs(ContextArgs $) { - this.location = $.location; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ContextArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ContextArgs $; - - public Builder() { - $ = new ContextArgs(); - } - - public Builder(ContextArgs defaults) { - $ = new ContextArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param location Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - * @return builder - * - */ - public Builder location(Output location) { - $.location = location; - return this; - } - - /** - * @param location Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - * @return builder - * - */ - public Builder location(String location) { - return location(Output.of(location)); - } - - public ContextArgs build() { - if ($.location == null) { - throw new MissingRequiredPropertyException("ContextArgs", "location"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java deleted file mode 100644 index 389d794..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/DockerfileArgs.java +++ /dev/null @@ -1,160 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class DockerfileArgs extends com.pulumi.resources.ResourceArgs { - - public static final DockerfileArgs Empty = new DockerfileArgs(); - - /** - * Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - */ - @Import(name="inline") - private @Nullable Output inline; - - /** - * @return Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - */ - public Optional> inline() { - return Optional.ofNullable(this.inline); - } - - /** - * Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - */ - @Import(name="location") - private @Nullable Output location; - - /** - * @return Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - */ - public Optional> location() { - return Optional.ofNullable(this.location); - } - - private DockerfileArgs() {} - - private DockerfileArgs(DockerfileArgs $) { - this.inline = $.inline; - this.location = $.location; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(DockerfileArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private DockerfileArgs $; - - public Builder() { - $ = new DockerfileArgs(); - } - - public Builder(DockerfileArgs defaults) { - $ = new DockerfileArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param inline Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - * @return builder - * - */ - public Builder inline(@Nullable Output inline) { - $.inline = inline; - return this; - } - - /** - * @param inline Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - * @return builder - * - */ - public Builder inline(String inline) { - return inline(Output.of(inline)); - } - - /** - * @param location Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - * @return builder - * - */ - public Builder location(@Nullable Output location) { - $.location = location; - return this; - } - - /** - * @param location Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - * @return builder - * - */ - public Builder location(String location) { - return location(Output.of(location)); - } - - public DockerfileArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java deleted file mode 100644 index 9952a9e..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportArgs.java +++ /dev/null @@ -1,395 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.dockerbuild.inputs.ExportCacheOnlyArgs; -import com.pulumi.dockerbuild.inputs.ExportDockerArgs; -import com.pulumi.dockerbuild.inputs.ExportImageArgs; -import com.pulumi.dockerbuild.inputs.ExportLocalArgs; -import com.pulumi.dockerbuild.inputs.ExportOCIArgs; -import com.pulumi.dockerbuild.inputs.ExportRegistryArgs; -import com.pulumi.dockerbuild.inputs.ExportTarArgs; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ExportArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportArgs Empty = new ExportArgs(); - - /** - * A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - */ - @Import(name="cacheonly") - private @Nullable Output cacheonly; - - /** - * @return A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - */ - public Optional> cacheonly() { - return Optional.ofNullable(this.cacheonly); - } - - /** - * When `true` this entry will be excluded. Defaults to `false`. - * - */ - @Import(name="disabled") - private @Nullable Output disabled; - - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional> disabled() { - return Optional.ofNullable(this.disabled); - } - - /** - * Export as a Docker image layout. - * - */ - @Import(name="docker") - private @Nullable Output docker; - - /** - * @return Export as a Docker image layout. - * - */ - public Optional> docker() { - return Optional.ofNullable(this.docker); - } - - /** - * Outputs the build result into a container image format. - * - */ - @Import(name="image") - private @Nullable Output image; - - /** - * @return Outputs the build result into a container image format. - * - */ - public Optional> image() { - return Optional.ofNullable(this.image); - } - - /** - * Export to a local directory as files and directories. - * - */ - @Import(name="local") - private @Nullable Output local; - - /** - * @return Export to a local directory as files and directories. - * - */ - public Optional> local() { - return Optional.ofNullable(this.local); - } - - /** - * Identical to the Docker exporter but uses OCI media types by default. - * - */ - @Import(name="oci") - private @Nullable Output oci; - - /** - * @return Identical to the Docker exporter but uses OCI media types by default. - * - */ - public Optional> oci() { - return Optional.ofNullable(this.oci); - } - - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - */ - @Import(name="raw") - private @Nullable Output raw; - - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - */ - public Optional> raw() { - return Optional.ofNullable(this.raw); - } - - /** - * Identical to the Image exporter, but pushes by default. - * - */ - @Import(name="registry") - private @Nullable Output registry; - - /** - * @return Identical to the Image exporter, but pushes by default. - * - */ - public Optional> registry() { - return Optional.ofNullable(this.registry); - } - - /** - * Export to a local directory as a tarball. - * - */ - @Import(name="tar") - private @Nullable Output tar; - - /** - * @return Export to a local directory as a tarball. - * - */ - public Optional> tar() { - return Optional.ofNullable(this.tar); - } - - private ExportArgs() {} - - private ExportArgs(ExportArgs $) { - this.cacheonly = $.cacheonly; - this.disabled = $.disabled; - this.docker = $.docker; - this.image = $.image; - this.local = $.local; - this.oci = $.oci; - this.raw = $.raw; - this.registry = $.registry; - this.tar = $.tar; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportArgs $; - - public Builder() { - $ = new ExportArgs(); - } - - public Builder(ExportArgs defaults) { - $ = new ExportArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param cacheonly A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - * @return builder - * - */ - public Builder cacheonly(@Nullable Output cacheonly) { - $.cacheonly = cacheonly; - return this; - } - - /** - * @param cacheonly A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - * @return builder - * - */ - public Builder cacheonly(ExportCacheOnlyArgs cacheonly) { - return cacheonly(Output.of(cacheonly)); - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(@Nullable Output disabled) { - $.disabled = disabled; - return this; - } - - /** - * @param disabled When `true` this entry will be excluded. Defaults to `false`. - * - * @return builder - * - */ - public Builder disabled(Boolean disabled) { - return disabled(Output.of(disabled)); - } - - /** - * @param docker Export as a Docker image layout. - * - * @return builder - * - */ - public Builder docker(@Nullable Output docker) { - $.docker = docker; - return this; - } - - /** - * @param docker Export as a Docker image layout. - * - * @return builder - * - */ - public Builder docker(ExportDockerArgs docker) { - return docker(Output.of(docker)); - } - - /** - * @param image Outputs the build result into a container image format. - * - * @return builder - * - */ - public Builder image(@Nullable Output image) { - $.image = image; - return this; - } - - /** - * @param image Outputs the build result into a container image format. - * - * @return builder - * - */ - public Builder image(ExportImageArgs image) { - return image(Output.of(image)); - } - - /** - * @param local Export to a local directory as files and directories. - * - * @return builder - * - */ - public Builder local(@Nullable Output local) { - $.local = local; - return this; - } - - /** - * @param local Export to a local directory as files and directories. - * - * @return builder - * - */ - public Builder local(ExportLocalArgs local) { - return local(Output.of(local)); - } - - /** - * @param oci Identical to the Docker exporter but uses OCI media types by default. - * - * @return builder - * - */ - public Builder oci(@Nullable Output oci) { - $.oci = oci; - return this; - } - - /** - * @param oci Identical to the Docker exporter but uses OCI media types by default. - * - * @return builder - * - */ - public Builder oci(ExportOCIArgs oci) { - return oci(Output.of(oci)); - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - * @return builder - * - */ - public Builder raw(@Nullable Output raw) { - $.raw = raw; - return this; - } - - /** - * @param raw A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - * @return builder - * - */ - public Builder raw(String raw) { - return raw(Output.of(raw)); - } - - /** - * @param registry Identical to the Image exporter, but pushes by default. - * - * @return builder - * - */ - public Builder registry(@Nullable Output registry) { - $.registry = registry; - return this; - } - - /** - * @param registry Identical to the Image exporter, but pushes by default. - * - * @return builder - * - */ - public Builder registry(ExportRegistryArgs registry) { - return registry(Output.of(registry)); - } - - /** - * @param tar Export to a local directory as a tarball. - * - * @return builder - * - */ - public Builder tar(@Nullable Output tar) { - $.tar = tar; - return this; - } - - /** - * @param tar Export to a local directory as a tarball. - * - * @return builder - * - */ - public Builder tar(ExportTarArgs tar) { - return tar(Output.of(tar)); - } - - public ExportArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java deleted file mode 100644 index 8e7158b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportCacheOnlyArgs.java +++ /dev/null @@ -1,28 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - - - - -public final class ExportCacheOnlyArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportCacheOnlyArgs Empty = new ExportCacheOnlyArgs(); - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder { - private ExportCacheOnlyArgs $; - - public Builder() { - $ = new ExportCacheOnlyArgs(); - } - public ExportCacheOnlyArgs build() { - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java deleted file mode 100644 index 14c75af..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportDockerArgs.java +++ /dev/null @@ -1,363 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ExportDockerArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportDockerArgs Empty = new ExportDockerArgs(); - - /** - * Attach an arbitrary key/value annotation to the image. - * - */ - @Import(name="annotations") - private @Nullable Output> annotations; - - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Optional>> annotations() { - return Optional.ofNullable(this.annotations); - } - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * The local export path. - * - */ - @Import(name="dest") - private @Nullable Output dest; - - /** - * @return The local export path. - * - */ - public Optional> dest() { - return Optional.ofNullable(this.dest); - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Specify images names to export. This is overridden if tags are already specified. - * - */ - @Import(name="names") - private @Nullable Output> names; - - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public Optional>> names() { - return Optional.ofNullable(this.names); - } - - /** - * Use OCI media types in exporter manifests. - * - */ - @Import(name="ociMediaTypes") - private @Nullable Output ociMediaTypes; - - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional> ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - - /** - * Bundle the output into a tarball layout. - * - */ - @Import(name="tar") - private @Nullable Output tar; - - /** - * @return Bundle the output into a tarball layout. - * - */ - public Optional> tar() { - return Optional.ofNullable(this.tar); - } - - private ExportDockerArgs() {} - - private ExportDockerArgs(ExportDockerArgs $) { - this.annotations = $.annotations; - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.dest = $.dest; - this.forceCompression = $.forceCompression; - this.names = $.names; - this.ociMediaTypes = $.ociMediaTypes; - this.tar = $.tar; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportDockerArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportDockerArgs $; - - public Builder() { - $ = new ExportDockerArgs(); - } - - public Builder(ExportDockerArgs defaults) { - $ = new ExportDockerArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(@Nullable Output> annotations) { - $.annotations = annotations; - return this; - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(Map annotations) { - return annotations(Output.of(annotations)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param dest The local export path. - * - * @return builder - * - */ - public Builder dest(@Nullable Output dest) { - $.dest = dest; - return this; - } - - /** - * @param dest The local export path. - * - * @return builder - * - */ - public Builder dest(String dest) { - return dest(Output.of(dest)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(@Nullable Output> names) { - $.names = names; - return this; - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(List names) { - return names(Output.of(names)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(String... names) { - return names(List.of(names)); - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { - $.ociMediaTypes = ociMediaTypes; - return this; - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(Boolean ociMediaTypes) { - return ociMediaTypes(Output.of(ociMediaTypes)); - } - - /** - * @param tar Bundle the output into a tarball layout. - * - * @return builder - * - */ - public Builder tar(@Nullable Output tar) { - $.tar = tar; - return this; - } - - /** - * @param tar Bundle the output into a tarball layout. - * - * @return builder - * - */ - public Builder tar(Boolean tar) { - return tar(Output.of(tar)); - } - - public ExportDockerArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); - $.tar = Codegen.booleanProp("tar").output().arg($.tar).def(true).getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java deleted file mode 100644 index 37a36f6..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportImageArgs.java +++ /dev/null @@ -1,576 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ExportImageArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportImageArgs Empty = new ExportImageArgs(); - - /** - * Attach an arbitrary key/value annotation to the image. - * - */ - @Import(name="annotations") - private @Nullable Output> annotations; - - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Optional>> annotations() { - return Optional.ofNullable(this.annotations); - } - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - @Import(name="danglingNamePrefix") - private @Nullable Output danglingNamePrefix; - - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - public Optional> danglingNamePrefix() { - return Optional.ofNullable(this.danglingNamePrefix); - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Allow pushing to an insecure registry. - * - */ - @Import(name="insecure") - private @Nullable Output insecure; - - /** - * @return Allow pushing to an insecure registry. - * - */ - public Optional> insecure() { - return Optional.ofNullable(this.insecure); - } - - /** - * Add additional canonical name (`name{@literal @}<digest>`). - * - */ - @Import(name="nameCanonical") - private @Nullable Output nameCanonical; - - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - public Optional> nameCanonical() { - return Optional.ofNullable(this.nameCanonical); - } - - /** - * Specify images names to export. This is overridden if tags are already specified. - * - */ - @Import(name="names") - private @Nullable Output> names; - - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public Optional>> names() { - return Optional.ofNullable(this.names); - } - - /** - * Use OCI media types in exporter manifests. - * - */ - @Import(name="ociMediaTypes") - private @Nullable Output ociMediaTypes; - - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional> ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - - /** - * Push after creating the image. Defaults to `false`. - * - */ - @Import(name="push") - private @Nullable Output push; - - /** - * @return Push after creating the image. Defaults to `false`. - * - */ - public Optional> push() { - return Optional.ofNullable(this.push); - } - - /** - * Push image without name. - * - */ - @Import(name="pushByDigest") - private @Nullable Output pushByDigest; - - /** - * @return Push image without name. - * - */ - public Optional> pushByDigest() { - return Optional.ofNullable(this.pushByDigest); - } - - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - @Import(name="store") - private @Nullable Output store; - - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - public Optional> store() { - return Optional.ofNullable(this.store); - } - - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - @Import(name="unpack") - private @Nullable Output unpack; - - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - public Optional> unpack() { - return Optional.ofNullable(this.unpack); - } - - private ExportImageArgs() {} - - private ExportImageArgs(ExportImageArgs $) { - this.annotations = $.annotations; - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.danglingNamePrefix = $.danglingNamePrefix; - this.forceCompression = $.forceCompression; - this.insecure = $.insecure; - this.nameCanonical = $.nameCanonical; - this.names = $.names; - this.ociMediaTypes = $.ociMediaTypes; - this.push = $.push; - this.pushByDigest = $.pushByDigest; - this.store = $.store; - this.unpack = $.unpack; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportImageArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportImageArgs $; - - public Builder() { - $ = new ExportImageArgs(); - } - - public Builder(ExportImageArgs defaults) { - $ = new ExportImageArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(@Nullable Output> annotations) { - $.annotations = annotations; - return this; - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(Map annotations) { - return annotations(Output.of(annotations)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - * @return builder - * - */ - public Builder danglingNamePrefix(@Nullable Output danglingNamePrefix) { - $.danglingNamePrefix = danglingNamePrefix; - return this; - } - - /** - * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - * @return builder - * - */ - public Builder danglingNamePrefix(String danglingNamePrefix) { - return danglingNamePrefix(Output.of(danglingNamePrefix)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param insecure Allow pushing to an insecure registry. - * - * @return builder - * - */ - public Builder insecure(@Nullable Output insecure) { - $.insecure = insecure; - return this; - } - - /** - * @param insecure Allow pushing to an insecure registry. - * - * @return builder - * - */ - public Builder insecure(Boolean insecure) { - return insecure(Output.of(insecure)); - } - - /** - * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). - * - * @return builder - * - */ - public Builder nameCanonical(@Nullable Output nameCanonical) { - $.nameCanonical = nameCanonical; - return this; - } - - /** - * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). - * - * @return builder - * - */ - public Builder nameCanonical(Boolean nameCanonical) { - return nameCanonical(Output.of(nameCanonical)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(@Nullable Output> names) { - $.names = names; - return this; - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(List names) { - return names(Output.of(names)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(String... names) { - return names(List.of(names)); - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { - $.ociMediaTypes = ociMediaTypes; - return this; - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(Boolean ociMediaTypes) { - return ociMediaTypes(Output.of(ociMediaTypes)); - } - - /** - * @param push Push after creating the image. Defaults to `false`. - * - * @return builder - * - */ - public Builder push(@Nullable Output push) { - $.push = push; - return this; - } - - /** - * @param push Push after creating the image. Defaults to `false`. - * - * @return builder - * - */ - public Builder push(Boolean push) { - return push(Output.of(push)); - } - - /** - * @param pushByDigest Push image without name. - * - * @return builder - * - */ - public Builder pushByDigest(@Nullable Output pushByDigest) { - $.pushByDigest = pushByDigest; - return this; - } - - /** - * @param pushByDigest Push image without name. - * - * @return builder - * - */ - public Builder pushByDigest(Boolean pushByDigest) { - return pushByDigest(Output.of(pushByDigest)); - } - - /** - * @param store Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - * @return builder - * - */ - public Builder store(@Nullable Output store) { - $.store = store; - return this; - } - - /** - * @param store Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - * @return builder - * - */ - public Builder store(Boolean store) { - return store(Output.of(store)); - } - - /** - * @param unpack Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - * @return builder - * - */ - public Builder unpack(@Nullable Output unpack) { - $.unpack = unpack; - return this; - } - - /** - * @param unpack Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - * @return builder - * - */ - public Builder unpack(Boolean unpack) { - return unpack(Output.of(unpack)); - } - - public ExportImageArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); - $.store = Codegen.booleanProp("store").output().arg($.store).def(true).getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java deleted file mode 100644 index e29295d..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportLocalArgs.java +++ /dev/null @@ -1,85 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - - -public final class ExportLocalArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportLocalArgs Empty = new ExportLocalArgs(); - - /** - * Output path. - * - */ - @Import(name="dest", required=true) - private Output dest; - - /** - * @return Output path. - * - */ - public Output dest() { - return this.dest; - } - - private ExportLocalArgs() {} - - private ExportLocalArgs(ExportLocalArgs $) { - this.dest = $.dest; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportLocalArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportLocalArgs $; - - public Builder() { - $ = new ExportLocalArgs(); - } - - public Builder(ExportLocalArgs defaults) { - $ = new ExportLocalArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param dest Output path. - * - * @return builder - * - */ - public Builder dest(Output dest) { - $.dest = dest; - return this; - } - - /** - * @param dest Output path. - * - * @return builder - * - */ - public Builder dest(String dest) { - return dest(Output.of(dest)); - } - - public ExportLocalArgs build() { - if ($.dest == null) { - throw new MissingRequiredPropertyException("ExportLocalArgs", "dest"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java deleted file mode 100644 index bdabd49..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportOCIArgs.java +++ /dev/null @@ -1,363 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ExportOCIArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportOCIArgs Empty = new ExportOCIArgs(); - - /** - * Attach an arbitrary key/value annotation to the image. - * - */ - @Import(name="annotations") - private @Nullable Output> annotations; - - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Optional>> annotations() { - return Optional.ofNullable(this.annotations); - } - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * The local export path. - * - */ - @Import(name="dest") - private @Nullable Output dest; - - /** - * @return The local export path. - * - */ - public Optional> dest() { - return Optional.ofNullable(this.dest); - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Specify images names to export. This is overridden if tags are already specified. - * - */ - @Import(name="names") - private @Nullable Output> names; - - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public Optional>> names() { - return Optional.ofNullable(this.names); - } - - /** - * Use OCI media types in exporter manifests. - * - */ - @Import(name="ociMediaTypes") - private @Nullable Output ociMediaTypes; - - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional> ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - - /** - * Bundle the output into a tarball layout. - * - */ - @Import(name="tar") - private @Nullable Output tar; - - /** - * @return Bundle the output into a tarball layout. - * - */ - public Optional> tar() { - return Optional.ofNullable(this.tar); - } - - private ExportOCIArgs() {} - - private ExportOCIArgs(ExportOCIArgs $) { - this.annotations = $.annotations; - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.dest = $.dest; - this.forceCompression = $.forceCompression; - this.names = $.names; - this.ociMediaTypes = $.ociMediaTypes; - this.tar = $.tar; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportOCIArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportOCIArgs $; - - public Builder() { - $ = new ExportOCIArgs(); - } - - public Builder(ExportOCIArgs defaults) { - $ = new ExportOCIArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(@Nullable Output> annotations) { - $.annotations = annotations; - return this; - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(Map annotations) { - return annotations(Output.of(annotations)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param dest The local export path. - * - * @return builder - * - */ - public Builder dest(@Nullable Output dest) { - $.dest = dest; - return this; - } - - /** - * @param dest The local export path. - * - * @return builder - * - */ - public Builder dest(String dest) { - return dest(Output.of(dest)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(@Nullable Output> names) { - $.names = names; - return this; - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(List names) { - return names(Output.of(names)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(String... names) { - return names(List.of(names)); - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { - $.ociMediaTypes = ociMediaTypes; - return this; - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(Boolean ociMediaTypes) { - return ociMediaTypes(Output.of(ociMediaTypes)); - } - - /** - * @param tar Bundle the output into a tarball layout. - * - * @return builder - * - */ - public Builder tar(@Nullable Output tar) { - $.tar = tar; - return this; - } - - /** - * @param tar Bundle the output into a tarball layout. - * - * @return builder - * - */ - public Builder tar(Boolean tar) { - return tar(Output.of(tar)); - } - - public ExportOCIArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(true).getNullable(); - $.tar = Codegen.booleanProp("tar").output().arg($.tar).def(true).getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java deleted file mode 100644 index df4a773..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportRegistryArgs.java +++ /dev/null @@ -1,577 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.core.internal.Codegen; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class ExportRegistryArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportRegistryArgs Empty = new ExportRegistryArgs(); - - /** - * Attach an arbitrary key/value annotation to the image. - * - */ - @Import(name="annotations") - private @Nullable Output> annotations; - - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Optional>> annotations() { - return Optional.ofNullable(this.annotations); - } - - /** - * The compression type to use. - * - */ - @Import(name="compression") - private @Nullable Output compression; - - /** - * @return The compression type to use. - * - */ - public Optional> compression() { - return Optional.ofNullable(this.compression); - } - - /** - * Compression level from 0 to 22. - * - */ - @Import(name="compressionLevel") - private @Nullable Output compressionLevel; - - /** - * @return Compression level from 0 to 22. - * - */ - public Optional> compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - - /** - * Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - @Import(name="danglingNamePrefix") - private @Nullable Output danglingNamePrefix; - - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - public Optional> danglingNamePrefix() { - return Optional.ofNullable(this.danglingNamePrefix); - } - - /** - * Forcefully apply compression. - * - */ - @Import(name="forceCompression") - private @Nullable Output forceCompression; - - /** - * @return Forcefully apply compression. - * - */ - public Optional> forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - - /** - * Allow pushing to an insecure registry. - * - */ - @Import(name="insecure") - private @Nullable Output insecure; - - /** - * @return Allow pushing to an insecure registry. - * - */ - public Optional> insecure() { - return Optional.ofNullable(this.insecure); - } - - /** - * Add additional canonical name (`name{@literal @}<digest>`). - * - */ - @Import(name="nameCanonical") - private @Nullable Output nameCanonical; - - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - public Optional> nameCanonical() { - return Optional.ofNullable(this.nameCanonical); - } - - /** - * Specify images names to export. This is overridden if tags are already specified. - * - */ - @Import(name="names") - private @Nullable Output> names; - - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public Optional>> names() { - return Optional.ofNullable(this.names); - } - - /** - * Use OCI media types in exporter manifests. - * - */ - @Import(name="ociMediaTypes") - private @Nullable Output ociMediaTypes; - - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional> ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - - /** - * Push after creating the image. Defaults to `true`. - * - */ - @Import(name="push") - private @Nullable Output push; - - /** - * @return Push after creating the image. Defaults to `true`. - * - */ - public Optional> push() { - return Optional.ofNullable(this.push); - } - - /** - * Push image without name. - * - */ - @Import(name="pushByDigest") - private @Nullable Output pushByDigest; - - /** - * @return Push image without name. - * - */ - public Optional> pushByDigest() { - return Optional.ofNullable(this.pushByDigest); - } - - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - @Import(name="store") - private @Nullable Output store; - - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - public Optional> store() { - return Optional.ofNullable(this.store); - } - - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - @Import(name="unpack") - private @Nullable Output unpack; - - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - public Optional> unpack() { - return Optional.ofNullable(this.unpack); - } - - private ExportRegistryArgs() {} - - private ExportRegistryArgs(ExportRegistryArgs $) { - this.annotations = $.annotations; - this.compression = $.compression; - this.compressionLevel = $.compressionLevel; - this.danglingNamePrefix = $.danglingNamePrefix; - this.forceCompression = $.forceCompression; - this.insecure = $.insecure; - this.nameCanonical = $.nameCanonical; - this.names = $.names; - this.ociMediaTypes = $.ociMediaTypes; - this.push = $.push; - this.pushByDigest = $.pushByDigest; - this.store = $.store; - this.unpack = $.unpack; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportRegistryArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportRegistryArgs $; - - public Builder() { - $ = new ExportRegistryArgs(); - } - - public Builder(ExportRegistryArgs defaults) { - $ = new ExportRegistryArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(@Nullable Output> annotations) { - $.annotations = annotations; - return this; - } - - /** - * @param annotations Attach an arbitrary key/value annotation to the image. - * - * @return builder - * - */ - public Builder annotations(Map annotations) { - return annotations(Output.of(annotations)); - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(@Nullable Output compression) { - $.compression = compression; - return this; - } - - /** - * @param compression The compression type to use. - * - * @return builder - * - */ - public Builder compression(CompressionType compression) { - return compression(Output.of(compression)); - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(@Nullable Output compressionLevel) { - $.compressionLevel = compressionLevel; - return this; - } - - /** - * @param compressionLevel Compression level from 0 to 22. - * - * @return builder - * - */ - public Builder compressionLevel(Integer compressionLevel) { - return compressionLevel(Output.of(compressionLevel)); - } - - /** - * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - * @return builder - * - */ - public Builder danglingNamePrefix(@Nullable Output danglingNamePrefix) { - $.danglingNamePrefix = danglingNamePrefix; - return this; - } - - /** - * @param danglingNamePrefix Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - * @return builder - * - */ - public Builder danglingNamePrefix(String danglingNamePrefix) { - return danglingNamePrefix(Output.of(danglingNamePrefix)); - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(@Nullable Output forceCompression) { - $.forceCompression = forceCompression; - return this; - } - - /** - * @param forceCompression Forcefully apply compression. - * - * @return builder - * - */ - public Builder forceCompression(Boolean forceCompression) { - return forceCompression(Output.of(forceCompression)); - } - - /** - * @param insecure Allow pushing to an insecure registry. - * - * @return builder - * - */ - public Builder insecure(@Nullable Output insecure) { - $.insecure = insecure; - return this; - } - - /** - * @param insecure Allow pushing to an insecure registry. - * - * @return builder - * - */ - public Builder insecure(Boolean insecure) { - return insecure(Output.of(insecure)); - } - - /** - * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). - * - * @return builder - * - */ - public Builder nameCanonical(@Nullable Output nameCanonical) { - $.nameCanonical = nameCanonical; - return this; - } - - /** - * @param nameCanonical Add additional canonical name (`name{@literal @}<digest>`). - * - * @return builder - * - */ - public Builder nameCanonical(Boolean nameCanonical) { - return nameCanonical(Output.of(nameCanonical)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(@Nullable Output> names) { - $.names = names; - return this; - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(List names) { - return names(Output.of(names)); - } - - /** - * @param names Specify images names to export. This is overridden if tags are already specified. - * - * @return builder - * - */ - public Builder names(String... names) { - return names(List.of(names)); - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(@Nullable Output ociMediaTypes) { - $.ociMediaTypes = ociMediaTypes; - return this; - } - - /** - * @param ociMediaTypes Use OCI media types in exporter manifests. - * - * @return builder - * - */ - public Builder ociMediaTypes(Boolean ociMediaTypes) { - return ociMediaTypes(Output.of(ociMediaTypes)); - } - - /** - * @param push Push after creating the image. Defaults to `true`. - * - * @return builder - * - */ - public Builder push(@Nullable Output push) { - $.push = push; - return this; - } - - /** - * @param push Push after creating the image. Defaults to `true`. - * - * @return builder - * - */ - public Builder push(Boolean push) { - return push(Output.of(push)); - } - - /** - * @param pushByDigest Push image without name. - * - * @return builder - * - */ - public Builder pushByDigest(@Nullable Output pushByDigest) { - $.pushByDigest = pushByDigest; - return this; - } - - /** - * @param pushByDigest Push image without name. - * - * @return builder - * - */ - public Builder pushByDigest(Boolean pushByDigest) { - return pushByDigest(Output.of(pushByDigest)); - } - - /** - * @param store Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - * @return builder - * - */ - public Builder store(@Nullable Output store) { - $.store = store; - return this; - } - - /** - * @param store Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - * @return builder - * - */ - public Builder store(Boolean store) { - return store(Output.of(store)); - } - - /** - * @param unpack Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - * @return builder - * - */ - public Builder unpack(@Nullable Output unpack) { - $.unpack = unpack; - return this; - } - - /** - * @param unpack Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - * @return builder - * - */ - public Builder unpack(Boolean unpack) { - return unpack(Output.of(unpack)); - } - - public ExportRegistryArgs build() { - $.compression = Codegen.objectProp("compression", CompressionType.class).output().arg($.compression).def(CompressionType.Gzip).getNullable(); - $.compressionLevel = Codegen.integerProp("compressionLevel").output().arg($.compressionLevel).def(0).getNullable(); - $.forceCompression = Codegen.booleanProp("forceCompression").output().arg($.forceCompression).def(false).getNullable(); - $.ociMediaTypes = Codegen.booleanProp("ociMediaTypes").output().arg($.ociMediaTypes).def(false).getNullable(); - $.push = Codegen.booleanProp("push").output().arg($.push).def(true).getNullable(); - $.store = Codegen.booleanProp("store").output().arg($.store).def(true).getNullable(); - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java deleted file mode 100644 index 4d124fd..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/ExportTarArgs.java +++ /dev/null @@ -1,85 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - - -public final class ExportTarArgs extends com.pulumi.resources.ResourceArgs { - - public static final ExportTarArgs Empty = new ExportTarArgs(); - - /** - * Output path. - * - */ - @Import(name="dest", required=true) - private Output dest; - - /** - * @return Output path. - * - */ - public Output dest() { - return this.dest; - } - - private ExportTarArgs() {} - - private ExportTarArgs(ExportTarArgs $) { - this.dest = $.dest; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(ExportTarArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private ExportTarArgs $; - - public Builder() { - $ = new ExportTarArgs(); - } - - public Builder(ExportTarArgs defaults) { - $ = new ExportTarArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param dest Output path. - * - * @return builder - * - */ - public Builder dest(Output dest) { - $.dest = dest; - return this; - } - - /** - * @param dest Output path. - * - * @return builder - * - */ - public Builder dest(String dest) { - return dest(Output.of(dest)); - } - - public ExportTarArgs build() { - if ($.dest == null) { - throw new MissingRequiredPropertyException("ExportTarArgs", "dest"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java deleted file mode 100644 index f00c078..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/Registry.java +++ /dev/null @@ -1,102 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class Registry { - /** - * @return The registry's address (e.g. "docker.io"). - * - */ - private String address; - /** - * @return Password or token for the registry. - * - */ - private @Nullable String password; - /** - * @return Username for the registry. - * - */ - private @Nullable String username; - - private Registry() {} - /** - * @return The registry's address (e.g. "docker.io"). - * - */ - public String address() { - return this.address; - } - /** - * @return Password or token for the registry. - * - */ - public Optional password() { - return Optional.ofNullable(this.password); - } - /** - * @return Username for the registry. - * - */ - public Optional username() { - return Optional.ofNullable(this.username); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(Registry defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String address; - private @Nullable String password; - private @Nullable String username; - public Builder() {} - public Builder(Registry defaults) { - Objects.requireNonNull(defaults); - this.address = defaults.address; - this.password = defaults.password; - this.username = defaults.username; - } - - @CustomType.Setter - public Builder address(String address) { - if (address == null) { - throw new MissingRequiredPropertyException("Registry", "address"); - } - this.address = address; - return this; - } - @CustomType.Setter - public Builder password(@Nullable String password) { - - this.password = password; - return this; - } - @CustomType.Setter - public Builder username(@Nullable String username) { - - this.username = username; - return this; - } - public Registry build() { - final var _resultValue = new Registry(); - _resultValue.address = address; - _resultValue.password = password; - _resultValue.username = username; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java deleted file mode 100644 index 7475b73..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/RegistryArgs.java +++ /dev/null @@ -1,161 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class RegistryArgs extends com.pulumi.resources.ResourceArgs { - - public static final RegistryArgs Empty = new RegistryArgs(); - - /** - * The registry's address (e.g. "docker.io"). - * - */ - @Import(name="address", required=true) - private Output address; - - /** - * @return The registry's address (e.g. "docker.io"). - * - */ - public Output address() { - return this.address; - } - - /** - * Password or token for the registry. - * - */ - @Import(name="password") - private @Nullable Output password; - - /** - * @return Password or token for the registry. - * - */ - public Optional> password() { - return Optional.ofNullable(this.password); - } - - /** - * Username for the registry. - * - */ - @Import(name="username") - private @Nullable Output username; - - /** - * @return Username for the registry. - * - */ - public Optional> username() { - return Optional.ofNullable(this.username); - } - - private RegistryArgs() {} - - private RegistryArgs(RegistryArgs $) { - this.address = $.address; - this.password = $.password; - this.username = $.username; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(RegistryArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private RegistryArgs $; - - public Builder() { - $ = new RegistryArgs(); - } - - public Builder(RegistryArgs defaults) { - $ = new RegistryArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param address The registry's address (e.g. "docker.io"). - * - * @return builder - * - */ - public Builder address(Output address) { - $.address = address; - return this; - } - - /** - * @param address The registry's address (e.g. "docker.io"). - * - * @return builder - * - */ - public Builder address(String address) { - return address(Output.of(address)); - } - - /** - * @param password Password or token for the registry. - * - * @return builder - * - */ - public Builder password(@Nullable Output password) { - $.password = password; - return this; - } - - /** - * @param password Password or token for the registry. - * - * @return builder - * - */ - public Builder password(String password) { - return password(Output.of(password)); - } - - /** - * @param username Username for the registry. - * - * @return builder - * - */ - public Builder username(@Nullable Output username) { - $.username = username; - return this; - } - - /** - * @param username Username for the registry. - * - * @return builder - * - */ - public Builder username(String username) { - return username(Output.of(username)); - } - - public RegistryArgs build() { - if ($.address == null) { - throw new MissingRequiredPropertyException("RegistryArgs", "address"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java deleted file mode 100644 index 788599d..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/inputs/SSHArgs.java +++ /dev/null @@ -1,182 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.inputs; - -import com.pulumi.core.Output; -import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - - -public final class SSHArgs extends com.pulumi.resources.ResourceArgs { - - public static final SSHArgs Empty = new SSHArgs(); - - /** - * Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - */ - @Import(name="id", required=true) - private Output id; - - /** - * @return Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - */ - public Output id() { - return this.id; - } - - /** - * SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - */ - @Import(name="paths") - private @Nullable Output> paths; - - /** - * @return SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - */ - public Optional>> paths() { - return Optional.ofNullable(this.paths); - } - - private SSHArgs() {} - - private SSHArgs(SSHArgs $) { - this.id = $.id; - this.paths = $.paths; - } - - public static Builder builder() { - return new Builder(); - } - public static Builder builder(SSHArgs defaults) { - return new Builder(defaults); - } - - public static final class Builder { - private SSHArgs $; - - public Builder() { - $ = new SSHArgs(); - } - - public Builder(SSHArgs defaults) { - $ = new SSHArgs(Objects.requireNonNull(defaults)); - } - - /** - * @param id Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - * @return builder - * - */ - public Builder id(Output id) { - $.id = id; - return this; - } - - /** - * @param id Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - * @return builder - * - */ - public Builder id(String id) { - return id(Output.of(id)); - } - - /** - * @param paths SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - * @return builder - * - */ - public Builder paths(@Nullable Output> paths) { - $.paths = paths; - return this; - } - - /** - * @param paths SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - * @return builder - * - */ - public Builder paths(List paths) { - return paths(Output.of(paths)); - } - - /** - * @param paths SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - * @return builder - * - */ - public Builder paths(String... paths) { - return paths(List.of(paths)); - } - - public SSHArgs build() { - if ($.id == null) { - throw new MissingRequiredPropertyException("SSHArgs", "id"); - } - return $; - } - } - -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java deleted file mode 100644 index 71713b3..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuildContext.java +++ /dev/null @@ -1,106 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.outputs.Context; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Map; -import java.util.Objects; -import javax.annotation.Nullable; - -@CustomType -public final class BuildContext { - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - private String location; - /** - * @return Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - */ - private @Nullable Map named; - - private BuildContext() {} - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - public String location() { - return this.location; - } - /** - * @return Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - * - */ - public Map named() { - return this.named == null ? Map.of() : this.named; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(BuildContext defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String location; - private @Nullable Map named; - public Builder() {} - public Builder(BuildContext defaults) { - Objects.requireNonNull(defaults); - this.location = defaults.location; - this.named = defaults.named; - } - - @CustomType.Setter - public Builder location(String location) { - if (location == null) { - throw new MissingRequiredPropertyException("BuildContext", "location"); - } - this.location = location; - return this; - } - @CustomType.Setter - public Builder named(@Nullable Map named) { - - this.named = named; - return this; - } - public BuildContext build() { - final var _resultValue = new BuildContext(); - _resultValue.location = location; - _resultValue.named = named; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java deleted file mode 100644 index dbfa0ad..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/BuilderConfig.java +++ /dev/null @@ -1,67 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class BuilderConfig { - /** - * @return Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - */ - private @Nullable String name; - - private BuilderConfig() {} - /** - * @return Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - * - */ - public Optional name() { - return Optional.ofNullable(this.name); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(BuilderConfig defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String name; - public Builder() {} - public Builder(BuilderConfig defaults) { - Objects.requireNonNull(defaults); - this.name = defaults.name; - } - - @CustomType.Setter - public Builder name(@Nullable String name) { - - this.name = name; - return this; - } - public BuilderConfig build() { - final var _resultValue = new BuilderConfig(); - _resultValue.name = name; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java deleted file mode 100644 index dfc24b8..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFrom.java +++ /dev/null @@ -1,199 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.outputs.CacheFromAzureBlob; -import com.pulumi.dockerbuild.outputs.CacheFromGitHubActions; -import com.pulumi.dockerbuild.outputs.CacheFromLocal; -import com.pulumi.dockerbuild.outputs.CacheFromRegistry; -import com.pulumi.dockerbuild.outputs.CacheFromS3; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheFrom { - /** - * @return Upload build caches to Azure's blob storage service. - * - */ - private @Nullable CacheFromAzureBlob azblob; - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - private @Nullable Boolean disabled; - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - private @Nullable CacheFromGitHubActions gha; - /** - * @return A simple backend which caches images on your local filesystem. - * - */ - private @Nullable CacheFromLocal local; - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - */ - private @Nullable String raw; - /** - * @return Upload build caches to remote registries. - * - */ - private @Nullable CacheFromRegistry registry; - /** - * @return Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - */ - private @Nullable CacheFromS3 s3; - - private CacheFrom() {} - /** - * @return Upload build caches to Azure's blob storage service. - * - */ - public Optional azblob() { - return Optional.ofNullable(this.azblob); - } - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional disabled() { - return Optional.ofNullable(this.disabled); - } - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - public Optional gha() { - return Optional.ofNullable(this.gha); - } - /** - * @return A simple backend which caches images on your local filesystem. - * - */ - public Optional local() { - return Optional.ofNullable(this.local); - } - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - * - */ - public Optional raw() { - return Optional.ofNullable(this.raw); - } - /** - * @return Upload build caches to remote registries. - * - */ - public Optional registry() { - return Optional.ofNullable(this.registry); - } - /** - * @return Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - * - */ - public Optional s3() { - return Optional.ofNullable(this.s3); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFrom defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable CacheFromAzureBlob azblob; - private @Nullable Boolean disabled; - private @Nullable CacheFromGitHubActions gha; - private @Nullable CacheFromLocal local; - private @Nullable String raw; - private @Nullable CacheFromRegistry registry; - private @Nullable CacheFromS3 s3; - public Builder() {} - public Builder(CacheFrom defaults) { - Objects.requireNonNull(defaults); - this.azblob = defaults.azblob; - this.disabled = defaults.disabled; - this.gha = defaults.gha; - this.local = defaults.local; - this.raw = defaults.raw; - this.registry = defaults.registry; - this.s3 = defaults.s3; - } - - @CustomType.Setter - public Builder azblob(@Nullable CacheFromAzureBlob azblob) { - - this.azblob = azblob; - return this; - } - @CustomType.Setter - public Builder disabled(@Nullable Boolean disabled) { - - this.disabled = disabled; - return this; - } - @CustomType.Setter - public Builder gha(@Nullable CacheFromGitHubActions gha) { - - this.gha = gha; - return this; - } - @CustomType.Setter - public Builder local(@Nullable CacheFromLocal local) { - - this.local = local; - return this; - } - @CustomType.Setter - public Builder raw(@Nullable String raw) { - - this.raw = raw; - return this; - } - @CustomType.Setter - public Builder registry(@Nullable CacheFromRegistry registry) { - - this.registry = registry; - return this; - } - @CustomType.Setter - public Builder s3(@Nullable CacheFromS3 s3) { - - this.s3 = s3; - return this; - } - public CacheFrom build() { - final var _resultValue = new CacheFrom(); - _resultValue.azblob = azblob; - _resultValue.disabled = disabled; - _resultValue.gha = gha; - _resultValue.local = local; - _resultValue.raw = raw; - _resultValue.registry = registry; - _resultValue.s3 = s3; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java deleted file mode 100644 index 92a25a9..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromAzureBlob.java +++ /dev/null @@ -1,102 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheFromAzureBlob { - /** - * @return Base URL of the storage account. - * - */ - private @Nullable String accountUrl; - /** - * @return The name of the cache image. - * - */ - private String name; - /** - * @return Blob storage account key. - * - */ - private @Nullable String secretAccessKey; - - private CacheFromAzureBlob() {} - /** - * @return Base URL of the storage account. - * - */ - public Optional accountUrl() { - return Optional.ofNullable(this.accountUrl); - } - /** - * @return The name of the cache image. - * - */ - public String name() { - return this.name; - } - /** - * @return Blob storage account key. - * - */ - public Optional secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFromAzureBlob defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String accountUrl; - private String name; - private @Nullable String secretAccessKey; - public Builder() {} - public Builder(CacheFromAzureBlob defaults) { - Objects.requireNonNull(defaults); - this.accountUrl = defaults.accountUrl; - this.name = defaults.name; - this.secretAccessKey = defaults.secretAccessKey; - } - - @CustomType.Setter - public Builder accountUrl(@Nullable String accountUrl) { - - this.accountUrl = accountUrl; - return this; - } - @CustomType.Setter - public Builder name(String name) { - if (name == null) { - throw new MissingRequiredPropertyException("CacheFromAzureBlob", "name"); - } - this.name = name; - return this; - } - @CustomType.Setter - public Builder secretAccessKey(@Nullable String secretAccessKey) { - - this.secretAccessKey = secretAccessKey; - return this; - } - public CacheFromAzureBlob build() { - final var _resultValue = new CacheFromAzureBlob(); - _resultValue.accountUrl = accountUrl; - _resultValue.name = name; - _resultValue.secretAccessKey = secretAccessKey; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java deleted file mode 100644 index 3ecd007..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromGitHubActions.java +++ /dev/null @@ -1,123 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheFromGitHubActions { - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - private @Nullable String scope; - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - private @Nullable String token; - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - private @Nullable String url; - - private CacheFromGitHubActions() {} - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - public Optional scope() { - return Optional.ofNullable(this.scope); - } - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional token() { - return Optional.ofNullable(this.token); - } - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional url() { - return Optional.ofNullable(this.url); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFromGitHubActions defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String scope; - private @Nullable String token; - private @Nullable String url; - public Builder() {} - public Builder(CacheFromGitHubActions defaults) { - Objects.requireNonNull(defaults); - this.scope = defaults.scope; - this.token = defaults.token; - this.url = defaults.url; - } - - @CustomType.Setter - public Builder scope(@Nullable String scope) { - - this.scope = scope; - return this; - } - @CustomType.Setter - public Builder token(@Nullable String token) { - - this.token = token; - return this; - } - @CustomType.Setter - public Builder url(@Nullable String url) { - - this.url = url; - return this; - } - public CacheFromGitHubActions build() { - final var _resultValue = new CacheFromGitHubActions(); - _resultValue.scope = scope; - _resultValue.token = token; - _resultValue.url = url; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java deleted file mode 100644 index cd1362d..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromLocal.java +++ /dev/null @@ -1,81 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheFromLocal { - /** - * @return Digest of manifest to import. - * - */ - private @Nullable String digest; - /** - * @return Path of the local directory where cache gets imported from. - * - */ - private String src; - - private CacheFromLocal() {} - /** - * @return Digest of manifest to import. - * - */ - public Optional digest() { - return Optional.ofNullable(this.digest); - } - /** - * @return Path of the local directory where cache gets imported from. - * - */ - public String src() { - return this.src; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFromLocal defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String digest; - private String src; - public Builder() {} - public Builder(CacheFromLocal defaults) { - Objects.requireNonNull(defaults); - this.digest = defaults.digest; - this.src = defaults.src; - } - - @CustomType.Setter - public Builder digest(@Nullable String digest) { - - this.digest = digest; - return this; - } - @CustomType.Setter - public Builder src(String src) { - if (src == null) { - throw new MissingRequiredPropertyException("CacheFromLocal", "src"); - } - this.src = src; - return this; - } - public CacheFromLocal build() { - final var _resultValue = new CacheFromLocal(); - _resultValue.digest = digest; - _resultValue.src = src; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java deleted file mode 100644 index 5202fd2..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromRegistry.java +++ /dev/null @@ -1,58 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - -@CustomType -public final class CacheFromRegistry { - /** - * @return Fully qualified name of the cache image to import. - * - */ - private String ref; - - private CacheFromRegistry() {} - /** - * @return Fully qualified name of the cache image to import. - * - */ - public String ref() { - return this.ref; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFromRegistry defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String ref; - public Builder() {} - public Builder(CacheFromRegistry defaults) { - Objects.requireNonNull(defaults); - this.ref = defaults.ref; - } - - @CustomType.Setter - public Builder ref(String ref) { - if (ref == null) { - throw new MissingRequiredPropertyException("CacheFromRegistry", "ref"); - } - this.ref = ref; - return this; - } - public CacheFromRegistry build() { - final var _resultValue = new CacheFromRegistry(); - _resultValue.ref = ref; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java deleted file mode 100644 index 230713b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheFromS3.java +++ /dev/null @@ -1,252 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheFromS3 { - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - private @Nullable String accessKeyId; - /** - * @return Prefix to prepend to blob filenames. - * - */ - private @Nullable String blobsPrefix; - /** - * @return Name of the S3 bucket. - * - */ - private String bucket; - /** - * @return Endpoint of the S3 bucket. - * - */ - private @Nullable String endpointUrl; - /** - * @return Prefix to prepend on manifest filenames. - * - */ - private @Nullable String manifestsPrefix; - /** - * @return Name of the cache image. - * - */ - private @Nullable String name; - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - private String region; - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - private @Nullable String secretAccessKey; - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - private @Nullable String sessionToken; - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - private @Nullable Boolean usePathStyle; - - private CacheFromS3() {} - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - public Optional accessKeyId() { - return Optional.ofNullable(this.accessKeyId); - } - /** - * @return Prefix to prepend to blob filenames. - * - */ - public Optional blobsPrefix() { - return Optional.ofNullable(this.blobsPrefix); - } - /** - * @return Name of the S3 bucket. - * - */ - public String bucket() { - return this.bucket; - } - /** - * @return Endpoint of the S3 bucket. - * - */ - public Optional endpointUrl() { - return Optional.ofNullable(this.endpointUrl); - } - /** - * @return Prefix to prepend on manifest filenames. - * - */ - public Optional manifestsPrefix() { - return Optional.ofNullable(this.manifestsPrefix); - } - /** - * @return Name of the cache image. - * - */ - public Optional name() { - return Optional.ofNullable(this.name); - } - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - public String region() { - return this.region; - } - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - public Optional secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - public Optional sessionToken() { - return Optional.ofNullable(this.sessionToken); - } - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - public Optional usePathStyle() { - return Optional.ofNullable(this.usePathStyle); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheFromS3 defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String accessKeyId; - private @Nullable String blobsPrefix; - private String bucket; - private @Nullable String endpointUrl; - private @Nullable String manifestsPrefix; - private @Nullable String name; - private String region; - private @Nullable String secretAccessKey; - private @Nullable String sessionToken; - private @Nullable Boolean usePathStyle; - public Builder() {} - public Builder(CacheFromS3 defaults) { - Objects.requireNonNull(defaults); - this.accessKeyId = defaults.accessKeyId; - this.blobsPrefix = defaults.blobsPrefix; - this.bucket = defaults.bucket; - this.endpointUrl = defaults.endpointUrl; - this.manifestsPrefix = defaults.manifestsPrefix; - this.name = defaults.name; - this.region = defaults.region; - this.secretAccessKey = defaults.secretAccessKey; - this.sessionToken = defaults.sessionToken; - this.usePathStyle = defaults.usePathStyle; - } - - @CustomType.Setter - public Builder accessKeyId(@Nullable String accessKeyId) { - - this.accessKeyId = accessKeyId; - return this; - } - @CustomType.Setter - public Builder blobsPrefix(@Nullable String blobsPrefix) { - - this.blobsPrefix = blobsPrefix; - return this; - } - @CustomType.Setter - public Builder bucket(String bucket) { - if (bucket == null) { - throw new MissingRequiredPropertyException("CacheFromS3", "bucket"); - } - this.bucket = bucket; - return this; - } - @CustomType.Setter - public Builder endpointUrl(@Nullable String endpointUrl) { - - this.endpointUrl = endpointUrl; - return this; - } - @CustomType.Setter - public Builder manifestsPrefix(@Nullable String manifestsPrefix) { - - this.manifestsPrefix = manifestsPrefix; - return this; - } - @CustomType.Setter - public Builder name(@Nullable String name) { - - this.name = name; - return this; - } - @CustomType.Setter - public Builder region(String region) { - if (region == null) { - throw new MissingRequiredPropertyException("CacheFromS3", "region"); - } - this.region = region; - return this; - } - @CustomType.Setter - public Builder secretAccessKey(@Nullable String secretAccessKey) { - - this.secretAccessKey = secretAccessKey; - return this; - } - @CustomType.Setter - public Builder sessionToken(@Nullable String sessionToken) { - - this.sessionToken = sessionToken; - return this; - } - @CustomType.Setter - public Builder usePathStyle(@Nullable Boolean usePathStyle) { - - this.usePathStyle = usePathStyle; - return this; - } - public CacheFromS3 build() { - final var _resultValue = new CacheFromS3(); - _resultValue.accessKeyId = accessKeyId; - _resultValue.blobsPrefix = blobsPrefix; - _resultValue.bucket = bucket; - _resultValue.endpointUrl = endpointUrl; - _resultValue.manifestsPrefix = manifestsPrefix; - _resultValue.name = name; - _resultValue.region = region; - _resultValue.secretAccessKey = secretAccessKey; - _resultValue.sessionToken = sessionToken; - _resultValue.usePathStyle = usePathStyle; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java deleted file mode 100644 index 1a87645..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheTo.java +++ /dev/null @@ -1,225 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.outputs.CacheToAzureBlob; -import com.pulumi.dockerbuild.outputs.CacheToGitHubActions; -import com.pulumi.dockerbuild.outputs.CacheToInline; -import com.pulumi.dockerbuild.outputs.CacheToLocal; -import com.pulumi.dockerbuild.outputs.CacheToRegistry; -import com.pulumi.dockerbuild.outputs.CacheToS3; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheTo { - /** - * @return Push cache to Azure's blob storage service. - * - */ - private @Nullable CacheToAzureBlob azblob; - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - private @Nullable Boolean disabled; - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - private @Nullable CacheToGitHubActions gha; - /** - * @return The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - */ - private @Nullable CacheToInline inline; - /** - * @return A simple backend which caches imagines on your local filesystem. - * - */ - private @Nullable CacheToLocal local; - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - */ - private @Nullable String raw; - /** - * @return Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - */ - private @Nullable CacheToRegistry registry; - /** - * @return Push cache to AWS S3 or S3-compatible services such as MinIO. - * - */ - private @Nullable CacheToS3 s3; - - private CacheTo() {} - /** - * @return Push cache to Azure's blob storage service. - * - */ - public Optional azblob() { - return Optional.ofNullable(this.azblob); - } - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional disabled() { - return Optional.ofNullable(this.disabled); - } - /** - * @return Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - * - */ - public Optional gha() { - return Optional.ofNullable(this.gha); - } - /** - * @return The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - * - */ - public Optional inline() { - return Optional.ofNullable(this.inline); - } - /** - * @return A simple backend which caches imagines on your local filesystem. - * - */ - public Optional local() { - return Optional.ofNullable(this.local); - } - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - * - */ - public Optional raw() { - return Optional.ofNullable(this.raw); - } - /** - * @return Push caches to remote registries. Incompatible with the `docker` build - * driver. - * - */ - public Optional registry() { - return Optional.ofNullable(this.registry); - } - /** - * @return Push cache to AWS S3 or S3-compatible services such as MinIO. - * - */ - public Optional s3() { - return Optional.ofNullable(this.s3); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheTo defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable CacheToAzureBlob azblob; - private @Nullable Boolean disabled; - private @Nullable CacheToGitHubActions gha; - private @Nullable CacheToInline inline; - private @Nullable CacheToLocal local; - private @Nullable String raw; - private @Nullable CacheToRegistry registry; - private @Nullable CacheToS3 s3; - public Builder() {} - public Builder(CacheTo defaults) { - Objects.requireNonNull(defaults); - this.azblob = defaults.azblob; - this.disabled = defaults.disabled; - this.gha = defaults.gha; - this.inline = defaults.inline; - this.local = defaults.local; - this.raw = defaults.raw; - this.registry = defaults.registry; - this.s3 = defaults.s3; - } - - @CustomType.Setter - public Builder azblob(@Nullable CacheToAzureBlob azblob) { - - this.azblob = azblob; - return this; - } - @CustomType.Setter - public Builder disabled(@Nullable Boolean disabled) { - - this.disabled = disabled; - return this; - } - @CustomType.Setter - public Builder gha(@Nullable CacheToGitHubActions gha) { - - this.gha = gha; - return this; - } - @CustomType.Setter - public Builder inline(@Nullable CacheToInline inline) { - - this.inline = inline; - return this; - } - @CustomType.Setter - public Builder local(@Nullable CacheToLocal local) { - - this.local = local; - return this; - } - @CustomType.Setter - public Builder raw(@Nullable String raw) { - - this.raw = raw; - return this; - } - @CustomType.Setter - public Builder registry(@Nullable CacheToRegistry registry) { - - this.registry = registry; - return this; - } - @CustomType.Setter - public Builder s3(@Nullable CacheToS3 s3) { - - this.s3 = s3; - return this; - } - public CacheTo build() { - final var _resultValue = new CacheTo(); - _resultValue.azblob = azblob; - _resultValue.disabled = disabled; - _resultValue.gha = gha; - _resultValue.inline = inline; - _resultValue.local = local; - _resultValue.raw = raw; - _resultValue.registry = registry; - _resultValue.s3 = s3; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java deleted file mode 100644 index 1c79892..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToAzureBlob.java +++ /dev/null @@ -1,146 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheToAzureBlob { - /** - * @return Base URL of the storage account. - * - */ - private @Nullable String accountUrl; - /** - * @return Ignore errors caused by failed cache exports. - * - */ - private @Nullable Boolean ignoreError; - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - private @Nullable CacheMode mode; - /** - * @return The name of the cache image. - * - */ - private String name; - /** - * @return Blob storage account key. - * - */ - private @Nullable String secretAccessKey; - - private CacheToAzureBlob() {} - /** - * @return Base URL of the storage account. - * - */ - public Optional accountUrl() { - return Optional.ofNullable(this.accountUrl); - } - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional mode() { - return Optional.ofNullable(this.mode); - } - /** - * @return The name of the cache image. - * - */ - public String name() { - return this.name; - } - /** - * @return Blob storage account key. - * - */ - public Optional secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToAzureBlob defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String accountUrl; - private @Nullable Boolean ignoreError; - private @Nullable CacheMode mode; - private String name; - private @Nullable String secretAccessKey; - public Builder() {} - public Builder(CacheToAzureBlob defaults) { - Objects.requireNonNull(defaults); - this.accountUrl = defaults.accountUrl; - this.ignoreError = defaults.ignoreError; - this.mode = defaults.mode; - this.name = defaults.name; - this.secretAccessKey = defaults.secretAccessKey; - } - - @CustomType.Setter - public Builder accountUrl(@Nullable String accountUrl) { - - this.accountUrl = accountUrl; - return this; - } - @CustomType.Setter - public Builder ignoreError(@Nullable Boolean ignoreError) { - - this.ignoreError = ignoreError; - return this; - } - @CustomType.Setter - public Builder mode(@Nullable CacheMode mode) { - - this.mode = mode; - return this; - } - @CustomType.Setter - public Builder name(String name) { - if (name == null) { - throw new MissingRequiredPropertyException("CacheToAzureBlob", "name"); - } - this.name = name; - return this; - } - @CustomType.Setter - public Builder secretAccessKey(@Nullable String secretAccessKey) { - - this.secretAccessKey = secretAccessKey; - return this; - } - public CacheToAzureBlob build() { - final var _resultValue = new CacheToAzureBlob(); - _resultValue.accountUrl = accountUrl; - _resultValue.ignoreError = ignoreError; - _resultValue.mode = mode; - _resultValue.name = name; - _resultValue.secretAccessKey = secretAccessKey; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java deleted file mode 100644 index a101219..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToGitHubActions.java +++ /dev/null @@ -1,167 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CacheMode; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheToGitHubActions { - /** - * @return Ignore errors caused by failed cache exports. - * - */ - private @Nullable Boolean ignoreError; - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - private @Nullable CacheMode mode; - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - private @Nullable String scope; - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - private @Nullable String token; - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - private @Nullable String url; - - private CacheToGitHubActions() {} - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional mode() { - return Optional.ofNullable(this.mode); - } - /** - * @return The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - * - */ - public Optional scope() { - return Optional.ofNullable(this.scope); - } - /** - * @return The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional token() { - return Optional.ofNullable(this.token); - } - /** - * @return The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - * - */ - public Optional url() { - return Optional.ofNullable(this.url); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToGitHubActions defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable Boolean ignoreError; - private @Nullable CacheMode mode; - private @Nullable String scope; - private @Nullable String token; - private @Nullable String url; - public Builder() {} - public Builder(CacheToGitHubActions defaults) { - Objects.requireNonNull(defaults); - this.ignoreError = defaults.ignoreError; - this.mode = defaults.mode; - this.scope = defaults.scope; - this.token = defaults.token; - this.url = defaults.url; - } - - @CustomType.Setter - public Builder ignoreError(@Nullable Boolean ignoreError) { - - this.ignoreError = ignoreError; - return this; - } - @CustomType.Setter - public Builder mode(@Nullable CacheMode mode) { - - this.mode = mode; - return this; - } - @CustomType.Setter - public Builder scope(@Nullable String scope) { - - this.scope = scope; - return this; - } - @CustomType.Setter - public Builder token(@Nullable String token) { - - this.token = token; - return this; - } - @CustomType.Setter - public Builder url(@Nullable String url) { - - this.url = url; - return this; - } - public CacheToGitHubActions build() { - final var _resultValue = new CacheToGitHubActions(); - _resultValue.ignoreError = ignoreError; - _resultValue.mode = mode; - _resultValue.scope = scope; - _resultValue.token = token; - _resultValue.url = url; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java deleted file mode 100644 index 509470b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToInline.java +++ /dev/null @@ -1,32 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import java.util.Objects; - -@CustomType -public final class CacheToInline { - private CacheToInline() {} - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToInline defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - public Builder() {} - public Builder(CacheToInline defaults) { - Objects.requireNonNull(defaults); - } - - public CacheToInline build() { - final var _resultValue = new CacheToInline(); - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java deleted file mode 100644 index 2711ae9..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToLocal.java +++ /dev/null @@ -1,169 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.dockerbuild.enums.CompressionType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheToLocal { - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return Path of the local directory to export the cache. - * - */ - private String dest; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Ignore errors caused by failed cache exports. - * - */ - private @Nullable Boolean ignoreError; - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - private @Nullable CacheMode mode; - - private CacheToLocal() {} - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return Path of the local directory to export the cache. - * - */ - public String dest() { - return this.dest; - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional mode() { - return Optional.ofNullable(this.mode); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToLocal defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private String dest; - private @Nullable Boolean forceCompression; - private @Nullable Boolean ignoreError; - private @Nullable CacheMode mode; - public Builder() {} - public Builder(CacheToLocal defaults) { - Objects.requireNonNull(defaults); - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.dest = defaults.dest; - this.forceCompression = defaults.forceCompression; - this.ignoreError = defaults.ignoreError; - this.mode = defaults.mode; - } - - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder dest(String dest) { - if (dest == null) { - throw new MissingRequiredPropertyException("CacheToLocal", "dest"); - } - this.dest = dest; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder ignoreError(@Nullable Boolean ignoreError) { - - this.ignoreError = ignoreError; - return this; - } - @CustomType.Setter - public Builder mode(@Nullable CacheMode mode) { - - this.mode = mode; - return this; - } - public CacheToLocal build() { - final var _resultValue = new CacheToLocal(); - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.dest = dest; - _resultValue.forceCompression = forceCompression; - _resultValue.ignoreError = ignoreError; - _resultValue.mode = mode; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java deleted file mode 100644 index 0ceb1c0..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToRegistry.java +++ /dev/null @@ -1,225 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.dockerbuild.enums.CompressionType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheToRegistry { - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Ignore errors caused by failed cache exports. - * - */ - private @Nullable Boolean ignoreError; - /** - * @return Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - */ - private @Nullable Boolean imageManifest; - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - private @Nullable CacheMode mode; - /** - * @return Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - */ - private @Nullable Boolean ociMediaTypes; - /** - * @return Fully qualified name of the cache image to import. - * - */ - private String ref; - - private CacheToRegistry() {} - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - /** - * @return Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - * - */ - public Optional imageManifest() { - return Optional.ofNullable(this.imageManifest); - } - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional mode() { - return Optional.ofNullable(this.mode); - } - /** - * @return Whether to use OCI media types in exported manifests. Defaults to - * `true`. - * - */ - public Optional ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - /** - * @return Fully qualified name of the cache image to import. - * - */ - public String ref() { - return this.ref; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToRegistry defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private @Nullable Boolean forceCompression; - private @Nullable Boolean ignoreError; - private @Nullable Boolean imageManifest; - private @Nullable CacheMode mode; - private @Nullable Boolean ociMediaTypes; - private String ref; - public Builder() {} - public Builder(CacheToRegistry defaults) { - Objects.requireNonNull(defaults); - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.forceCompression = defaults.forceCompression; - this.ignoreError = defaults.ignoreError; - this.imageManifest = defaults.imageManifest; - this.mode = defaults.mode; - this.ociMediaTypes = defaults.ociMediaTypes; - this.ref = defaults.ref; - } - - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder ignoreError(@Nullable Boolean ignoreError) { - - this.ignoreError = ignoreError; - return this; - } - @CustomType.Setter - public Builder imageManifest(@Nullable Boolean imageManifest) { - - this.imageManifest = imageManifest; - return this; - } - @CustomType.Setter - public Builder mode(@Nullable CacheMode mode) { - - this.mode = mode; - return this; - } - @CustomType.Setter - public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { - - this.ociMediaTypes = ociMediaTypes; - return this; - } - @CustomType.Setter - public Builder ref(String ref) { - if (ref == null) { - throw new MissingRequiredPropertyException("CacheToRegistry", "ref"); - } - this.ref = ref; - return this; - } - public CacheToRegistry build() { - final var _resultValue = new CacheToRegistry(); - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.forceCompression = forceCompression; - _resultValue.ignoreError = ignoreError; - _resultValue.imageManifest = imageManifest; - _resultValue.mode = mode; - _resultValue.ociMediaTypes = ociMediaTypes; - _resultValue.ref = ref; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java deleted file mode 100644 index c2e21e4..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/CacheToS3.java +++ /dev/null @@ -1,295 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CacheMode; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class CacheToS3 { - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - private @Nullable String accessKeyId; - /** - * @return Prefix to prepend to blob filenames. - * - */ - private @Nullable String blobsPrefix; - /** - * @return Name of the S3 bucket. - * - */ - private String bucket; - /** - * @return Endpoint of the S3 bucket. - * - */ - private @Nullable String endpointUrl; - /** - * @return Ignore errors caused by failed cache exports. - * - */ - private @Nullable Boolean ignoreError; - /** - * @return Prefix to prepend on manifest filenames. - * - */ - private @Nullable String manifestsPrefix; - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - private @Nullable CacheMode mode; - /** - * @return Name of the cache image. - * - */ - private @Nullable String name; - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - private String region; - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - private @Nullable String secretAccessKey; - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - private @Nullable String sessionToken; - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - private @Nullable Boolean usePathStyle; - - private CacheToS3() {} - /** - * @return Defaults to `$AWS_ACCESS_KEY_ID`. - * - */ - public Optional accessKeyId() { - return Optional.ofNullable(this.accessKeyId); - } - /** - * @return Prefix to prepend to blob filenames. - * - */ - public Optional blobsPrefix() { - return Optional.ofNullable(this.blobsPrefix); - } - /** - * @return Name of the S3 bucket. - * - */ - public String bucket() { - return this.bucket; - } - /** - * @return Endpoint of the S3 bucket. - * - */ - public Optional endpointUrl() { - return Optional.ofNullable(this.endpointUrl); - } - /** - * @return Ignore errors caused by failed cache exports. - * - */ - public Optional ignoreError() { - return Optional.ofNullable(this.ignoreError); - } - /** - * @return Prefix to prepend on manifest filenames. - * - */ - public Optional manifestsPrefix() { - return Optional.ofNullable(this.manifestsPrefix); - } - /** - * @return The cache mode to use. Defaults to `min`. - * - */ - public Optional mode() { - return Optional.ofNullable(this.mode); - } - /** - * @return Name of the cache image. - * - */ - public Optional name() { - return Optional.ofNullable(this.name); - } - /** - * @return The geographic location of the bucket. Defaults to `$AWS_REGION`. - * - */ - public String region() { - return this.region; - } - /** - * @return Defaults to `$AWS_SECRET_ACCESS_KEY`. - * - */ - public Optional secretAccessKey() { - return Optional.ofNullable(this.secretAccessKey); - } - /** - * @return Defaults to `$AWS_SESSION_TOKEN`. - * - */ - public Optional sessionToken() { - return Optional.ofNullable(this.sessionToken); - } - /** - * @return Uses `bucket` in the URL instead of hostname when `true`. - * - */ - public Optional usePathStyle() { - return Optional.ofNullable(this.usePathStyle); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(CacheToS3 defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String accessKeyId; - private @Nullable String blobsPrefix; - private String bucket; - private @Nullable String endpointUrl; - private @Nullable Boolean ignoreError; - private @Nullable String manifestsPrefix; - private @Nullable CacheMode mode; - private @Nullable String name; - private String region; - private @Nullable String secretAccessKey; - private @Nullable String sessionToken; - private @Nullable Boolean usePathStyle; - public Builder() {} - public Builder(CacheToS3 defaults) { - Objects.requireNonNull(defaults); - this.accessKeyId = defaults.accessKeyId; - this.blobsPrefix = defaults.blobsPrefix; - this.bucket = defaults.bucket; - this.endpointUrl = defaults.endpointUrl; - this.ignoreError = defaults.ignoreError; - this.manifestsPrefix = defaults.manifestsPrefix; - this.mode = defaults.mode; - this.name = defaults.name; - this.region = defaults.region; - this.secretAccessKey = defaults.secretAccessKey; - this.sessionToken = defaults.sessionToken; - this.usePathStyle = defaults.usePathStyle; - } - - @CustomType.Setter - public Builder accessKeyId(@Nullable String accessKeyId) { - - this.accessKeyId = accessKeyId; - return this; - } - @CustomType.Setter - public Builder blobsPrefix(@Nullable String blobsPrefix) { - - this.blobsPrefix = blobsPrefix; - return this; - } - @CustomType.Setter - public Builder bucket(String bucket) { - if (bucket == null) { - throw new MissingRequiredPropertyException("CacheToS3", "bucket"); - } - this.bucket = bucket; - return this; - } - @CustomType.Setter - public Builder endpointUrl(@Nullable String endpointUrl) { - - this.endpointUrl = endpointUrl; - return this; - } - @CustomType.Setter - public Builder ignoreError(@Nullable Boolean ignoreError) { - - this.ignoreError = ignoreError; - return this; - } - @CustomType.Setter - public Builder manifestsPrefix(@Nullable String manifestsPrefix) { - - this.manifestsPrefix = manifestsPrefix; - return this; - } - @CustomType.Setter - public Builder mode(@Nullable CacheMode mode) { - - this.mode = mode; - return this; - } - @CustomType.Setter - public Builder name(@Nullable String name) { - - this.name = name; - return this; - } - @CustomType.Setter - public Builder region(String region) { - if (region == null) { - throw new MissingRequiredPropertyException("CacheToS3", "region"); - } - this.region = region; - return this; - } - @CustomType.Setter - public Builder secretAccessKey(@Nullable String secretAccessKey) { - - this.secretAccessKey = secretAccessKey; - return this; - } - @CustomType.Setter - public Builder sessionToken(@Nullable String sessionToken) { - - this.sessionToken = sessionToken; - return this; - } - @CustomType.Setter - public Builder usePathStyle(@Nullable Boolean usePathStyle) { - - this.usePathStyle = usePathStyle; - return this; - } - public CacheToS3 build() { - final var _resultValue = new CacheToS3(); - _resultValue.accessKeyId = accessKeyId; - _resultValue.blobsPrefix = blobsPrefix; - _resultValue.bucket = bucket; - _resultValue.endpointUrl = endpointUrl; - _resultValue.ignoreError = ignoreError; - _resultValue.manifestsPrefix = manifestsPrefix; - _resultValue.mode = mode; - _resultValue.name = name; - _resultValue.region = region; - _resultValue.secretAccessKey = secretAccessKey; - _resultValue.sessionToken = sessionToken; - _resultValue.usePathStyle = usePathStyle; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java deleted file mode 100644 index 829614a..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Context.java +++ /dev/null @@ -1,72 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - -@CustomType -public final class Context { - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - private String location; - - private Context() {} - /** - * @return Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - * - */ - public String location() { - return this.location; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(Context defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String location; - public Builder() {} - public Builder(Context defaults) { - Objects.requireNonNull(defaults); - this.location = defaults.location; - } - - @CustomType.Setter - public Builder location(String location) { - if (location == null) { - throw new MissingRequiredPropertyException("Context", "location"); - } - this.location = location; - return this; - } - public Context build() { - final var _resultValue = new Context(); - _resultValue.location = location; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java deleted file mode 100644 index a47d107..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Dockerfile.java +++ /dev/null @@ -1,98 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class Dockerfile { - /** - * @return Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - */ - private @Nullable String inline; - /** - * @return Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - */ - private @Nullable String location; - - private Dockerfile() {} - /** - * @return Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - * - */ - public Optional inline() { - return Optional.ofNullable(this.inline); - } - /** - * @return Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - * - */ - public Optional location() { - return Optional.ofNullable(this.location); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(Dockerfile defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable String inline; - private @Nullable String location; - public Builder() {} - public Builder(Dockerfile defaults) { - Objects.requireNonNull(defaults); - this.inline = defaults.inline; - this.location = defaults.location; - } - - @CustomType.Setter - public Builder inline(@Nullable String inline) { - - this.inline = inline; - return this; - } - @CustomType.Setter - public Builder location(@Nullable String location) { - - this.location = location; - return this; - } - public Dockerfile build() { - final var _resultValue = new Dockerfile(); - _resultValue.inline = inline; - _resultValue.location = location; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java deleted file mode 100644 index 8a6a167..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Export.java +++ /dev/null @@ -1,237 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.outputs.ExportCacheOnly; -import com.pulumi.dockerbuild.outputs.ExportDocker; -import com.pulumi.dockerbuild.outputs.ExportImage; -import com.pulumi.dockerbuild.outputs.ExportLocal; -import com.pulumi.dockerbuild.outputs.ExportOCI; -import com.pulumi.dockerbuild.outputs.ExportRegistry; -import com.pulumi.dockerbuild.outputs.ExportTar; -import java.lang.Boolean; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class Export { - /** - * @return A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - */ - private @Nullable ExportCacheOnly cacheonly; - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - private @Nullable Boolean disabled; - /** - * @return Export as a Docker image layout. - * - */ - private @Nullable ExportDocker docker; - /** - * @return Outputs the build result into a container image format. - * - */ - private @Nullable ExportImage image; - /** - * @return Export to a local directory as files and directories. - * - */ - private @Nullable ExportLocal local; - /** - * @return Identical to the Docker exporter but uses OCI media types by default. - * - */ - private @Nullable ExportOCI oci; - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - */ - private @Nullable String raw; - /** - * @return Identical to the Image exporter, but pushes by default. - * - */ - private @Nullable ExportRegistry registry; - /** - * @return Export to a local directory as a tarball. - * - */ - private @Nullable ExportTar tar; - - private Export() {} - /** - * @return A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - * - */ - public Optional cacheonly() { - return Optional.ofNullable(this.cacheonly); - } - /** - * @return When `true` this entry will be excluded. Defaults to `false`. - * - */ - public Optional disabled() { - return Optional.ofNullable(this.disabled); - } - /** - * @return Export as a Docker image layout. - * - */ - public Optional docker() { - return Optional.ofNullable(this.docker); - } - /** - * @return Outputs the build result into a container image format. - * - */ - public Optional image() { - return Optional.ofNullable(this.image); - } - /** - * @return Export to a local directory as files and directories. - * - */ - public Optional local() { - return Optional.ofNullable(this.local); - } - /** - * @return Identical to the Docker exporter but uses OCI media types by default. - * - */ - public Optional oci() { - return Optional.ofNullable(this.oci); - } - /** - * @return A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - * - */ - public Optional raw() { - return Optional.ofNullable(this.raw); - } - /** - * @return Identical to the Image exporter, but pushes by default. - * - */ - public Optional registry() { - return Optional.ofNullable(this.registry); - } - /** - * @return Export to a local directory as a tarball. - * - */ - public Optional tar() { - return Optional.ofNullable(this.tar); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(Export defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable ExportCacheOnly cacheonly; - private @Nullable Boolean disabled; - private @Nullable ExportDocker docker; - private @Nullable ExportImage image; - private @Nullable ExportLocal local; - private @Nullable ExportOCI oci; - private @Nullable String raw; - private @Nullable ExportRegistry registry; - private @Nullable ExportTar tar; - public Builder() {} - public Builder(Export defaults) { - Objects.requireNonNull(defaults); - this.cacheonly = defaults.cacheonly; - this.disabled = defaults.disabled; - this.docker = defaults.docker; - this.image = defaults.image; - this.local = defaults.local; - this.oci = defaults.oci; - this.raw = defaults.raw; - this.registry = defaults.registry; - this.tar = defaults.tar; - } - - @CustomType.Setter - public Builder cacheonly(@Nullable ExportCacheOnly cacheonly) { - - this.cacheonly = cacheonly; - return this; - } - @CustomType.Setter - public Builder disabled(@Nullable Boolean disabled) { - - this.disabled = disabled; - return this; - } - @CustomType.Setter - public Builder docker(@Nullable ExportDocker docker) { - - this.docker = docker; - return this; - } - @CustomType.Setter - public Builder image(@Nullable ExportImage image) { - - this.image = image; - return this; - } - @CustomType.Setter - public Builder local(@Nullable ExportLocal local) { - - this.local = local; - return this; - } - @CustomType.Setter - public Builder oci(@Nullable ExportOCI oci) { - - this.oci = oci; - return this; - } - @CustomType.Setter - public Builder raw(@Nullable String raw) { - - this.raw = raw; - return this; - } - @CustomType.Setter - public Builder registry(@Nullable ExportRegistry registry) { - - this.registry = registry; - return this; - } - @CustomType.Setter - public Builder tar(@Nullable ExportTar tar) { - - this.tar = tar; - return this; - } - public Export build() { - final var _resultValue = new Export(); - _resultValue.cacheonly = cacheonly; - _resultValue.disabled = disabled; - _resultValue.docker = docker; - _resultValue.image = image; - _resultValue.local = local; - _resultValue.oci = oci; - _resultValue.raw = raw; - _resultValue.registry = registry; - _resultValue.tar = tar; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java deleted file mode 100644 index f25be65..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportCacheOnly.java +++ /dev/null @@ -1,32 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import java.util.Objects; - -@CustomType -public final class ExportCacheOnly { - private ExportCacheOnly() {} - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportCacheOnly defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - public Builder() {} - public Builder(ExportCacheOnly defaults) { - Objects.requireNonNull(defaults); - } - - public ExportCacheOnly build() { - final var _resultValue = new ExportCacheOnly(); - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java deleted file mode 100644 index e96c714..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportDocker.java +++ /dev/null @@ -1,212 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class ExportDocker { - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - private @Nullable Map annotations; - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return The local export path. - * - */ - private @Nullable String dest; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - private @Nullable List names; - /** - * @return Use OCI media types in exporter manifests. - * - */ - private @Nullable Boolean ociMediaTypes; - /** - * @return Bundle the output into a tarball layout. - * - */ - private @Nullable Boolean tar; - - private ExportDocker() {} - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Map annotations() { - return this.annotations == null ? Map.of() : this.annotations; - } - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return The local export path. - * - */ - public Optional dest() { - return Optional.ofNullable(this.dest); - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public List names() { - return this.names == null ? List.of() : this.names; - } - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - /** - * @return Bundle the output into a tarball layout. - * - */ - public Optional tar() { - return Optional.ofNullable(this.tar); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportDocker defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable Map annotations; - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private @Nullable String dest; - private @Nullable Boolean forceCompression; - private @Nullable List names; - private @Nullable Boolean ociMediaTypes; - private @Nullable Boolean tar; - public Builder() {} - public Builder(ExportDocker defaults) { - Objects.requireNonNull(defaults); - this.annotations = defaults.annotations; - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.dest = defaults.dest; - this.forceCompression = defaults.forceCompression; - this.names = defaults.names; - this.ociMediaTypes = defaults.ociMediaTypes; - this.tar = defaults.tar; - } - - @CustomType.Setter - public Builder annotations(@Nullable Map annotations) { - - this.annotations = annotations; - return this; - } - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder dest(@Nullable String dest) { - - this.dest = dest; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder names(@Nullable List names) { - - this.names = names; - return this; - } - public Builder names(String... names) { - return names(List.of(names)); - } - @CustomType.Setter - public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { - - this.ociMediaTypes = ociMediaTypes; - return this; - } - @CustomType.Setter - public Builder tar(@Nullable Boolean tar) { - - this.tar = tar; - return this; - } - public ExportDocker build() { - final var _resultValue = new ExportDocker(); - _resultValue.annotations = annotations; - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.dest = dest; - _resultValue.forceCompression = forceCompression; - _resultValue.names = names; - _resultValue.ociMediaTypes = ociMediaTypes; - _resultValue.tar = tar; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java deleted file mode 100644 index b18459d..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportImage.java +++ /dev/null @@ -1,331 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class ExportImage { - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - private @Nullable Map annotations; - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - private @Nullable String danglingNamePrefix; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Allow pushing to an insecure registry. - * - */ - private @Nullable Boolean insecure; - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - private @Nullable Boolean nameCanonical; - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - private @Nullable List names; - /** - * @return Use OCI media types in exporter manifests. - * - */ - private @Nullable Boolean ociMediaTypes; - /** - * @return Push after creating the image. Defaults to `false`. - * - */ - private @Nullable Boolean push; - /** - * @return Push image without name. - * - */ - private @Nullable Boolean pushByDigest; - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - private @Nullable Boolean store; - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - private @Nullable Boolean unpack; - - private ExportImage() {} - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Map annotations() { - return this.annotations == null ? Map.of() : this.annotations; - } - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - public Optional danglingNamePrefix() { - return Optional.ofNullable(this.danglingNamePrefix); - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Allow pushing to an insecure registry. - * - */ - public Optional insecure() { - return Optional.ofNullable(this.insecure); - } - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - public Optional nameCanonical() { - return Optional.ofNullable(this.nameCanonical); - } - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public List names() { - return this.names == null ? List.of() : this.names; - } - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - /** - * @return Push after creating the image. Defaults to `false`. - * - */ - public Optional push() { - return Optional.ofNullable(this.push); - } - /** - * @return Push image without name. - * - */ - public Optional pushByDigest() { - return Optional.ofNullable(this.pushByDigest); - } - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - public Optional store() { - return Optional.ofNullable(this.store); - } - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - public Optional unpack() { - return Optional.ofNullable(this.unpack); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportImage defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable Map annotations; - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private @Nullable String danglingNamePrefix; - private @Nullable Boolean forceCompression; - private @Nullable Boolean insecure; - private @Nullable Boolean nameCanonical; - private @Nullable List names; - private @Nullable Boolean ociMediaTypes; - private @Nullable Boolean push; - private @Nullable Boolean pushByDigest; - private @Nullable Boolean store; - private @Nullable Boolean unpack; - public Builder() {} - public Builder(ExportImage defaults) { - Objects.requireNonNull(defaults); - this.annotations = defaults.annotations; - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.danglingNamePrefix = defaults.danglingNamePrefix; - this.forceCompression = defaults.forceCompression; - this.insecure = defaults.insecure; - this.nameCanonical = defaults.nameCanonical; - this.names = defaults.names; - this.ociMediaTypes = defaults.ociMediaTypes; - this.push = defaults.push; - this.pushByDigest = defaults.pushByDigest; - this.store = defaults.store; - this.unpack = defaults.unpack; - } - - @CustomType.Setter - public Builder annotations(@Nullable Map annotations) { - - this.annotations = annotations; - return this; - } - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder danglingNamePrefix(@Nullable String danglingNamePrefix) { - - this.danglingNamePrefix = danglingNamePrefix; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder insecure(@Nullable Boolean insecure) { - - this.insecure = insecure; - return this; - } - @CustomType.Setter - public Builder nameCanonical(@Nullable Boolean nameCanonical) { - - this.nameCanonical = nameCanonical; - return this; - } - @CustomType.Setter - public Builder names(@Nullable List names) { - - this.names = names; - return this; - } - public Builder names(String... names) { - return names(List.of(names)); - } - @CustomType.Setter - public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { - - this.ociMediaTypes = ociMediaTypes; - return this; - } - @CustomType.Setter - public Builder push(@Nullable Boolean push) { - - this.push = push; - return this; - } - @CustomType.Setter - public Builder pushByDigest(@Nullable Boolean pushByDigest) { - - this.pushByDigest = pushByDigest; - return this; - } - @CustomType.Setter - public Builder store(@Nullable Boolean store) { - - this.store = store; - return this; - } - @CustomType.Setter - public Builder unpack(@Nullable Boolean unpack) { - - this.unpack = unpack; - return this; - } - public ExportImage build() { - final var _resultValue = new ExportImage(); - _resultValue.annotations = annotations; - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.danglingNamePrefix = danglingNamePrefix; - _resultValue.forceCompression = forceCompression; - _resultValue.insecure = insecure; - _resultValue.nameCanonical = nameCanonical; - _resultValue.names = names; - _resultValue.ociMediaTypes = ociMediaTypes; - _resultValue.push = push; - _resultValue.pushByDigest = pushByDigest; - _resultValue.store = store; - _resultValue.unpack = unpack; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java deleted file mode 100644 index c09cc50..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportLocal.java +++ /dev/null @@ -1,58 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - -@CustomType -public final class ExportLocal { - /** - * @return Output path. - * - */ - private String dest; - - private ExportLocal() {} - /** - * @return Output path. - * - */ - public String dest() { - return this.dest; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportLocal defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String dest; - public Builder() {} - public Builder(ExportLocal defaults) { - Objects.requireNonNull(defaults); - this.dest = defaults.dest; - } - - @CustomType.Setter - public Builder dest(String dest) { - if (dest == null) { - throw new MissingRequiredPropertyException("ExportLocal", "dest"); - } - this.dest = dest; - return this; - } - public ExportLocal build() { - final var _resultValue = new ExportLocal(); - _resultValue.dest = dest; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java deleted file mode 100644 index bd0d6d7..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportOCI.java +++ /dev/null @@ -1,212 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class ExportOCI { - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - private @Nullable Map annotations; - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return The local export path. - * - */ - private @Nullable String dest; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - private @Nullable List names; - /** - * @return Use OCI media types in exporter manifests. - * - */ - private @Nullable Boolean ociMediaTypes; - /** - * @return Bundle the output into a tarball layout. - * - */ - private @Nullable Boolean tar; - - private ExportOCI() {} - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Map annotations() { - return this.annotations == null ? Map.of() : this.annotations; - } - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return The local export path. - * - */ - public Optional dest() { - return Optional.ofNullable(this.dest); - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public List names() { - return this.names == null ? List.of() : this.names; - } - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - /** - * @return Bundle the output into a tarball layout. - * - */ - public Optional tar() { - return Optional.ofNullable(this.tar); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportOCI defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable Map annotations; - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private @Nullable String dest; - private @Nullable Boolean forceCompression; - private @Nullable List names; - private @Nullable Boolean ociMediaTypes; - private @Nullable Boolean tar; - public Builder() {} - public Builder(ExportOCI defaults) { - Objects.requireNonNull(defaults); - this.annotations = defaults.annotations; - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.dest = defaults.dest; - this.forceCompression = defaults.forceCompression; - this.names = defaults.names; - this.ociMediaTypes = defaults.ociMediaTypes; - this.tar = defaults.tar; - } - - @CustomType.Setter - public Builder annotations(@Nullable Map annotations) { - - this.annotations = annotations; - return this; - } - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder dest(@Nullable String dest) { - - this.dest = dest; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder names(@Nullable List names) { - - this.names = names; - return this; - } - public Builder names(String... names) { - return names(List.of(names)); - } - @CustomType.Setter - public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { - - this.ociMediaTypes = ociMediaTypes; - return this; - } - @CustomType.Setter - public Builder tar(@Nullable Boolean tar) { - - this.tar = tar; - return this; - } - public ExportOCI build() { - final var _resultValue = new ExportOCI(); - _resultValue.annotations = annotations; - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.dest = dest; - _resultValue.forceCompression = forceCompression; - _resultValue.names = names; - _resultValue.ociMediaTypes = ociMediaTypes; - _resultValue.tar = tar; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java deleted file mode 100644 index 50dea1b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportRegistry.java +++ /dev/null @@ -1,331 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.dockerbuild.enums.CompressionType; -import java.lang.Boolean; -import java.lang.Integer; -import java.lang.String; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class ExportRegistry { - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - private @Nullable Map annotations; - /** - * @return The compression type to use. - * - */ - private @Nullable CompressionType compression; - /** - * @return Compression level from 0 to 22. - * - */ - private @Nullable Integer compressionLevel; - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - private @Nullable String danglingNamePrefix; - /** - * @return Forcefully apply compression. - * - */ - private @Nullable Boolean forceCompression; - /** - * @return Allow pushing to an insecure registry. - * - */ - private @Nullable Boolean insecure; - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - private @Nullable Boolean nameCanonical; - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - private @Nullable List names; - /** - * @return Use OCI media types in exporter manifests. - * - */ - private @Nullable Boolean ociMediaTypes; - /** - * @return Push after creating the image. Defaults to `true`. - * - */ - private @Nullable Boolean push; - /** - * @return Push image without name. - * - */ - private @Nullable Boolean pushByDigest; - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - private @Nullable Boolean store; - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - private @Nullable Boolean unpack; - - private ExportRegistry() {} - /** - * @return Attach an arbitrary key/value annotation to the image. - * - */ - public Map annotations() { - return this.annotations == null ? Map.of() : this.annotations; - } - /** - * @return The compression type to use. - * - */ - public Optional compression() { - return Optional.ofNullable(this.compression); - } - /** - * @return Compression level from 0 to 22. - * - */ - public Optional compressionLevel() { - return Optional.ofNullable(this.compressionLevel); - } - /** - * @return Name image with `prefix{@literal @}<digest>`, used for anonymous images. - * - */ - public Optional danglingNamePrefix() { - return Optional.ofNullable(this.danglingNamePrefix); - } - /** - * @return Forcefully apply compression. - * - */ - public Optional forceCompression() { - return Optional.ofNullable(this.forceCompression); - } - /** - * @return Allow pushing to an insecure registry. - * - */ - public Optional insecure() { - return Optional.ofNullable(this.insecure); - } - /** - * @return Add additional canonical name (`name{@literal @}<digest>`). - * - */ - public Optional nameCanonical() { - return Optional.ofNullable(this.nameCanonical); - } - /** - * @return Specify images names to export. This is overridden if tags are already specified. - * - */ - public List names() { - return this.names == null ? List.of() : this.names; - } - /** - * @return Use OCI media types in exporter manifests. - * - */ - public Optional ociMediaTypes() { - return Optional.ofNullable(this.ociMediaTypes); - } - /** - * @return Push after creating the image. Defaults to `true`. - * - */ - public Optional push() { - return Optional.ofNullable(this.push); - } - /** - * @return Push image without name. - * - */ - public Optional pushByDigest() { - return Optional.ofNullable(this.pushByDigest); - } - /** - * @return Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - * - */ - public Optional store() { - return Optional.ofNullable(this.store); - } - /** - * @return Unpack image after creation (for use with containerd). Defaults to - * `false`. - * - */ - public Optional unpack() { - return Optional.ofNullable(this.unpack); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportRegistry defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private @Nullable Map annotations; - private @Nullable CompressionType compression; - private @Nullable Integer compressionLevel; - private @Nullable String danglingNamePrefix; - private @Nullable Boolean forceCompression; - private @Nullable Boolean insecure; - private @Nullable Boolean nameCanonical; - private @Nullable List names; - private @Nullable Boolean ociMediaTypes; - private @Nullable Boolean push; - private @Nullable Boolean pushByDigest; - private @Nullable Boolean store; - private @Nullable Boolean unpack; - public Builder() {} - public Builder(ExportRegistry defaults) { - Objects.requireNonNull(defaults); - this.annotations = defaults.annotations; - this.compression = defaults.compression; - this.compressionLevel = defaults.compressionLevel; - this.danglingNamePrefix = defaults.danglingNamePrefix; - this.forceCompression = defaults.forceCompression; - this.insecure = defaults.insecure; - this.nameCanonical = defaults.nameCanonical; - this.names = defaults.names; - this.ociMediaTypes = defaults.ociMediaTypes; - this.push = defaults.push; - this.pushByDigest = defaults.pushByDigest; - this.store = defaults.store; - this.unpack = defaults.unpack; - } - - @CustomType.Setter - public Builder annotations(@Nullable Map annotations) { - - this.annotations = annotations; - return this; - } - @CustomType.Setter - public Builder compression(@Nullable CompressionType compression) { - - this.compression = compression; - return this; - } - @CustomType.Setter - public Builder compressionLevel(@Nullable Integer compressionLevel) { - - this.compressionLevel = compressionLevel; - return this; - } - @CustomType.Setter - public Builder danglingNamePrefix(@Nullable String danglingNamePrefix) { - - this.danglingNamePrefix = danglingNamePrefix; - return this; - } - @CustomType.Setter - public Builder forceCompression(@Nullable Boolean forceCompression) { - - this.forceCompression = forceCompression; - return this; - } - @CustomType.Setter - public Builder insecure(@Nullable Boolean insecure) { - - this.insecure = insecure; - return this; - } - @CustomType.Setter - public Builder nameCanonical(@Nullable Boolean nameCanonical) { - - this.nameCanonical = nameCanonical; - return this; - } - @CustomType.Setter - public Builder names(@Nullable List names) { - - this.names = names; - return this; - } - public Builder names(String... names) { - return names(List.of(names)); - } - @CustomType.Setter - public Builder ociMediaTypes(@Nullable Boolean ociMediaTypes) { - - this.ociMediaTypes = ociMediaTypes; - return this; - } - @CustomType.Setter - public Builder push(@Nullable Boolean push) { - - this.push = push; - return this; - } - @CustomType.Setter - public Builder pushByDigest(@Nullable Boolean pushByDigest) { - - this.pushByDigest = pushByDigest; - return this; - } - @CustomType.Setter - public Builder store(@Nullable Boolean store) { - - this.store = store; - return this; - } - @CustomType.Setter - public Builder unpack(@Nullable Boolean unpack) { - - this.unpack = unpack; - return this; - } - public ExportRegistry build() { - final var _resultValue = new ExportRegistry(); - _resultValue.annotations = annotations; - _resultValue.compression = compression; - _resultValue.compressionLevel = compressionLevel; - _resultValue.danglingNamePrefix = danglingNamePrefix; - _resultValue.forceCompression = forceCompression; - _resultValue.insecure = insecure; - _resultValue.nameCanonical = nameCanonical; - _resultValue.names = names; - _resultValue.ociMediaTypes = ociMediaTypes; - _resultValue.push = push; - _resultValue.pushByDigest = pushByDigest; - _resultValue.store = store; - _resultValue.unpack = unpack; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java deleted file mode 100644 index 44dd20b..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/ExportTar.java +++ /dev/null @@ -1,58 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; - -@CustomType -public final class ExportTar { - /** - * @return Output path. - * - */ - private String dest; - - private ExportTar() {} - /** - * @return Output path. - * - */ - public String dest() { - return this.dest; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(ExportTar defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String dest; - public Builder() {} - public Builder(ExportTar defaults) { - Objects.requireNonNull(defaults); - this.dest = defaults.dest; - } - - @CustomType.Setter - public Builder dest(String dest) { - if (dest == null) { - throw new MissingRequiredPropertyException("ExportTar", "dest"); - } - this.dest = dest; - return this; - } - public ExportTar build() { - final var _resultValue = new ExportTar(); - _resultValue.dest = dest; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java deleted file mode 100644 index f1853fc..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/Registry.java +++ /dev/null @@ -1,102 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -import javax.annotation.Nullable; - -@CustomType -public final class Registry { - /** - * @return The registry's address (e.g. "docker.io"). - * - */ - private String address; - /** - * @return Password or token for the registry. - * - */ - private @Nullable String password; - /** - * @return Username for the registry. - * - */ - private @Nullable String username; - - private Registry() {} - /** - * @return The registry's address (e.g. "docker.io"). - * - */ - public String address() { - return this.address; - } - /** - * @return Password or token for the registry. - * - */ - public Optional password() { - return Optional.ofNullable(this.password); - } - /** - * @return Username for the registry. - * - */ - public Optional username() { - return Optional.ofNullable(this.username); - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(Registry defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String address; - private @Nullable String password; - private @Nullable String username; - public Builder() {} - public Builder(Registry defaults) { - Objects.requireNonNull(defaults); - this.address = defaults.address; - this.password = defaults.password; - this.username = defaults.username; - } - - @CustomType.Setter - public Builder address(String address) { - if (address == null) { - throw new MissingRequiredPropertyException("Registry", "address"); - } - this.address = address; - return this; - } - @CustomType.Setter - public Builder password(@Nullable String password) { - - this.password = password; - return this; - } - @CustomType.Setter - public Builder username(@Nullable String username) { - - this.username = username; - return this; - } - public Registry build() { - final var _resultValue = new Registry(); - _resultValue.address = address; - _resultValue.password = password; - _resultValue.username = username; - return _resultValue; - } - } -} diff --git a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java b/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java deleted file mode 100644 index 48bcf4c..0000000 --- a/sdk/java/src/main/java/com/pulumi/dockerbuild/outputs/SSH.java +++ /dev/null @@ -1,104 +0,0 @@ -// *** WARNING: this file was generated by pulumi. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -package com.pulumi.dockerbuild.outputs; - -import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; -import java.lang.String; -import java.util.List; -import java.util.Objects; -import javax.annotation.Nullable; - -@CustomType -public final class SSH { - /** - * @return Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - */ - private String id; - /** - * @return SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - */ - private @Nullable List paths; - - private SSH() {} - /** - * @return Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - * - */ - public String id() { - return this.id; - } - /** - * @return SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - * - */ - public List paths() { - return this.paths == null ? List.of() : this.paths; - } - - public static Builder builder() { - return new Builder(); - } - - public static Builder builder(SSH defaults) { - return new Builder(defaults); - } - @CustomType.Builder - public static final class Builder { - private String id; - private @Nullable List paths; - public Builder() {} - public Builder(SSH defaults) { - Objects.requireNonNull(defaults); - this.id = defaults.id; - this.paths = defaults.paths; - } - - @CustomType.Setter - public Builder id(String id) { - if (id == null) { - throw new MissingRequiredPropertyException("SSH", "id"); - } - this.id = id; - return this; - } - @CustomType.Setter - public Builder paths(@Nullable List paths) { - - this.paths = paths; - return this; - } - public Builder paths(String... paths) { - return paths(List.of(paths)); - } - public SSH build() { - final var _resultValue = new SSH(); - _resultValue.id = id; - _resultValue.paths = paths; - return _resultValue; - } - } -} diff --git a/sdk/nodejs/LICENSE b/sdk/nodejs/LICENSE deleted file mode 100644 index d645695..0000000 --- a/sdk/nodejs/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/sdk/nodejs/README.md b/sdk/nodejs/README.md deleted file mode 100644 index a4a8af5..0000000 --- a/sdk/nodejs/README.md +++ /dev/null @@ -1,23 +0,0 @@ -[![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) - -# Docker-Build Resource 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/). - -Not to be confused with the earlier -[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. | - -## Reference - -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/). diff --git a/sdk/nodejs/config/index.ts b/sdk/nodejs/config/index.ts deleted file mode 100644 index 3fbadc8..0000000 --- a/sdk/nodejs/config/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -// Export members: -export * from "./vars"; diff --git a/sdk/nodejs/config/vars.ts b/sdk/nodejs/config/vars.ts deleted file mode 100644 index 4a074ee..0000000 --- a/sdk/nodejs/config/vars.ts +++ /dev/null @@ -1,31 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "../types/input"; -import * as outputs from "../types/output"; -import * as enums from "../types/enums"; -import * as utilities from "../utilities"; - -declare var exports: any; -const __config = new pulumi.Config("docker-build"); - -/** - * The build daemon's address. - */ -export declare const host: string; -Object.defineProperty(exports, "host", { - get() { - return __config.get("host") ?? (utilities.getEnv("DOCKER_HOST") || ""); - }, - enumerable: true, -}); - -export declare const registries: outputs.Registry[] | undefined; -Object.defineProperty(exports, "registries", { - get() { - return __config.getObject("registries"); - }, - enumerable: true, -}); - diff --git a/sdk/nodejs/image.ts b/sdk/nodejs/image.ts deleted file mode 100644 index ba1dd97..0000000 --- a/sdk/nodejs/image.ts +++ /dev/null @@ -1,984 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "./types/input"; -import * as outputs from "./types/output"; -import * as enums from "./types/enums"; -import * as utilities from "./utilities"; - -/** - * A Docker image built using buildx -- Docker's interface to the improved - * BuildKit backend. - * - * ## Stability - * - * **This resource is pre-1.0 and in public preview.** - * - * We will strive to keep APIs and behavior as stable as possible, but we - * cannot guarantee stability until version 1.0. - * - * ## Migrating Pulumi Docker v3 and v4 Image resources - * - * This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. - * Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - * - * ### Behavioral differences - * - * There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - * - * #### Previews - * - * Version `3.x` of the Pulumi Docker provider always builds images during preview operations. - * This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - * - * Version `4.x` changed build-on-preview behavior to be opt-in. - * By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. - * Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - * - * The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. - * This behavior can be changed by specifying `buildOnPreview`. - * - * #### Push behavior - * - * Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. - * They expose a `skipPush: true` option to disable pushing. - * - * This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - * - * To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). - * Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - * - * #### Secrets - * - * Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - * - * Version `4.x` of the Pulumi Docker provider does not support secrets. - * - * The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. - * Instead, they should be passed directly as values. - * (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) - * Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - * - * #### Caching - * - * Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. - * It builds targets individually and pushes them to separate images for caching. - * - * Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - * - * Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. - * This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - * - * The `Image` resource delegates all caching behavior to Docker. - * `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - * - * #### Outputs - * - * Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. - * In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - * - * Unlike earlier providers the `Image` resource can push multiple tags. - * As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. - * If multiple tags were pushed this uses one at random. - * - * If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - * - * #### Tag deletion and refreshes - * - * Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - * - * The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. - * If any are missing a subsequent `update` will push them. - * - * When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. - * Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). - * Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - * - * Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - * - * ### Example migration - * - * Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - * - * The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. - * After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. - * In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - * - * The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. - * It it is shown with parameters similar to the `v3` example for completeness. - * - * ## Example Usage - * ### v3/v4 migration - * - * ```typescript - * - * // v3 Image - * const v3 = new docker.Image("v3-image", { - * imageName: "myregistry.com/user/repo:latest", - * localImageName: "local-tag", - * skipPush: false, - * build: { - * dockerfile: "./Dockerfile", - * context: "../app", - * target: "mytarget", - * args: { - * MY_BUILD_ARG: "foo", - * }, - * env: { - * DOCKER_BUILDKIT: "1", - * }, - * extraOptions: [ - * "--cache-from", - * "type=registry,myregistry.com/user/repo:cache", - * "--cache-to", - * "type=registry,myregistry.com/user/repo:cache", - * "--add-host", - * "metadata.google.internal:169.254.169.254", - * "--secret", - * "id=mysecret,src=/local/secret", - * "--ssh", - * "default=/home/runner/.ssh/id_ed25519", - * "--network", - * "host", - * "--platform", - * "linux/amd64", - * ], - * }, - * registry: { - * server: "myregistry.com", - * username: "username", - * password: pulumi.secret("password"), - * }, - * }); - * - * // v3 Image after migrating to docker-build.Image - * const v3Migrated = new dockerbuild.Image("v3-to-buildx", { - * tags: ["myregistry.com/user/repo:latest", "local-tag"], - * push: true, - * dockerfile: { - * location: "./Dockerfile", - * }, - * context: { - * location: "../app", - * }, - * target: "mytarget", - * buildArgs: { - * MY_BUILD_ARG: "foo", - * }, - * cacheFrom: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - * cacheTo: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - * secrets: { - * mysecret: "value", - * }, - * addHosts: ["metadata.google.internal:169.254.169.254"], - * ssh: { - * default: ["/home/runner/.ssh/id_ed25519"], - * }, - * network: "host", - * platforms: ["linux/amd64"], - * registries: [{ - * address: "myregistry.com", - * username: "username", - * password: pulumi.secret("password"), - * }], - * }); - * - * - * // v4 Image - * const v4 = new docker.Image("v4-image", { - * imageName: "myregistry.com/user/repo:latest", - * skipPush: false, - * build: { - * dockerfile: "./Dockerfile", - * context: "../app", - * target: "mytarget", - * args: { - * MY_BUILD_ARG: "foo", - * }, - * cacheFrom: { - * images: ["myregistry.com/user/repo:cache"], - * }, - * addHosts: ["metadata.google.internal:169.254.169.254"], - * network: "host", - * platform: "linux/amd64", - * }, - * buildOnPreview: true, - * registry: { - * server: "myregistry.com", - * username: "username", - * password: pulumi.secret("password"), - * }, - * }); - * - * // v4 Image after migrating to docker-build.Image - * const v4Migrated = new dockerbuild.Image("v4-to-buildx", { - * tags: ["myregistry.com/user/repo:latest"], - * push: true, - * dockerfile: { - * location: "./Dockerfile", - * }, - * context: { - * location: "../app", - * }, - * target: "mytarget", - * buildArgs: { - * MY_BUILD_ARG: "foo", - * }, - * cacheFrom: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - * cacheTo: [{ registry: { ref: "myregistry.com/user/repo:cache" } }], - * addHosts: ["metadata.google.internal:169.254.169.254"], - * network: "host", - * platforms: ["linux/amd64"], - * registries: [{ - * address: "myregistry.com", - * username: "username", - * password: pulumi.secret("password"), - * }], - * }); - * - * ``` - * - * ## Example Usage - * ### Push to AWS ECR with caching - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as aws from "@pulumi/aws"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const ecrRepository = new aws.ecr.Repository("ecr-repository", {}); - * const authToken = aws.ecr.getAuthorizationTokenOutput({ - * registryId: ecrRepository.registryId, - * }); - * const myImage = new docker_build.Image("my-image", { - * cacheFrom: [{ - * registry: { - * ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`, - * }, - * }], - * cacheTo: [{ - * registry: { - * imageManifest: true, - * ociMediaTypes: true, - * ref: pulumi.interpolate`${ecrRepository.repositoryUrl}:cache`, - * }, - * }], - * context: { - * location: "./app", - * }, - * push: true, - * registries: [{ - * address: ecrRepository.repositoryUrl, - * password: authToken.apply(authToken => authToken.password), - * username: authToken.apply(authToken => authToken.userName), - * }], - * tags: [pulumi.interpolate`${ecrRepository.repositoryUrl}:latest`], - * }); - * export const ref = myImage.ref; - * ``` - * ### Multi-platform image - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * }, - * platforms: [ - * docker_build.Platform.Plan9_amd64, - * docker_build.Platform.Plan9_386, - * ], - * push: false, - * }); - * ``` - * ### Registry export - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * }, - * push: true, - * registries: [{ - * address: "docker.io", - * password: dockerHubPassword, - * username: "pulumibot", - * }], - * tags: ["docker.io/pulumi/pulumi:3.107.0"], - * }); - * export const ref = myImage.ref; - * ``` - * ### Caching - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * cacheFrom: [{ - * local: { - * src: "tmp/cache", - * }, - * }], - * cacheTo: [{ - * local: { - * dest: "tmp/cache", - * mode: docker_build.CacheMode.Max, - * }, - * }], - * context: { - * location: "app", - * }, - * push: false, - * }); - * ``` - * ### Docker Build Cloud - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * builder: { - * name: "cloud-builder-name", - * }, - * context: { - * location: "app", - * }, - * exec: true, - * push: false, - * }); - * ``` - * ### Build arguments - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * buildArgs: { - * SET_ME_TO_TRUE: "true", - * }, - * context: { - * location: "app", - * }, - * push: false, - * }); - * ``` - * ### Build target - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * }, - * push: false, - * target: "build-me", - * }); - * ``` - * ### Named contexts - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * named: { - * "golang:latest": { - * location: "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - * }, - * }, - * }, - * push: false, - * }); - * ``` - * ### Remote context - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - * }, - * push: false, - * }); - * ``` - * ### Inline Dockerfile - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * }, - * dockerfile: { - * inline: `FROM busybox - * COPY hello.c ./ - * `, - * }, - * push: false, - * }); - * ``` - * ### Remote context - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "https://github.com/docker-library/hello-world.git", - * }, - * dockerfile: { - * location: "app/Dockerfile", - * }, - * push: false, - * }); - * ``` - * ### Local export - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const image = new docker_build.Image("image", { - * context: { - * location: "app", - * }, - * exports: [{ - * docker: { - * tar: true, - * }, - * }], - * push: false, - * }); - * ``` - */ -export class Image extends pulumi.CustomResource { - /** - * Get an existing Image resource's state with the given name, ID, and optional extra - * properties used to qualify the lookup. - * - * @param name The _unique_ name of the resulting resource. - * @param id The _unique_ provider ID of the resource to lookup. - * @param opts Optional settings to control the behavior of the CustomResource. - */ - public static get(name: string, id: pulumi.Input, opts?: pulumi.CustomResourceOptions): Image { - return new Image(name, undefined as any, { ...opts, id: id }); - } - - /** @internal */ - public static readonly __pulumiType = 'docker-build:index:Image'; - - /** - * Returns true if the given object is an instance of Image. This is designed to work even - * when multiple copies of the Pulumi SDK have been loaded into the same process. - */ - public static isInstance(obj: any): obj is Image { - if (obj === undefined || obj === null) { - return false; - } - return obj['__pulumiType'] === Image.__pulumiType; - } - - /** - * Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - */ - public readonly addHosts!: pulumi.Output; - /** - * `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - */ - public readonly buildArgs!: pulumi.Output<{[key: string]: string} | undefined>; - /** - * Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - */ - public readonly buildOnPreview!: pulumi.Output; - /** - * Builder configuration. - */ - public readonly builder!: pulumi.Output; - /** - * Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - */ - public readonly cacheFrom!: pulumi.Output; - /** - * Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - */ - public readonly cacheTo!: pulumi.Output; - /** - * Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - */ - public readonly context!: pulumi.Output; - /** - * A preliminary hash of the image's build context. - * - * Pulumi uses this to determine if an image _may_ need to be re-built. - */ - public /*out*/ readonly contextHash!: pulumi.Output; - /** - * A SHA256 digest of the image if it was exported to a registry or - * elsewhere. - * - * Empty if the image was not exported. - * - * Registry images can be referenced precisely as `@`. The - * `ref` output provides one such reference as a convenience. - */ - public /*out*/ readonly digest!: pulumi.Output; - /** - * Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - */ - public readonly dockerfile!: pulumi.Output; - /** - * Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - */ - public readonly exec!: pulumi.Output; - /** - * Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - */ - public readonly exports!: pulumi.Output; - /** - * Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - */ - public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; - /** - * When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - */ - public readonly load!: pulumi.Output; - /** - * Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - */ - public readonly network!: pulumi.Output; - /** - * Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - */ - public readonly noCache!: pulumi.Output; - /** - * Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - */ - public readonly platforms!: pulumi.Output; - /** - * Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - */ - public readonly pull!: pulumi.Output; - /** - * When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - */ - public readonly push!: pulumi.Output; - /** - * If the image was pushed to any registries then this will contain a - * single fully-qualified tag including the build's digest. - * - * If the image had tags but was not exported, this will take on a value - * of one of those tags. - * - * This will be empty if the image had no exports and no tags. - * - * This is only for convenience and may not be appropriate for situations - * where multiple tags or registries are involved. In those cases this - * output is not guaranteed to be stable. - * - * For more control over tags consumed by downstream resources you should - * use the `digest` output. - */ - public /*out*/ readonly ref!: pulumi.Output; - /** - * Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - */ - public readonly registries!: pulumi.Output; - /** - * A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - */ - public readonly secrets!: pulumi.Output<{[key: string]: string} | undefined>; - /** - * SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - */ - public readonly ssh!: pulumi.Output; - /** - * Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - */ - public readonly tags!: pulumi.Output; - /** - * Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - */ - public readonly target!: pulumi.Output; - - /** - * Create a Image resource with the given unique name, arguments, and options. - * - * @param name The _unique_ name of the resource. - * @param args The arguments to use to populate this resource's properties. - * @param opts A bag of options that control this resource's behavior. - */ - constructor(name: string, args: ImageArgs, opts?: pulumi.CustomResourceOptions) { - let resourceInputs: pulumi.Inputs = {}; - opts = opts || {}; - if (!opts.id) { - if ((!args || args.push === undefined) && !opts.urn) { - throw new Error("Missing required property 'push'"); - } - resourceInputs["addHosts"] = args ? args.addHosts : undefined; - resourceInputs["buildArgs"] = args ? args.buildArgs : undefined; - resourceInputs["buildOnPreview"] = (args ? args.buildOnPreview : undefined) ?? true; - resourceInputs["builder"] = args ? args.builder : undefined; - resourceInputs["cacheFrom"] = args ? args.cacheFrom : undefined; - resourceInputs["cacheTo"] = args ? args.cacheTo : undefined; - resourceInputs["context"] = args ? args.context : undefined; - resourceInputs["dockerfile"] = args ? args.dockerfile : undefined; - resourceInputs["exec"] = args ? args.exec : undefined; - resourceInputs["exports"] = args ? args.exports : undefined; - resourceInputs["labels"] = args ? args.labels : undefined; - resourceInputs["load"] = args ? args.load : undefined; - resourceInputs["network"] = (args ? args.network : undefined) ?? "default"; - resourceInputs["noCache"] = args ? args.noCache : undefined; - resourceInputs["platforms"] = args ? args.platforms : undefined; - resourceInputs["pull"] = args ? args.pull : undefined; - resourceInputs["push"] = args ? args.push : undefined; - resourceInputs["registries"] = args ? args.registries : undefined; - resourceInputs["secrets"] = args ? args.secrets : undefined; - resourceInputs["ssh"] = args ? args.ssh : undefined; - resourceInputs["tags"] = args ? args.tags : undefined; - resourceInputs["target"] = args ? args.target : undefined; - resourceInputs["contextHash"] = undefined /*out*/; - resourceInputs["digest"] = undefined /*out*/; - resourceInputs["ref"] = undefined /*out*/; - } else { - resourceInputs["addHosts"] = undefined /*out*/; - resourceInputs["buildArgs"] = undefined /*out*/; - resourceInputs["buildOnPreview"] = undefined /*out*/; - resourceInputs["builder"] = undefined /*out*/; - resourceInputs["cacheFrom"] = undefined /*out*/; - resourceInputs["cacheTo"] = undefined /*out*/; - resourceInputs["context"] = undefined /*out*/; - resourceInputs["contextHash"] = undefined /*out*/; - resourceInputs["digest"] = undefined /*out*/; - resourceInputs["dockerfile"] = undefined /*out*/; - resourceInputs["exec"] = undefined /*out*/; - resourceInputs["exports"] = undefined /*out*/; - resourceInputs["labels"] = undefined /*out*/; - resourceInputs["load"] = undefined /*out*/; - resourceInputs["network"] = undefined /*out*/; - resourceInputs["noCache"] = undefined /*out*/; - resourceInputs["platforms"] = undefined /*out*/; - resourceInputs["pull"] = undefined /*out*/; - resourceInputs["push"] = undefined /*out*/; - resourceInputs["ref"] = undefined /*out*/; - resourceInputs["registries"] = undefined /*out*/; - resourceInputs["secrets"] = undefined /*out*/; - resourceInputs["ssh"] = undefined /*out*/; - resourceInputs["tags"] = undefined /*out*/; - resourceInputs["target"] = undefined /*out*/; - } - opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); - super(Image.__pulumiType, name, resourceInputs, opts); - } -} - -/** - * The set of arguments for constructing a Image resource. - */ -export interface ImageArgs { - /** - * Custom `host:ip` mappings to use during the build. - * - * Equivalent to Docker's `--add-host` flag. - */ - addHosts?: pulumi.Input[]>; - /** - * `ARG` names and values to set during the build. - * - * These variables are accessed like environment variables inside `RUN` - * instructions. - * - * Build arguments are persisted in the image, so you should use `secrets` - * if these arguments are sensitive. - * - * Equivalent to Docker's `--build-arg` flag. - */ - buildArgs?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * Setting this to `false` will always skip image builds during previews, - * and setting it to `true` will always build images during previews. - * - * Images built during previews are never exported to registries, however - * cache manifests are still exported. - * - * On-disk Dockerfiles are always validated for syntactic correctness - * regardless of this setting. - * - * Defaults to `true` as a safeguard against broken images merging as part - * of CI pipelines. - */ - buildOnPreview?: pulumi.Input; - /** - * Builder configuration. - */ - builder?: pulumi.Input; - /** - * Cache export configuration. - * - * Equivalent to Docker's `--cache-from` flag. - */ - cacheFrom?: pulumi.Input[]>; - /** - * Cache import configuration. - * - * Equivalent to Docker's `--cache-to` flag. - */ - cacheTo?: pulumi.Input[]>; - /** - * Build context settings. Defaults to the current directory. - * - * Equivalent to Docker's `PATH | URL | -` positional argument. - */ - context?: pulumi.Input; - /** - * Dockerfile settings. - * - * Equivalent to Docker's `--file` flag. - */ - dockerfile?: pulumi.Input; - /** - * Use `exec` mode to build this image. - * - * By default the provider embeds a v25 Docker client with v0.12 buildx - * support. This helps ensure consistent behavior across environments and - * is compatible with alternative build backends (e.g. `buildkitd`), but - * it may not be desirable if you require a specific version of buildx. - * For example you may want to run a custom `docker-buildx` binary with - * support for [Docker Build - * Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - * - * When this is set to `true` the provider will instead execute the - * `docker-buildx` binary directly to perform its operations. The user is - * responsible for ensuring this binary exists, with correct permissions - * and pre-configured builders, at a path Docker expects (e.g. - * `~/.docker/cli-plugins`). - * - * Debugging `exec` mode may be more difficult as Pulumi will not be able - * to surface fine-grained errors and warnings. Additionally credentials - * are temporarily written to disk in order to provide them to the - * `docker-buildx` binary. - */ - exec?: pulumi.Input; - /** - * Controls where images are persisted after building. - * - * Images are only stored in the local cache unless `exports` are - * explicitly configured. - * - * Exporting to multiple destinations requires a daemon running BuildKit - * 0.13 or later. - * - * Equivalent to Docker's `--output` flag. - */ - exports?: pulumi.Input[]>; - /** - * Attach arbitrary key/value metadata to the image. - * - * Equivalent to Docker's `--label` flag. - */ - labels?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * When `true` the build will automatically include a `docker` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--load` flag. - */ - load?: pulumi.Input; - /** - * Set the network mode for `RUN` instructions. Defaults to `default`. - * - * For custom networks, configure your builder with `--driver-opt network=...`. - * - * Equivalent to Docker's `--network` flag. - */ - network?: pulumi.Input; - /** - * Do not import cache manifests when building the image. - * - * Equivalent to Docker's `--no-cache` flag. - */ - noCache?: pulumi.Input; - /** - * Set target platform(s) for the build. Defaults to the host's platform. - * - * Equivalent to Docker's `--platform` flag. - */ - platforms?: pulumi.Input[]>; - /** - * Always pull referenced images. - * - * Equivalent to Docker's `--pull` flag. - */ - pull?: pulumi.Input; - /** - * When `true` the build will automatically include a `registry` export. - * - * Defaults to `false`. - * - * Equivalent to Docker's `--push` flag. - */ - push: pulumi.Input; - /** - * Registry credentials. Required if reading or exporting to private - * repositories. - * - * Credentials are kept in-memory and do not pollute pre-existing - * credentials on the host. - * - * Similar to `docker login`. - */ - registries?: pulumi.Input[]>; - /** - * A mapping of secret names to their corresponding values. - * - * Unlike the Docker CLI, these can be passed by value and do not need to - * exist on-disk or in environment variables. - * - * Build arguments and environment variables are persistent in the final - * image, so you should use this for sensitive values. - * - * Similar to Docker's `--secret` flag. - */ - secrets?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * SSH agent socket or keys to expose to the build. - * - * Equivalent to Docker's `--ssh` flag. - */ - ssh?: pulumi.Input[]>; - /** - * Name and optionally a tag (format: `name:tag`). - * - * If exporting to a registry, the name should include the fully qualified - * registry address (e.g. `docker.io/pulumi/pulumi:latest`). - * - * Equivalent to Docker's `--tag` flag. - */ - tags?: pulumi.Input[]>; - /** - * Set the target build stage(s) to build. - * - * If not specified all targets will be built by default. - * - * Equivalent to Docker's `--target` flag. - */ - target?: pulumi.Input; -} diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts deleted file mode 100644 index 778a45c..0000000 --- a/sdk/nodejs/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as utilities from "./utilities"; - -// Export members: -export { ImageArgs } from "./image"; -export type Image = import("./image").Image; -export const Image: typeof import("./image").Image = null as any; -utilities.lazyLoad(exports, ["Image"], () => require("./image")); - -export { IndexArgs } from "./index_"; -export type Index = import("./index_").Index; -export const Index: typeof import("./index_").Index = null as any; -utilities.lazyLoad(exports, ["Index"], () => require("./index_")); - -export { ProviderArgs } from "./provider"; -export type Provider = import("./provider").Provider; -export const Provider: typeof import("./provider").Provider = null as any; -utilities.lazyLoad(exports, ["Provider"], () => require("./provider")); - - -// Export enums: -export * from "./types/enums"; - -// Export sub-modules: -import * as config from "./config"; -import * as types from "./types"; - -export { - config, - types, -}; - -const _module = { - version: utilities.getVersion(), - construct: (name: string, type: string, urn: string): pulumi.Resource => { - switch (type) { - case "docker-build:index:Image": - return new Image(name, undefined, { urn }) - case "docker-build:index:Index": - return new Index(name, undefined, { urn }) - default: - throw new Error(`unknown resource type ${type}`); - } - }, -}; -pulumi.runtime.registerResourceModule("docker-build", "index", _module) -pulumi.runtime.registerResourcePackage("docker-build", { - version: utilities.getVersion(), - constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => { - if (type !== "pulumi:providers:docker-build") { - throw new Error(`unknown provider type ${type}`); - } - return new Provider(name, undefined, { urn }); - }, -}); diff --git a/sdk/nodejs/index_.ts b/sdk/nodejs/index_.ts deleted file mode 100644 index e2986c6..0000000 --- a/sdk/nodejs/index_.ts +++ /dev/null @@ -1,196 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "./types/input"; -import * as outputs from "./types/output"; -import * as enums from "./types/enums"; -import * as utilities from "./utilities"; - -/** - * A wrapper around `docker buildx imagetools create` to create an index - * (or manifest list) referencing one or more existing images. - * - * In most cases you do not need an `Index` to build a multi-platform - * image -- specifying multiple platforms on the `Image` will handle this - * for you automatically. - * - * However, as of April 2024, building multi-platform images _with - * caching_ will only export a cache for one platform at a time (see [this - * discussion](https://github.com/docker/buildx/discussions/1382) for more - * details). - * - * Therefore this resource can be helpful if you are building - * multi-platform images with caching: each platform can be built and - * cached separately, and an `Index` can join them all together. An - * example of this is shown below. - * - * This resource creates an OCI image index or a Docker manifest list - * depending on the media types of the source images. - * - * ## Example Usage - * ### Multi-platform registry caching - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as docker_build from "@pulumi/docker-build"; - * - * const amd64 = new docker_build.Image("amd64", { - * cacheFrom: [{ - * registry: { - * ref: "docker.io/pulumi/pulumi:cache-amd64", - * }, - * }], - * cacheTo: [{ - * registry: { - * mode: docker_build.CacheMode.Max, - * ref: "docker.io/pulumi/pulumi:cache-amd64", - * }, - * }], - * context: { - * location: "app", - * }, - * platforms: [docker_build.Platform.Linux_amd64], - * tags: ["docker.io/pulumi/pulumi:3.107.0-amd64"], - * }); - * const arm64 = new docker_build.Image("arm64", { - * cacheFrom: [{ - * registry: { - * ref: "docker.io/pulumi/pulumi:cache-arm64", - * }, - * }], - * cacheTo: [{ - * registry: { - * mode: docker_build.CacheMode.Max, - * ref: "docker.io/pulumi/pulumi:cache-arm64", - * }, - * }], - * context: { - * location: "app", - * }, - * platforms: [docker_build.Platform.Linux_arm64], - * tags: ["docker.io/pulumi/pulumi:3.107.0-arm64"], - * }); - * const index = new docker_build.Index("index", { - * sources: [ - * amd64.ref, - * arm64.ref, - * ], - * tag: "docker.io/pulumi/pulumi:3.107.0", - * }); - * export const ref = index.ref; - * ``` - */ -export class Index extends pulumi.CustomResource { - /** - * Get an existing Index resource's state with the given name, ID, and optional extra - * properties used to qualify the lookup. - * - * @param name The _unique_ name of the resulting resource. - * @param id The _unique_ provider ID of the resource to lookup. - * @param opts Optional settings to control the behavior of the CustomResource. - */ - public static get(name: string, id: pulumi.Input, opts?: pulumi.CustomResourceOptions): Index { - return new Index(name, undefined as any, { ...opts, id: id }); - } - - /** @internal */ - public static readonly __pulumiType = 'docker-build:index:Index'; - - /** - * Returns true if the given object is an instance of Index. This is designed to work even - * when multiple copies of the Pulumi SDK have been loaded into the same process. - */ - public static isInstance(obj: any): obj is Index { - if (obj === undefined || obj === null) { - return false; - } - return obj['__pulumiType'] === Index.__pulumiType; - } - - /** - * If true, push the index to the target registry. - * - * Defaults to `true`. - */ - public readonly push!: pulumi.Output; - /** - * The pushed tag with digest. - * - * Identical to the tag if the index was not pushed. - */ - public /*out*/ readonly ref!: pulumi.Output; - /** - * Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - */ - public readonly registry!: pulumi.Output; - /** - * Existing images to include in the index. - */ - public readonly sources!: pulumi.Output; - /** - * The tag to apply to the index. - */ - public readonly tag!: pulumi.Output; - - /** - * Create a Index resource with the given unique name, arguments, and options. - * - * @param name The _unique_ name of the resource. - * @param args The arguments to use to populate this resource's properties. - * @param opts A bag of options that control this resource's behavior. - */ - constructor(name: string, args: IndexArgs, opts?: pulumi.CustomResourceOptions) { - let resourceInputs: pulumi.Inputs = {}; - opts = opts || {}; - if (!opts.id) { - if ((!args || args.sources === undefined) && !opts.urn) { - throw new Error("Missing required property 'sources'"); - } - if ((!args || args.tag === undefined) && !opts.urn) { - throw new Error("Missing required property 'tag'"); - } - resourceInputs["push"] = (args ? args.push : undefined) ?? true; - resourceInputs["registry"] = args ? args.registry : undefined; - resourceInputs["sources"] = args ? args.sources : undefined; - resourceInputs["tag"] = args ? args.tag : undefined; - resourceInputs["ref"] = undefined /*out*/; - } else { - resourceInputs["push"] = undefined /*out*/; - resourceInputs["ref"] = undefined /*out*/; - resourceInputs["registry"] = undefined /*out*/; - resourceInputs["sources"] = undefined /*out*/; - resourceInputs["tag"] = undefined /*out*/; - } - opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); - super(Index.__pulumiType, name, resourceInputs, opts); - } -} - -/** - * The set of arguments for constructing a Index resource. - */ -export interface IndexArgs { - /** - * If true, push the index to the target registry. - * - * Defaults to `true`. - */ - push?: pulumi.Input; - /** - * Authentication for the registry where the tagged index will be pushed. - * - * Credentials can also be included with the provider's configuration. - */ - registry?: pulumi.Input; - /** - * Existing images to include in the index. - */ - sources: pulumi.Input[]>; - /** - * The tag to apply to the index. - */ - tag: pulumi.Input; -} diff --git a/sdk/nodejs/package.json b/sdk/nodejs/package.json deleted file mode 100644 index 1010db3..0000000 --- a/sdk/nodejs/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@pulumi/docker-build", - "version": "0.1.0-alpha.0+dev", - "keywords": [ - "docker", - "buildkit", - "buildx", - "kind/native" - ], - "homepage": "https://pulumi.com", - "repository": "https://github.com/pulumi/pulumi-docker-build", - "license": "Apache-2.0", - "scripts": { - "build": "tsc" - }, - "dependencies": { - "@pulumi/pulumi": "^3.0.0" - }, - "devDependencies": { - "@types/node": "^14", - "typescript": "^4.3.5" - }, - "pulumi": { - "resource": true, - "name": "docker-build", - "version": "0.1.0-alpha.0+dev" - } -} diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts deleted file mode 100644 index a2ed3e7..0000000 --- a/sdk/nodejs/provider.ts +++ /dev/null @@ -1,58 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "./types/input"; -import * as outputs from "./types/output"; -import * as enums from "./types/enums"; -import * as utilities from "./utilities"; - -export class Provider extends pulumi.ProviderResource { - /** @internal */ - public static readonly __pulumiType = 'docker-build'; - - /** - * Returns true if the given object is an instance of Provider. This is designed to work even - * when multiple copies of the Pulumi SDK have been loaded into the same process. - */ - public static isInstance(obj: any): obj is Provider { - if (obj === undefined || obj === null) { - return false; - } - return obj['__pulumiType'] === "pulumi:providers:" + Provider.__pulumiType; - } - - /** - * The build daemon's address. - */ - public readonly host!: pulumi.Output; - - /** - * Create a Provider resource with the given unique name, arguments, and options. - * - * @param name The _unique_ name of the resource. - * @param args The arguments to use to populate this resource's properties. - * @param opts A bag of options that control this resource's behavior. - */ - constructor(name: string, args?: ProviderArgs, opts?: pulumi.ResourceOptions) { - let resourceInputs: pulumi.Inputs = {}; - opts = opts || {}; - { - resourceInputs["host"] = (args ? args.host : undefined) ?? (utilities.getEnv("DOCKER_HOST") || ""); - resourceInputs["registries"] = pulumi.output(args ? args.registries : undefined).apply(JSON.stringify); - } - opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); - super(Provider.__pulumiType, name, resourceInputs, opts); - } -} - -/** - * The set of arguments for constructing a Provider resource. - */ -export interface ProviderArgs { - /** - * The build daemon's address. - */ - host?: pulumi.Input; - registries?: pulumi.Input[]>; -} diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json deleted file mode 100644 index 276795b..0000000 --- a/sdk/nodejs/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "outDir": "bin", - "target": "es2016", - "module": "commonjs", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "stripInternal": true, - "experimentalDecorators": true, - "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "strict": true - }, - "files": [ - "config/index.ts", - "config/vars.ts", - "image.ts", - "index.ts", - "index_.ts", - "provider.ts", - "types/enums/index.ts", - "types/index.ts", - "types/input.ts", - "types/output.ts", - "utilities.ts" - ] -} diff --git a/sdk/nodejs/types/enums/index.ts b/sdk/nodejs/types/enums/index.ts deleted file mode 100644 index 7f166a6..0000000 --- a/sdk/nodejs/types/enums/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - - -export const CacheMode = { - /** - * Only layers that are exported into the resulting image are cached. - */ - Min: "min", - /** - * All layers are cached, even those of intermediate steps. - */ - Max: "max", -} as const; - -export type CacheMode = (typeof CacheMode)[keyof typeof CacheMode]; - -export const CompressionType = { - /** - * Use `gzip` for compression. - */ - Gzip: "gzip", - /** - * Use `estargz` for compression. - */ - Estargz: "estargz", - /** - * Use `zstd` for compression. - */ - Zstd: "zstd", -} as const; - -export type CompressionType = (typeof CompressionType)[keyof typeof CompressionType]; - -export const NetworkMode = { - /** - * The default sandbox network mode. - */ - Default: "default", - /** - * Host network mode. - */ - Host: "host", - /** - * Disable network access. - */ - None: "none", -} as const; - -export type NetworkMode = (typeof NetworkMode)[keyof typeof NetworkMode]; - -export const Platform = { - Darwin_386: "darwin/386", - Darwin_amd64: "darwin/amd64", - Darwin_arm: "darwin/arm", - Darwin_arm64: "darwin/arm64", - Dragonfly_amd64: "dragonfly/amd64", - Freebsd_386: "freebsd/386", - Freebsd_amd64: "freebsd/amd64", - Freebsd_arm: "freebsd/arm", - Linux_386: "linux/386", - Linux_amd64: "linux/amd64", - Linux_arm: "linux/arm", - Linux_arm64: "linux/arm64", - Linux_mips64: "linux/mips64", - Linux_mips64le: "linux/mips64le", - Linux_ppc64le: "linux/ppc64le", - Linux_riscv64: "linux/riscv64", - Linux_s390x: "linux/s390x", - Netbsd_386: "netbsd/386", - Netbsd_amd64: "netbsd/amd64", - Netbsd_arm: "netbsd/arm", - Openbsd_386: "openbsd/386", - Openbsd_amd64: "openbsd/amd64", - Openbsd_arm: "openbsd/arm", - Plan9_386: "plan9/386", - Plan9_amd64: "plan9/amd64", - Solaris_amd64: "solaris/amd64", - Windows_386: "windows/386", - Windows_amd64: "windows/amd64", -} as const; - -export type Platform = (typeof Platform)[keyof typeof Platform]; diff --git a/sdk/nodejs/types/index.ts b/sdk/nodejs/types/index.ts deleted file mode 100644 index 0833653..0000000 --- a/sdk/nodejs/types/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as utilities from "../utilities"; - -// Export sub-modules: -import * as enums from "./enums"; -import * as input from "./input"; -import * as output from "./output"; - -export { - enums, - input, - output, -}; diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts deleted file mode 100644 index d66ae95..0000000 --- a/sdk/nodejs/types/input.ts +++ /dev/null @@ -1,908 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "../types/input"; -import * as outputs from "../types/output"; -import * as enums from "../types/enums"; - -import * as utilities from "../utilities"; - -export interface BuildContextArgs { - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - */ - location: pulumi.Input; - /** - * Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - */ - named?: pulumi.Input<{[key: string]: pulumi.Input}>; -} - -export interface BuilderConfigArgs { - /** - * Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - */ - name?: pulumi.Input; -} - -export interface CacheFromArgs { - /** - * Upload build caches to Azure's blob storage service. - */ - azblob?: pulumi.Input; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: pulumi.Input; - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - */ - gha?: pulumi.Input; - /** - * A simple backend which caches images on your local filesystem. - */ - local?: pulumi.Input; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - */ - raw?: pulumi.Input; - /** - * Upload build caches to remote registries. - */ - registry?: pulumi.Input; - /** - * Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - */ - s3?: pulumi.Input; -} -/** - * cacheFromArgsProvideDefaults sets the appropriate defaults for CacheFromArgs - */ -export function cacheFromArgsProvideDefaults(val: CacheFromArgs): CacheFromArgs { - return { - ...val, - gha: (val.gha ? pulumi.output(val.gha).apply(inputs.cacheFromGitHubActionsArgsProvideDefaults) : undefined), - s3: (val.s3 ? pulumi.output(val.s3).apply(inputs.cacheFromS3ArgsProvideDefaults) : undefined), - }; -} - -export interface CacheFromAzureBlobArgs { - /** - * Base URL of the storage account. - */ - accountUrl?: pulumi.Input; - /** - * The name of the cache image. - */ - name: pulumi.Input; - /** - * Blob storage account key. - */ - secretAccessKey?: pulumi.Input; -} - -export interface CacheFromGitHubActionsArgs { - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - */ - scope?: pulumi.Input; - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - token?: pulumi.Input; - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - url?: pulumi.Input; -} -/** - * cacheFromGitHubActionsArgsProvideDefaults sets the appropriate defaults for CacheFromGitHubActionsArgs - */ -export function cacheFromGitHubActionsArgsProvideDefaults(val: CacheFromGitHubActionsArgs): CacheFromGitHubActionsArgs { - return { - ...val, - scope: (val.scope) ?? (utilities.getEnv("buildkit") || ""), - token: (val.token) ?? (utilities.getEnv("ACTIONS_RUNTIME_TOKEN") || ""), - url: (val.url) ?? (utilities.getEnv("ACTIONS_CACHE_URL") || ""), - }; -} - -export interface CacheFromLocalArgs { - /** - * Digest of manifest to import. - */ - digest?: pulumi.Input; - /** - * Path of the local directory where cache gets imported from. - */ - src: pulumi.Input; -} - -export interface CacheFromRegistryArgs { - /** - * Fully qualified name of the cache image to import. - */ - ref: pulumi.Input; -} - -export interface CacheFromS3Args { - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - */ - accessKeyId?: pulumi.Input; - /** - * Prefix to prepend to blob filenames. - */ - blobsPrefix?: pulumi.Input; - /** - * Name of the S3 bucket. - */ - bucket: pulumi.Input; - /** - * Endpoint of the S3 bucket. - */ - endpointUrl?: pulumi.Input; - /** - * Prefix to prepend on manifest filenames. - */ - manifestsPrefix?: pulumi.Input; - /** - * Name of the cache image. - */ - name?: pulumi.Input; - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - */ - region: pulumi.Input; - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - */ - secretAccessKey?: pulumi.Input; - /** - * Defaults to `$AWS_SESSION_TOKEN`. - */ - sessionToken?: pulumi.Input; - /** - * Uses `bucket` in the URL instead of hostname when `true`. - */ - usePathStyle?: pulumi.Input; -} -/** - * cacheFromS3ArgsProvideDefaults sets the appropriate defaults for CacheFromS3Args - */ -export function cacheFromS3ArgsProvideDefaults(val: CacheFromS3Args): CacheFromS3Args { - return { - ...val, - accessKeyId: (val.accessKeyId) ?? (utilities.getEnv("AWS_ACCESS_KEY_ID") || ""), - region: (val.region) ?? (utilities.getEnv("AWS_REGION") || ""), - secretAccessKey: (val.secretAccessKey) ?? (utilities.getEnv("AWS_SECRET_ACCESS_KEY") || ""), - sessionToken: (val.sessionToken) ?? (utilities.getEnv("AWS_SESSION_TOKEN") || ""), - }; -} - -export interface CacheToArgs { - /** - * Push cache to Azure's blob storage service. - */ - azblob?: pulumi.Input; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: pulumi.Input; - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - */ - gha?: pulumi.Input; - /** - * The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - */ - inline?: pulumi.Input; - /** - * A simple backend which caches imagines on your local filesystem. - */ - local?: pulumi.Input; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - */ - raw?: pulumi.Input; - /** - * Push caches to remote registries. Incompatible with the `docker` build - * driver. - */ - registry?: pulumi.Input; - /** - * Push cache to AWS S3 or S3-compatible services such as MinIO. - */ - s3?: pulumi.Input; -} -/** - * cacheToArgsProvideDefaults sets the appropriate defaults for CacheToArgs - */ -export function cacheToArgsProvideDefaults(val: CacheToArgs): CacheToArgs { - return { - ...val, - azblob: (val.azblob ? pulumi.output(val.azblob).apply(inputs.cacheToAzureBlobArgsProvideDefaults) : undefined), - gha: (val.gha ? pulumi.output(val.gha).apply(inputs.cacheToGitHubActionsArgsProvideDefaults) : undefined), - local: (val.local ? pulumi.output(val.local).apply(inputs.cacheToLocalArgsProvideDefaults) : undefined), - registry: (val.registry ? pulumi.output(val.registry).apply(inputs.cacheToRegistryArgsProvideDefaults) : undefined), - s3: (val.s3 ? pulumi.output(val.s3).apply(inputs.cacheToS3ArgsProvideDefaults) : undefined), - }; -} - -export interface CacheToAzureBlobArgs { - /** - * Base URL of the storage account. - */ - accountUrl?: pulumi.Input; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: pulumi.Input; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: pulumi.Input; - /** - * The name of the cache image. - */ - name: pulumi.Input; - /** - * Blob storage account key. - */ - secretAccessKey?: pulumi.Input; -} -/** - * cacheToAzureBlobArgsProvideDefaults sets the appropriate defaults for CacheToAzureBlobArgs - */ -export function cacheToAzureBlobArgsProvideDefaults(val: CacheToAzureBlobArgs): CacheToAzureBlobArgs { - return { - ...val, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - }; -} - -export interface CacheToGitHubActionsArgs { - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: pulumi.Input; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: pulumi.Input; - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - */ - scope?: pulumi.Input; - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - token?: pulumi.Input; - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - url?: pulumi.Input; -} -/** - * cacheToGitHubActionsArgsProvideDefaults sets the appropriate defaults for CacheToGitHubActionsArgs - */ -export function cacheToGitHubActionsArgsProvideDefaults(val: CacheToGitHubActionsArgs): CacheToGitHubActionsArgs { - return { - ...val, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - scope: (val.scope) ?? (utilities.getEnv("buildkit") || ""), - token: (val.token) ?? (utilities.getEnv("ACTIONS_RUNTIME_TOKEN") || ""), - url: (val.url) ?? (utilities.getEnv("ACTIONS_CACHE_URL") || ""), - }; -} - -/** - * Include an inline cache with the exported image. - */ -export interface CacheToInlineArgs { -} - -export interface CacheToLocalArgs { - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * Path of the local directory to export the cache. - */ - dest: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: pulumi.Input; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: pulumi.Input; -} -/** - * cacheToLocalArgsProvideDefaults sets the appropriate defaults for CacheToLocalArgs - */ -export function cacheToLocalArgsProvideDefaults(val: CacheToLocalArgs): CacheToLocalArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - }; -} - -export interface CacheToRegistryArgs { - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: pulumi.Input; - /** - * Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - */ - imageManifest?: pulumi.Input; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: pulumi.Input; - /** - * Whether to use OCI media types in exported manifests. Defaults to - * `true`. - */ - ociMediaTypes?: pulumi.Input; - /** - * Fully qualified name of the cache image to import. - */ - ref: pulumi.Input; -} -/** - * cacheToRegistryArgsProvideDefaults sets the appropriate defaults for CacheToRegistryArgs - */ -export function cacheToRegistryArgsProvideDefaults(val: CacheToRegistryArgs): CacheToRegistryArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ignoreError: (val.ignoreError) ?? false, - imageManifest: (val.imageManifest) ?? false, - mode: (val.mode) ?? "min", - ociMediaTypes: (val.ociMediaTypes) ?? true, - }; -} - -export interface CacheToS3Args { - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - */ - accessKeyId?: pulumi.Input; - /** - * Prefix to prepend to blob filenames. - */ - blobsPrefix?: pulumi.Input; - /** - * Name of the S3 bucket. - */ - bucket: pulumi.Input; - /** - * Endpoint of the S3 bucket. - */ - endpointUrl?: pulumi.Input; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: pulumi.Input; - /** - * Prefix to prepend on manifest filenames. - */ - manifestsPrefix?: pulumi.Input; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: pulumi.Input; - /** - * Name of the cache image. - */ - name?: pulumi.Input; - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - */ - region: pulumi.Input; - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - */ - secretAccessKey?: pulumi.Input; - /** - * Defaults to `$AWS_SESSION_TOKEN`. - */ - sessionToken?: pulumi.Input; - /** - * Uses `bucket` in the URL instead of hostname when `true`. - */ - usePathStyle?: pulumi.Input; -} -/** - * cacheToS3ArgsProvideDefaults sets the appropriate defaults for CacheToS3Args - */ -export function cacheToS3ArgsProvideDefaults(val: CacheToS3Args): CacheToS3Args { - return { - ...val, - accessKeyId: (val.accessKeyId) ?? (utilities.getEnv("AWS_ACCESS_KEY_ID") || ""), - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - region: (val.region) ?? (utilities.getEnv("AWS_REGION") || ""), - secretAccessKey: (val.secretAccessKey) ?? (utilities.getEnv("AWS_SECRET_ACCESS_KEY") || ""), - sessionToken: (val.sessionToken) ?? (utilities.getEnv("AWS_SESSION_TOKEN") || ""), - }; -} - -export interface ContextArgs { - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - */ - location: pulumi.Input; -} - -export interface DockerfileArgs { - /** - * Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - */ - inline?: pulumi.Input; - /** - * Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - */ - location?: pulumi.Input; -} - -export interface ExportArgs { - /** - * A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - */ - cacheonly?: pulumi.Input; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: pulumi.Input; - /** - * Export as a Docker image layout. - */ - docker?: pulumi.Input; - /** - * Outputs the build result into a container image format. - */ - image?: pulumi.Input; - /** - * Export to a local directory as files and directories. - */ - local?: pulumi.Input; - /** - * Identical to the Docker exporter but uses OCI media types by default. - */ - oci?: pulumi.Input; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - */ - raw?: pulumi.Input; - /** - * Identical to the Image exporter, but pushes by default. - */ - registry?: pulumi.Input; - /** - * Export to a local directory as a tarball. - */ - tar?: pulumi.Input; -} -/** - * exportArgsProvideDefaults sets the appropriate defaults for ExportArgs - */ -export function exportArgsProvideDefaults(val: ExportArgs): ExportArgs { - return { - ...val, - docker: (val.docker ? pulumi.output(val.docker).apply(inputs.exportDockerArgsProvideDefaults) : undefined), - image: (val.image ? pulumi.output(val.image).apply(inputs.exportImageArgsProvideDefaults) : undefined), - oci: (val.oci ? pulumi.output(val.oci).apply(inputs.exportOCIArgsProvideDefaults) : undefined), - registry: (val.registry ? pulumi.output(val.registry).apply(inputs.exportRegistryArgsProvideDefaults) : undefined), - }; -} - -export interface ExportCacheOnlyArgs { -} - -export interface ExportDockerArgs { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * The local export path. - */ - dest?: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: pulumi.Input[]>; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: pulumi.Input; - /** - * Bundle the output into a tarball layout. - */ - tar?: pulumi.Input; -} -/** - * exportDockerArgsProvideDefaults sets the appropriate defaults for ExportDockerArgs - */ -export function exportDockerArgsProvideDefaults(val: ExportDockerArgs): ExportDockerArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - tar: (val.tar) ?? true, - }; -} - -export interface ExportImageArgs { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * Name image with `prefix@`, used for anonymous images. - */ - danglingNamePrefix?: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Allow pushing to an insecure registry. - */ - insecure?: pulumi.Input; - /** - * Add additional canonical name (`name@`). - */ - nameCanonical?: pulumi.Input; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: pulumi.Input[]>; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: pulumi.Input; - /** - * Push after creating the image. Defaults to `false`. - */ - push?: pulumi.Input; - /** - * Push image without name. - */ - pushByDigest?: pulumi.Input; - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - */ - store?: pulumi.Input; - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - */ - unpack?: pulumi.Input; -} -/** - * exportImageArgsProvideDefaults sets the appropriate defaults for ExportImageArgs - */ -export function exportImageArgsProvideDefaults(val: ExportImageArgs): ExportImageArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - store: (val.store) ?? true, - }; -} - -export interface ExportLocalArgs { - /** - * Output path. - */ - dest: pulumi.Input; -} - -export interface ExportOCIArgs { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * The local export path. - */ - dest?: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: pulumi.Input[]>; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: pulumi.Input; - /** - * Bundle the output into a tarball layout. - */ - tar?: pulumi.Input; -} -/** - * exportOCIArgsProvideDefaults sets the appropriate defaults for ExportOCIArgs - */ -export function exportOCIArgsProvideDefaults(val: ExportOCIArgs): ExportOCIArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? true, - tar: (val.tar) ?? true, - }; -} - -export interface ExportRegistryArgs { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * The compression type to use. - */ - compression?: pulumi.Input; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: pulumi.Input; - /** - * Name image with `prefix@`, used for anonymous images. - */ - danglingNamePrefix?: pulumi.Input; - /** - * Forcefully apply compression. - */ - forceCompression?: pulumi.Input; - /** - * Allow pushing to an insecure registry. - */ - insecure?: pulumi.Input; - /** - * Add additional canonical name (`name@`). - */ - nameCanonical?: pulumi.Input; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: pulumi.Input[]>; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: pulumi.Input; - /** - * Push after creating the image. Defaults to `true`. - */ - push?: pulumi.Input; - /** - * Push image without name. - */ - pushByDigest?: pulumi.Input; - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - */ - store?: pulumi.Input; - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - */ - unpack?: pulumi.Input; -} -/** - * exportRegistryArgsProvideDefaults sets the appropriate defaults for ExportRegistryArgs - */ -export function exportRegistryArgsProvideDefaults(val: ExportRegistryArgs): ExportRegistryArgs { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - push: (val.push) ?? true, - store: (val.store) ?? true, - }; -} - -export interface ExportTarArgs { - /** - * Output path. - */ - dest: pulumi.Input; -} - -export interface RegistryArgs { - /** - * The registry's address (e.g. "docker.io"). - */ - address: pulumi.Input; - /** - * Password or token for the registry. - */ - password?: pulumi.Input; - /** - * Username for the registry. - */ - username?: pulumi.Input; -} - -export interface SSHArgs { - /** - * Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - */ - id: pulumi.Input; - /** - * SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - */ - paths?: pulumi.Input[]>; -} diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts deleted file mode 100644 index 54a01a4..0000000 --- a/sdk/nodejs/types/output.ts +++ /dev/null @@ -1,909 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - -import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "../types/input"; -import * as outputs from "../types/output"; -import * as enums from "../types/enums"; - -import * as utilities from "../utilities"; - -export interface BuildContext { - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - */ - location: string; - /** - * Additional build contexts to use. - * - * These contexts are accessed with `FROM name` or `--from=name` - * statements when using Dockerfile 1.4+ syntax. - * - * Values can be local paths, HTTP URLs, or `docker-image://` images. - */ - named?: {[key: string]: outputs.Context}; -} - -export interface BuilderConfig { - /** - * Name of an existing buildx builder to use. - * - * Only `docker-container`, `kubernetes`, or `remote` drivers are - * supported. The legacy `docker` driver is not supported. - * - * Equivalent to Docker's `--builder` flag. - */ - name?: string; -} - -export interface CacheFrom { - /** - * Upload build caches to Azure's blob storage service. - */ - azblob?: outputs.CacheFromAzureBlob; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: boolean; - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - */ - gha?: outputs.CacheFromGitHubActions; - /** - * A simple backend which caches images on your local filesystem. - */ - local?: outputs.CacheFromLocal; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`). - */ - raw?: string; - /** - * Upload build caches to remote registries. - */ - registry?: outputs.CacheFromRegistry; - /** - * Upload build caches to AWS S3 or an S3-compatible services such as - * MinIO. - */ - s3?: outputs.CacheFromS3; -} -/** - * cacheFromProvideDefaults sets the appropriate defaults for CacheFrom - */ -export function cacheFromProvideDefaults(val: CacheFrom): CacheFrom { - return { - ...val, - gha: (val.gha ? outputs.cacheFromGitHubActionsProvideDefaults(val.gha) : undefined), - s3: (val.s3 ? outputs.cacheFromS3ProvideDefaults(val.s3) : undefined), - }; -} - -export interface CacheFromAzureBlob { - /** - * Base URL of the storage account. - */ - accountUrl?: string; - /** - * The name of the cache image. - */ - name: string; - /** - * Blob storage account key. - */ - secretAccessKey?: string; -} - -export interface CacheFromGitHubActions { - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - */ - scope?: string; - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - token?: string; - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - url?: string; -} -/** - * cacheFromGitHubActionsProvideDefaults sets the appropriate defaults for CacheFromGitHubActions - */ -export function cacheFromGitHubActionsProvideDefaults(val: CacheFromGitHubActions): CacheFromGitHubActions { - return { - ...val, - scope: (val.scope) ?? (utilities.getEnv("buildkit") || ""), - token: (val.token) ?? (utilities.getEnv("ACTIONS_RUNTIME_TOKEN") || ""), - url: (val.url) ?? (utilities.getEnv("ACTIONS_CACHE_URL") || ""), - }; -} - -export interface CacheFromLocal { - /** - * Digest of manifest to import. - */ - digest?: string; - /** - * Path of the local directory where cache gets imported from. - */ - src: string; -} - -export interface CacheFromRegistry { - /** - * Fully qualified name of the cache image to import. - */ - ref: string; -} - -export interface CacheFromS3 { - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - */ - accessKeyId?: string; - /** - * Prefix to prepend to blob filenames. - */ - blobsPrefix?: string; - /** - * Name of the S3 bucket. - */ - bucket: string; - /** - * Endpoint of the S3 bucket. - */ - endpointUrl?: string; - /** - * Prefix to prepend on manifest filenames. - */ - manifestsPrefix?: string; - /** - * Name of the cache image. - */ - name?: string; - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - */ - region: string; - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - */ - secretAccessKey?: string; - /** - * Defaults to `$AWS_SESSION_TOKEN`. - */ - sessionToken?: string; - /** - * Uses `bucket` in the URL instead of hostname when `true`. - */ - usePathStyle?: boolean; -} -/** - * cacheFromS3ProvideDefaults sets the appropriate defaults for CacheFromS3 - */ -export function cacheFromS3ProvideDefaults(val: CacheFromS3): CacheFromS3 { - return { - ...val, - accessKeyId: (val.accessKeyId) ?? (utilities.getEnv("AWS_ACCESS_KEY_ID") || ""), - region: (val.region) ?? (utilities.getEnv("AWS_REGION") || ""), - secretAccessKey: (val.secretAccessKey) ?? (utilities.getEnv("AWS_SECRET_ACCESS_KEY") || ""), - sessionToken: (val.sessionToken) ?? (utilities.getEnv("AWS_SESSION_TOKEN") || ""), - }; -} - -export interface CacheTo { - /** - * Push cache to Azure's blob storage service. - */ - azblob?: outputs.CacheToAzureBlob; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: boolean; - /** - * Recommended for use with GitHub Actions workflows. - * - * An action like `crazy-max/ghaction-github-runtime` is recommended to - * expose appropriate credentials to your GitHub workflow. - */ - gha?: outputs.CacheToGitHubActions; - /** - * The inline cache storage backend is the simplest implementation to get - * started with, but it does not handle multi-stage builds. Consider the - * `registry` cache backend instead. - */ - inline?: outputs.CacheToInline; - /** - * A simple backend which caches imagines on your local filesystem. - */ - local?: outputs.CacheToLocal; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=inline`) - */ - raw?: string; - /** - * Push caches to remote registries. Incompatible with the `docker` build - * driver. - */ - registry?: outputs.CacheToRegistry; - /** - * Push cache to AWS S3 or S3-compatible services such as MinIO. - */ - s3?: outputs.CacheToS3; -} -/** - * cacheToProvideDefaults sets the appropriate defaults for CacheTo - */ -export function cacheToProvideDefaults(val: CacheTo): CacheTo { - return { - ...val, - azblob: (val.azblob ? outputs.cacheToAzureBlobProvideDefaults(val.azblob) : undefined), - gha: (val.gha ? outputs.cacheToGitHubActionsProvideDefaults(val.gha) : undefined), - local: (val.local ? outputs.cacheToLocalProvideDefaults(val.local) : undefined), - registry: (val.registry ? outputs.cacheToRegistryProvideDefaults(val.registry) : undefined), - s3: (val.s3 ? outputs.cacheToS3ProvideDefaults(val.s3) : undefined), - }; -} - -export interface CacheToAzureBlob { - /** - * Base URL of the storage account. - */ - accountUrl?: string; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: boolean; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: enums.CacheMode; - /** - * The name of the cache image. - */ - name: string; - /** - * Blob storage account key. - */ - secretAccessKey?: string; -} -/** - * cacheToAzureBlobProvideDefaults sets the appropriate defaults for CacheToAzureBlob - */ -export function cacheToAzureBlobProvideDefaults(val: CacheToAzureBlob): CacheToAzureBlob { - return { - ...val, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - }; -} - -export interface CacheToGitHubActions { - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: boolean; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: enums.CacheMode; - /** - * The scope to use for cache keys. Defaults to `buildkit`. - * - * This should be set if building and caching multiple images in one - * workflow, otherwise caches will overwrite each other. - */ - scope?: string; - /** - * The GitHub Actions token to use. This is not a personal access tokens - * and is typically generated automatically as part of each job. - * - * Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - token?: string; - /** - * The cache server URL to use for artifacts. - * - * Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - * `crazy-max/ghaction-github-runtime` is recommended to expose this - * environment variable to your jobs. - */ - url?: string; -} -/** - * cacheToGitHubActionsProvideDefaults sets the appropriate defaults for CacheToGitHubActions - */ -export function cacheToGitHubActionsProvideDefaults(val: CacheToGitHubActions): CacheToGitHubActions { - return { - ...val, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - scope: (val.scope) ?? (utilities.getEnv("buildkit") || ""), - token: (val.token) ?? (utilities.getEnv("ACTIONS_RUNTIME_TOKEN") || ""), - url: (val.url) ?? (utilities.getEnv("ACTIONS_CACHE_URL") || ""), - }; -} - -/** - * Include an inline cache with the exported image. - */ -export interface CacheToInline { -} - -export interface CacheToLocal { - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * Path of the local directory to export the cache. - */ - dest: string; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: boolean; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: enums.CacheMode; -} -/** - * cacheToLocalProvideDefaults sets the appropriate defaults for CacheToLocal - */ -export function cacheToLocalProvideDefaults(val: CacheToLocal): CacheToLocal { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - }; -} - -export interface CacheToRegistry { - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: boolean; - /** - * Export cache manifest as an OCI-compatible image manifest instead of a - * manifest list. Requires `ociMediaTypes` to also be `true`. - * - * Some registries like AWS ECR will not work with caching if this is - * `false`. - * - * Defaults to `false` to match Docker's default behavior. - */ - imageManifest?: boolean; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: enums.CacheMode; - /** - * Whether to use OCI media types in exported manifests. Defaults to - * `true`. - */ - ociMediaTypes?: boolean; - /** - * Fully qualified name of the cache image to import. - */ - ref: string; -} -/** - * cacheToRegistryProvideDefaults sets the appropriate defaults for CacheToRegistry - */ -export function cacheToRegistryProvideDefaults(val: CacheToRegistry): CacheToRegistry { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ignoreError: (val.ignoreError) ?? false, - imageManifest: (val.imageManifest) ?? false, - mode: (val.mode) ?? "min", - ociMediaTypes: (val.ociMediaTypes) ?? true, - }; -} - -export interface CacheToS3 { - /** - * Defaults to `$AWS_ACCESS_KEY_ID`. - */ - accessKeyId?: string; - /** - * Prefix to prepend to blob filenames. - */ - blobsPrefix?: string; - /** - * Name of the S3 bucket. - */ - bucket: string; - /** - * Endpoint of the S3 bucket. - */ - endpointUrl?: string; - /** - * Ignore errors caused by failed cache exports. - */ - ignoreError?: boolean; - /** - * Prefix to prepend on manifest filenames. - */ - manifestsPrefix?: string; - /** - * The cache mode to use. Defaults to `min`. - */ - mode?: enums.CacheMode; - /** - * Name of the cache image. - */ - name?: string; - /** - * The geographic location of the bucket. Defaults to `$AWS_REGION`. - */ - region: string; - /** - * Defaults to `$AWS_SECRET_ACCESS_KEY`. - */ - secretAccessKey?: string; - /** - * Defaults to `$AWS_SESSION_TOKEN`. - */ - sessionToken?: string; - /** - * Uses `bucket` in the URL instead of hostname when `true`. - */ - usePathStyle?: boolean; -} -/** - * cacheToS3ProvideDefaults sets the appropriate defaults for CacheToS3 - */ -export function cacheToS3ProvideDefaults(val: CacheToS3): CacheToS3 { - return { - ...val, - accessKeyId: (val.accessKeyId) ?? (utilities.getEnv("AWS_ACCESS_KEY_ID") || ""), - ignoreError: (val.ignoreError) ?? false, - mode: (val.mode) ?? "min", - region: (val.region) ?? (utilities.getEnv("AWS_REGION") || ""), - secretAccessKey: (val.secretAccessKey) ?? (utilities.getEnv("AWS_SECRET_ACCESS_KEY") || ""), - sessionToken: (val.sessionToken) ?? (utilities.getEnv("AWS_SESSION_TOKEN") || ""), - }; -} - -export interface Context { - /** - * Resources to use for build context. - * - * The location can be: - * * A relative or absolute path to a local directory (`.`, `./app`, - * `/app`, etc.). - * * A remote URL of a Git repository, tarball, or plain text file - * (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - * etc.). - */ - location: string; -} - -export interface Dockerfile { - /** - * Raw Dockerfile contents. - * - * Conflicts with `location`. - * - * Equivalent to invoking Docker with `-f -`. - */ - inline?: string; - /** - * Location of the Dockerfile to use. - * - * Can be a relative or absolute path to a local file, or a remote URL. - * - * Defaults to `${context.location}/Dockerfile` if context is on-disk. - * - * Conflicts with `inline`. - */ - location?: string; -} - -export interface Export { - /** - * A no-op export. Helpful for silencing the 'no exports' warning if you - * just want to populate caches. - */ - cacheonly?: outputs.ExportCacheOnly; - /** - * When `true` this entry will be excluded. Defaults to `false`. - */ - disabled?: boolean; - /** - * Export as a Docker image layout. - */ - docker?: outputs.ExportDocker; - /** - * Outputs the build result into a container image format. - */ - image?: outputs.ExportImage; - /** - * Export to a local directory as files and directories. - */ - local?: outputs.ExportLocal; - /** - * Identical to the Docker exporter but uses OCI media types by default. - */ - oci?: outputs.ExportOCI; - /** - * A raw string as you would provide it to the Docker CLI (e.g., - * `type=docker`) - */ - raw?: string; - /** - * Identical to the Image exporter, but pushes by default. - */ - registry?: outputs.ExportRegistry; - /** - * Export to a local directory as a tarball. - */ - tar?: outputs.ExportTar; -} -/** - * exportProvideDefaults sets the appropriate defaults for Export - */ -export function exportProvideDefaults(val: Export): Export { - return { - ...val, - docker: (val.docker ? outputs.exportDockerProvideDefaults(val.docker) : undefined), - image: (val.image ? outputs.exportImageProvideDefaults(val.image) : undefined), - oci: (val.oci ? outputs.exportOCIProvideDefaults(val.oci) : undefined), - registry: (val.registry ? outputs.exportRegistryProvideDefaults(val.registry) : undefined), - }; -} - -export interface ExportCacheOnly { -} - -export interface ExportDocker { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: {[key: string]: string}; - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * The local export path. - */ - dest?: string; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: string[]; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: boolean; - /** - * Bundle the output into a tarball layout. - */ - tar?: boolean; -} -/** - * exportDockerProvideDefaults sets the appropriate defaults for ExportDocker - */ -export function exportDockerProvideDefaults(val: ExportDocker): ExportDocker { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - tar: (val.tar) ?? true, - }; -} - -export interface ExportImage { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: {[key: string]: string}; - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * Name image with `prefix@`, used for anonymous images. - */ - danglingNamePrefix?: string; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Allow pushing to an insecure registry. - */ - insecure?: boolean; - /** - * Add additional canonical name (`name@`). - */ - nameCanonical?: boolean; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: string[]; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: boolean; - /** - * Push after creating the image. Defaults to `false`. - */ - push?: boolean; - /** - * Push image without name. - */ - pushByDigest?: boolean; - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - */ - store?: boolean; - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - */ - unpack?: boolean; -} -/** - * exportImageProvideDefaults sets the appropriate defaults for ExportImage - */ -export function exportImageProvideDefaults(val: ExportImage): ExportImage { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - store: (val.store) ?? true, - }; -} - -export interface ExportLocal { - /** - * Output path. - */ - dest: string; -} - -export interface ExportOCI { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: {[key: string]: string}; - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * The local export path. - */ - dest?: string; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: string[]; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: boolean; - /** - * Bundle the output into a tarball layout. - */ - tar?: boolean; -} -/** - * exportOCIProvideDefaults sets the appropriate defaults for ExportOCI - */ -export function exportOCIProvideDefaults(val: ExportOCI): ExportOCI { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? true, - tar: (val.tar) ?? true, - }; -} - -export interface ExportRegistry { - /** - * Attach an arbitrary key/value annotation to the image. - */ - annotations?: {[key: string]: string}; - /** - * The compression type to use. - */ - compression?: enums.CompressionType; - /** - * Compression level from 0 to 22. - */ - compressionLevel?: number; - /** - * Name image with `prefix@`, used for anonymous images. - */ - danglingNamePrefix?: string; - /** - * Forcefully apply compression. - */ - forceCompression?: boolean; - /** - * Allow pushing to an insecure registry. - */ - insecure?: boolean; - /** - * Add additional canonical name (`name@`). - */ - nameCanonical?: boolean; - /** - * Specify images names to export. This is overridden if tags are already specified. - */ - names?: string[]; - /** - * Use OCI media types in exporter manifests. - */ - ociMediaTypes?: boolean; - /** - * Push after creating the image. Defaults to `true`. - */ - push?: boolean; - /** - * Push image without name. - */ - pushByDigest?: boolean; - /** - * Store resulting images to the worker's image store and ensure all of - * its blobs are in the content store. - * - * Defaults to `true`. - * - * Ignored if the worker doesn't have image store (when using OCI workers, - * for example). - */ - store?: boolean; - /** - * Unpack image after creation (for use with containerd). Defaults to - * `false`. - */ - unpack?: boolean; -} -/** - * exportRegistryProvideDefaults sets the appropriate defaults for ExportRegistry - */ -export function exportRegistryProvideDefaults(val: ExportRegistry): ExportRegistry { - return { - ...val, - compression: (val.compression) ?? "gzip", - compressionLevel: (val.compressionLevel) ?? 0, - forceCompression: (val.forceCompression) ?? false, - ociMediaTypes: (val.ociMediaTypes) ?? false, - push: (val.push) ?? true, - store: (val.store) ?? true, - }; -} - -export interface ExportTar { - /** - * Output path. - */ - dest: string; -} - -export interface Registry { - /** - * The registry's address (e.g. "docker.io"). - */ - address: string; - /** - * Password or token for the registry. - */ - password?: string; - /** - * Username for the registry. - */ - username?: string; -} - -export interface SSH { - /** - * Useful for distinguishing different servers that are part of the same - * build. - * - * A value of `default` is appropriate if only dealing with a single host. - */ - id: string; - /** - * SSH agent socket or private keys to expose to the build under the given - * identifier. - * - * Defaults to `[$SSH_AUTH_SOCK]`. - * - * Note that your keys are **not** automatically added when using an - * agent. Run `ssh-add -l` locally to confirm which public keys are - * visible to the agent; these will be exposed to your build. - */ - paths?: string[]; -} - diff --git a/sdk/nodejs/utilities.ts b/sdk/nodejs/utilities.ts deleted file mode 100644 index fb0d823..0000000 --- a/sdk/nodejs/utilities.ts +++ /dev/null @@ -1,95 +0,0 @@ -// *** WARNING: this file was generated by pulumi-language-nodejs. *** -// *** Do not edit by hand unless you're certain you know what you are doing! *** - - -import * as runtime from "@pulumi/pulumi/runtime"; -import * as pulumi from "@pulumi/pulumi"; - -export function getEnv(...vars: string[]): string | undefined { - for (const v of vars) { - const value = process.env[v]; - if (value) { - return value; - } - } - return undefined; -} - -export function getEnvBoolean(...vars: string[]): boolean | undefined { - const s = getEnv(...vars); - if (s !== undefined) { - // NOTE: these values are taken from https://golang.org/src/strconv/atob.go?s=351:391#L1, which is what - // Terraform uses internally when parsing boolean values. - if (["1", "t", "T", "true", "TRUE", "True"].find(v => v === s) !== undefined) { - return true; - } - if (["0", "f", "F", "false", "FALSE", "False"].find(v => v === s) !== undefined) { - return false; - } - } - return undefined; -} - -export function getEnvNumber(...vars: string[]): number | undefined { - const s = getEnv(...vars); - if (s !== undefined) { - const f = parseFloat(s); - if (!isNaN(f)) { - return f; - } - } - return undefined; -} - -export function getVersion(): string { - let version = require('./package.json').version; - // Node allows for the version to be prefixed by a "v", while semver doesn't. - // If there is a v, strip it off. - if (version.indexOf('v') === 0) { - version = version.slice(1); - } - return version; -} - -/** @internal */ -export function resourceOptsDefaults(): any { - return { version: getVersion() }; -} - -/** @internal */ -export function lazyLoad(exports: any, props: string[], loadModule: any) { - for (let property of props) { - Object.defineProperty(exports, property, { - enumerable: true, - get: function() { - return loadModule()[property]; - }, - }); - } -} - -export async function callAsync( - tok: string, - props: pulumi.Inputs, - res?: pulumi.Resource, - opts?: {property?: string}, -): Promise { - const o: any = runtime.call(tok, props, res); - const value = await o.promise(true /*withUnknowns*/); - const isKnown = await o.isKnown; - const isSecret = await o.isSecret; - const problem: string|undefined = - !isKnown ? "an unknown value" - : isSecret ? "a secret value" - : undefined; - // Ingoring o.resources silently. They are typically non-empty, r.f() calls include r as a dependency. - if (problem) { - throw new Error(`Plain resource method "${tok}" incorrectly returned ${problem}. ` + - "This is an error in the provider, please report this to the provider developer."); - } - // Extract a single property if requested. - if (opts && opts.property) { - return value[opts.property]; - } - return value; -} diff --git a/sdk/python/README.md b/sdk/python/README.md deleted file mode 100644 index a4a8af5..0000000 --- a/sdk/python/README.md +++ /dev/null @@ -1,23 +0,0 @@ -[![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) - -# Docker-Build Resource 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/). - -Not to be confused with the earlier -[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. | - -## Reference - -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/). diff --git a/sdk/python/pulumi_docker_build/README.md b/sdk/python/pulumi_docker_build/README.md deleted file mode 100644 index a778720..0000000 --- a/sdk/python/pulumi_docker_build/README.md +++ /dev/null @@ -1 +0,0 @@ -A Pulumi provider for building modern Docker images with buildx and BuildKit. diff --git a/sdk/python/pulumi_docker_build/__init__.py b/sdk/python/pulumi_docker_build/__init__.py deleted file mode 100644 index b15e3e3..0000000 --- a/sdk/python/pulumi_docker_build/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -from . import _utilities -import typing -# Export this package's modules as members: -from ._enums import * -from .image import * -from .index import * -from .provider import * -from ._inputs import * -from . import outputs - -# Make subpackages available: -if typing.TYPE_CHECKING: - import pulumi_docker_build.config as __config - config = __config -else: - config = _utilities.lazy_import('pulumi_docker_build.config') - -_utilities.register( - resource_modules=""" -[ - { - "pkg": "docker-build", - "mod": "index", - "fqn": "pulumi_docker_build", - "classes": { - "docker-build:index:Image": "Image", - "docker-build:index:Index": "Index" - } - } -] -""", - resource_packages=""" -[ - { - "pkg": "docker-build", - "token": "pulumi:providers:docker-build", - "fqn": "pulumi_docker_build", - "class": "Provider" - } -] -""" -) diff --git a/sdk/python/pulumi_docker_build/_enums.py b/sdk/python/pulumi_docker_build/_enums.py deleted file mode 100644 index 24609b7..0000000 --- a/sdk/python/pulumi_docker_build/_enums.py +++ /dev/null @@ -1,84 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -from enum import Enum - -__all__ = [ - 'CacheMode', - 'CompressionType', - 'NetworkMode', - 'Platform', -] - - -class CacheMode(str, Enum): - MIN = "min" - """ - Only layers that are exported into the resulting image are cached. - """ - MAX = "max" - """ - All layers are cached, even those of intermediate steps. - """ - - -class CompressionType(str, Enum): - GZIP = "gzip" - """ - Use `gzip` for compression. - """ - ESTARGZ = "estargz" - """ - Use `estargz` for compression. - """ - ZSTD = "zstd" - """ - Use `zstd` for compression. - """ - - -class NetworkMode(str, Enum): - DEFAULT = "default" - """ - The default sandbox network mode. - """ - HOST = "host" - """ - Host network mode. - """ - NONE = "none" - """ - Disable network access. - """ - - -class Platform(str, Enum): - DARWIN_386 = "darwin/386" - DARWIN_AMD64 = "darwin/amd64" - DARWIN_ARM = "darwin/arm" - DARWIN_ARM64 = "darwin/arm64" - DRAGONFLY_AMD64 = "dragonfly/amd64" - FREEBSD_386 = "freebsd/386" - FREEBSD_AMD64 = "freebsd/amd64" - FREEBSD_ARM = "freebsd/arm" - LINUX_386 = "linux/386" - LINUX_AMD64 = "linux/amd64" - LINUX_ARM = "linux/arm" - LINUX_ARM64 = "linux/arm64" - LINUX_MIPS64 = "linux/mips64" - LINUX_MIPS64LE = "linux/mips64le" - LINUX_PPC64LE = "linux/ppc64le" - LINUX_RISCV64 = "linux/riscv64" - LINUX_S390X = "linux/s390x" - NETBSD_386 = "netbsd/386" - NETBSD_AMD64 = "netbsd/amd64" - NETBSD_ARM = "netbsd/arm" - OPENBSD_386 = "openbsd/386" - OPENBSD_AMD64 = "openbsd/amd64" - OPENBSD_ARM = "openbsd/arm" - PLAN9_386 = "plan9/386" - PLAN9_AMD64 = "plan9/amd64" - SOLARIS_AMD64 = "solaris/amd64" - WINDOWS_386 = "windows/386" - WINDOWS_AMD64 = "windows/amd64" diff --git a/sdk/python/pulumi_docker_build/_inputs.py b/sdk/python/pulumi_docker_build/_inputs.py deleted file mode 100644 index 6af554b..0000000 --- a/sdk/python/pulumi_docker_build/_inputs.py +++ /dev/null @@ -1,2672 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from . import _utilities -from ._enums import * - -__all__ = [ - 'BuildContextArgs', - 'BuilderConfigArgs', - 'CacheFromAzureBlobArgs', - 'CacheFromGitHubActionsArgs', - 'CacheFromLocalArgs', - 'CacheFromRegistryArgs', - 'CacheFromS3Args', - 'CacheFromArgs', - 'CacheToAzureBlobArgs', - 'CacheToGitHubActionsArgs', - 'CacheToInlineArgs', - 'CacheToLocalArgs', - 'CacheToRegistryArgs', - 'CacheToS3Args', - 'CacheToArgs', - 'ContextArgs', - 'DockerfileArgs', - 'ExportCacheOnlyArgs', - 'ExportDockerArgs', - 'ExportImageArgs', - 'ExportLocalArgs', - 'ExportOCIArgs', - 'ExportRegistryArgs', - 'ExportTarArgs', - 'ExportArgs', - 'RegistryArgs', - 'SSHArgs', -] - -@pulumi.input_type -class BuildContextArgs: - def __init__(__self__, *, - location: pulumi.Input[str], - named: Optional[pulumi.Input[Mapping[str, pulumi.Input['ContextArgs']]]] = None): - """ - :param pulumi.Input[str] location: Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - :param pulumi.Input[Mapping[str, pulumi.Input['ContextArgs']]] named: Additional build contexts to use. - - These contexts are accessed with `FROM name` or `--from=name` - statements when using Dockerfile 1.4+ syntax. - - Values can be local paths, HTTP URLs, or `docker-image://` images. - """ - pulumi.set(__self__, "location", location) - if named is not None: - pulumi.set(__self__, "named", named) - - @property - @pulumi.getter - def location(self) -> pulumi.Input[str]: - """ - Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - return pulumi.get(self, "location") - - @location.setter - def location(self, value: pulumi.Input[str]): - pulumi.set(self, "location", value) - - @property - @pulumi.getter - def named(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input['ContextArgs']]]]: - """ - Additional build contexts to use. - - These contexts are accessed with `FROM name` or `--from=name` - statements when using Dockerfile 1.4+ syntax. - - Values can be local paths, HTTP URLs, or `docker-image://` images. - """ - return pulumi.get(self, "named") - - @named.setter - def named(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input['ContextArgs']]]]): - pulumi.set(self, "named", value) - - -@pulumi.input_type -class BuilderConfigArgs: - def __init__(__self__, *, - name: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] name: Name of an existing buildx builder to use. - - Only `docker-container`, `kubernetes`, or `remote` drivers are - supported. The legacy `docker` driver is not supported. - - Equivalent to Docker's `--builder` flag. - """ - if name is not None: - pulumi.set(__self__, "name", name) - - @property - @pulumi.getter - def name(self) -> Optional[pulumi.Input[str]]: - """ - Name of an existing buildx builder to use. - - Only `docker-container`, `kubernetes`, or `remote` drivers are - supported. The legacy `docker` driver is not supported. - - Equivalent to Docker's `--builder` flag. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "name", value) - - -@pulumi.input_type -class CacheFromAzureBlobArgs: - def __init__(__self__, *, - name: pulumi.Input[str], - account_url: Optional[pulumi.Input[str]] = None, - secret_access_key: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] name: The name of the cache image. - :param pulumi.Input[str] account_url: Base URL of the storage account. - :param pulumi.Input[str] secret_access_key: Blob storage account key. - """ - pulumi.set(__self__, "name", name) - if account_url is not None: - pulumi.set(__self__, "account_url", account_url) - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - - @property - @pulumi.getter - def name(self) -> pulumi.Input[str]: - """ - The name of the cache image. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: pulumi.Input[str]): - pulumi.set(self, "name", value) - - @property - @pulumi.getter(name="accountUrl") - def account_url(self) -> Optional[pulumi.Input[str]]: - """ - Base URL of the storage account. - """ - return pulumi.get(self, "account_url") - - @account_url.setter - def account_url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "account_url", value) - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[pulumi.Input[str]]: - """ - Blob storage account key. - """ - return pulumi.get(self, "secret_access_key") - - @secret_access_key.setter - def secret_access_key(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secret_access_key", value) - - -@pulumi.input_type -class CacheFromGitHubActionsArgs: - def __init__(__self__, *, - scope: Optional[pulumi.Input[str]] = None, - token: Optional[pulumi.Input[str]] = None, - url: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] scope: The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - :param pulumi.Input[str] token: The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - :param pulumi.Input[str] url: The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - if scope is None: - scope = (_utilities.get_env('buildkit') or '') - if scope is not None: - pulumi.set(__self__, "scope", scope) - if token is None: - token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '') - if token is not None: - pulumi.set(__self__, "token", token) - if url is None: - url = (_utilities.get_env('ACTIONS_CACHE_URL') or '') - if url is not None: - pulumi.set(__self__, "url", url) - - @property - @pulumi.getter - def scope(self) -> Optional[pulumi.Input[str]]: - """ - The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - """ - return pulumi.get(self, "scope") - - @scope.setter - def scope(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "scope", value) - - @property - @pulumi.getter - def token(self) -> Optional[pulumi.Input[str]]: - """ - The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "token") - - @token.setter - def token(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "token", value) - - @property - @pulumi.getter - def url(self) -> Optional[pulumi.Input[str]]: - """ - The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "url") - - @url.setter - def url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "url", value) - - -@pulumi.input_type -class CacheFromLocalArgs: - def __init__(__self__, *, - src: pulumi.Input[str], - digest: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] src: Path of the local directory where cache gets imported from. - :param pulumi.Input[str] digest: Digest of manifest to import. - """ - pulumi.set(__self__, "src", src) - if digest is not None: - pulumi.set(__self__, "digest", digest) - - @property - @pulumi.getter - def src(self) -> pulumi.Input[str]: - """ - Path of the local directory where cache gets imported from. - """ - return pulumi.get(self, "src") - - @src.setter - def src(self, value: pulumi.Input[str]): - pulumi.set(self, "src", value) - - @property - @pulumi.getter - def digest(self) -> Optional[pulumi.Input[str]]: - """ - Digest of manifest to import. - """ - return pulumi.get(self, "digest") - - @digest.setter - def digest(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "digest", value) - - -@pulumi.input_type -class CacheFromRegistryArgs: - def __init__(__self__, *, - ref: pulumi.Input[str]): - """ - :param pulumi.Input[str] ref: Fully qualified name of the cache image to import. - """ - pulumi.set(__self__, "ref", ref) - - @property - @pulumi.getter - def ref(self) -> pulumi.Input[str]: - """ - Fully qualified name of the cache image to import. - """ - return pulumi.get(self, "ref") - - @ref.setter - def ref(self, value: pulumi.Input[str]): - pulumi.set(self, "ref", value) - - -@pulumi.input_type -class CacheFromS3Args: - def __init__(__self__, *, - bucket: pulumi.Input[str], - region: Optional[pulumi.Input[str]] = None, - access_key_id: Optional[pulumi.Input[str]] = None, - blobs_prefix: Optional[pulumi.Input[str]] = None, - endpoint_url: Optional[pulumi.Input[str]] = None, - manifests_prefix: Optional[pulumi.Input[str]] = None, - name: Optional[pulumi.Input[str]] = None, - secret_access_key: Optional[pulumi.Input[str]] = None, - session_token: Optional[pulumi.Input[str]] = None, - use_path_style: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[str] bucket: Name of the S3 bucket. - :param pulumi.Input[str] region: The geographic location of the bucket. Defaults to `$AWS_REGION`. - :param pulumi.Input[str] access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`. - :param pulumi.Input[str] blobs_prefix: Prefix to prepend to blob filenames. - :param pulumi.Input[str] endpoint_url: Endpoint of the S3 bucket. - :param pulumi.Input[str] manifests_prefix: Prefix to prepend on manifest filenames. - :param pulumi.Input[str] name: Name of the cache image. - :param pulumi.Input[str] secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`. - :param pulumi.Input[str] session_token: Defaults to `$AWS_SESSION_TOKEN`. - :param pulumi.Input[bool] use_path_style: Uses `bucket` in the URL instead of hostname when `true`. - """ - pulumi.set(__self__, "bucket", bucket) - if region is None: - region = (_utilities.get_env('AWS_REGION') or '') - pulumi.set(__self__, "region", region) - if access_key_id is None: - access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '') - if access_key_id is not None: - pulumi.set(__self__, "access_key_id", access_key_id) - if blobs_prefix is not None: - pulumi.set(__self__, "blobs_prefix", blobs_prefix) - if endpoint_url is not None: - pulumi.set(__self__, "endpoint_url", endpoint_url) - if manifests_prefix is not None: - pulumi.set(__self__, "manifests_prefix", manifests_prefix) - if name is not None: - pulumi.set(__self__, "name", name) - if secret_access_key is None: - secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '') - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - if session_token is None: - session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '') - if session_token is not None: - pulumi.set(__self__, "session_token", session_token) - if use_path_style is not None: - pulumi.set(__self__, "use_path_style", use_path_style) - - @property - @pulumi.getter - def bucket(self) -> pulumi.Input[str]: - """ - Name of the S3 bucket. - """ - return pulumi.get(self, "bucket") - - @bucket.setter - def bucket(self, value: pulumi.Input[str]): - pulumi.set(self, "bucket", value) - - @property - @pulumi.getter - def region(self) -> pulumi.Input[str]: - """ - The geographic location of the bucket. Defaults to `$AWS_REGION`. - """ - return pulumi.get(self, "region") - - @region.setter - def region(self, value: pulumi.Input[str]): - pulumi.set(self, "region", value) - - @property - @pulumi.getter(name="accessKeyId") - def access_key_id(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_ACCESS_KEY_ID`. - """ - return pulumi.get(self, "access_key_id") - - @access_key_id.setter - def access_key_id(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "access_key_id", value) - - @property - @pulumi.getter(name="blobsPrefix") - def blobs_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Prefix to prepend to blob filenames. - """ - return pulumi.get(self, "blobs_prefix") - - @blobs_prefix.setter - def blobs_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "blobs_prefix", value) - - @property - @pulumi.getter(name="endpointUrl") - def endpoint_url(self) -> Optional[pulumi.Input[str]]: - """ - Endpoint of the S3 bucket. - """ - return pulumi.get(self, "endpoint_url") - - @endpoint_url.setter - def endpoint_url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "endpoint_url", value) - - @property - @pulumi.getter(name="manifestsPrefix") - def manifests_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Prefix to prepend on manifest filenames. - """ - return pulumi.get(self, "manifests_prefix") - - @manifests_prefix.setter - def manifests_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "manifests_prefix", value) - - @property - @pulumi.getter - def name(self) -> Optional[pulumi.Input[str]]: - """ - Name of the cache image. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "name", value) - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_SECRET_ACCESS_KEY`. - """ - return pulumi.get(self, "secret_access_key") - - @secret_access_key.setter - def secret_access_key(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secret_access_key", value) - - @property - @pulumi.getter(name="sessionToken") - def session_token(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_SESSION_TOKEN`. - """ - return pulumi.get(self, "session_token") - - @session_token.setter - def session_token(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "session_token", value) - - @property - @pulumi.getter(name="usePathStyle") - def use_path_style(self) -> Optional[pulumi.Input[bool]]: - """ - Uses `bucket` in the URL instead of hostname when `true`. - """ - return pulumi.get(self, "use_path_style") - - @use_path_style.setter - def use_path_style(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "use_path_style", value) - - -@pulumi.input_type -class CacheFromArgs: - def __init__(__self__, *, - azblob: Optional[pulumi.Input['CacheFromAzureBlobArgs']] = None, - disabled: Optional[pulumi.Input[bool]] = None, - gha: Optional[pulumi.Input['CacheFromGitHubActionsArgs']] = None, - local: Optional[pulumi.Input['CacheFromLocalArgs']] = None, - raw: Optional[pulumi.Input[str]] = None, - registry: Optional[pulumi.Input['CacheFromRegistryArgs']] = None, - s3: Optional[pulumi.Input['CacheFromS3Args']] = None): - """ - :param pulumi.Input['CacheFromAzureBlobArgs'] azblob: Upload build caches to Azure's blob storage service. - :param pulumi.Input[bool] disabled: When `true` this entry will be excluded. Defaults to `false`. - :param pulumi.Input['CacheFromGitHubActionsArgs'] gha: Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - :param pulumi.Input['CacheFromLocalArgs'] local: A simple backend which caches images on your local filesystem. - :param pulumi.Input[str] raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`). - :param pulumi.Input['CacheFromRegistryArgs'] registry: Upload build caches to remote registries. - :param pulumi.Input['CacheFromS3Args'] s3: Upload build caches to AWS S3 or an S3-compatible services such as - MinIO. - """ - if azblob is not None: - pulumi.set(__self__, "azblob", azblob) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if gha is not None: - pulumi.set(__self__, "gha", gha) - if local is not None: - pulumi.set(__self__, "local", local) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if s3 is not None: - pulumi.set(__self__, "s3", s3) - - @property - @pulumi.getter - def azblob(self) -> Optional[pulumi.Input['CacheFromAzureBlobArgs']]: - """ - Upload build caches to Azure's blob storage service. - """ - return pulumi.get(self, "azblob") - - @azblob.setter - def azblob(self, value: Optional[pulumi.Input['CacheFromAzureBlobArgs']]): - pulumi.set(self, "azblob", value) - - @property - @pulumi.getter - def disabled(self) -> Optional[pulumi.Input[bool]]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @disabled.setter - def disabled(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "disabled", value) - - @property - @pulumi.getter - def gha(self) -> Optional[pulumi.Input['CacheFromGitHubActionsArgs']]: - """ - Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - """ - return pulumi.get(self, "gha") - - @gha.setter - def gha(self, value: Optional[pulumi.Input['CacheFromGitHubActionsArgs']]): - pulumi.set(self, "gha", value) - - @property - @pulumi.getter - def local(self) -> Optional[pulumi.Input['CacheFromLocalArgs']]: - """ - A simple backend which caches images on your local filesystem. - """ - return pulumi.get(self, "local") - - @local.setter - def local(self, value: Optional[pulumi.Input['CacheFromLocalArgs']]): - pulumi.set(self, "local", value) - - @property - @pulumi.getter - def raw(self) -> Optional[pulumi.Input[str]]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`). - """ - return pulumi.get(self, "raw") - - @raw.setter - def raw(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "raw", value) - - @property - @pulumi.getter - def registry(self) -> Optional[pulumi.Input['CacheFromRegistryArgs']]: - """ - Upload build caches to remote registries. - """ - return pulumi.get(self, "registry") - - @registry.setter - def registry(self, value: Optional[pulumi.Input['CacheFromRegistryArgs']]): - pulumi.set(self, "registry", value) - - @property - @pulumi.getter - def s3(self) -> Optional[pulumi.Input['CacheFromS3Args']]: - """ - Upload build caches to AWS S3 or an S3-compatible services such as - MinIO. - """ - return pulumi.get(self, "s3") - - @s3.setter - def s3(self, value: Optional[pulumi.Input['CacheFromS3Args']]): - pulumi.set(self, "s3", value) - - -@pulumi.input_type -class CacheToAzureBlobArgs: - def __init__(__self__, *, - name: pulumi.Input[str], - account_url: Optional[pulumi.Input[str]] = None, - ignore_error: Optional[pulumi.Input[bool]] = None, - mode: Optional[pulumi.Input['CacheMode']] = None, - secret_access_key: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] name: The name of the cache image. - :param pulumi.Input[str] account_url: Base URL of the storage account. - :param pulumi.Input[bool] ignore_error: Ignore errors caused by failed cache exports. - :param pulumi.Input['CacheMode'] mode: The cache mode to use. Defaults to `min`. - :param pulumi.Input[str] secret_access_key: Blob storage account key. - """ - pulumi.set(__self__, "name", name) - if account_url is not None: - pulumi.set(__self__, "account_url", account_url) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - - @property - @pulumi.getter - def name(self) -> pulumi.Input[str]: - """ - The name of the cache image. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: pulumi.Input[str]): - pulumi.set(self, "name", value) - - @property - @pulumi.getter(name="accountUrl") - def account_url(self) -> Optional[pulumi.Input[str]]: - """ - Base URL of the storage account. - """ - return pulumi.get(self, "account_url") - - @account_url.setter - def account_url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "account_url", value) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[pulumi.Input[bool]]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @ignore_error.setter - def ignore_error(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "ignore_error", value) - - @property - @pulumi.getter - def mode(self) -> Optional[pulumi.Input['CacheMode']]: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @mode.setter - def mode(self, value: Optional[pulumi.Input['CacheMode']]): - pulumi.set(self, "mode", value) - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[pulumi.Input[str]]: - """ - Blob storage account key. - """ - return pulumi.get(self, "secret_access_key") - - @secret_access_key.setter - def secret_access_key(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secret_access_key", value) - - -@pulumi.input_type -class CacheToGitHubActionsArgs: - def __init__(__self__, *, - ignore_error: Optional[pulumi.Input[bool]] = None, - mode: Optional[pulumi.Input['CacheMode']] = None, - scope: Optional[pulumi.Input[str]] = None, - token: Optional[pulumi.Input[str]] = None, - url: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[bool] ignore_error: Ignore errors caused by failed cache exports. - :param pulumi.Input['CacheMode'] mode: The cache mode to use. Defaults to `min`. - :param pulumi.Input[str] scope: The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - :param pulumi.Input[str] token: The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - :param pulumi.Input[str] url: The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if scope is None: - scope = (_utilities.get_env('buildkit') or '') - if scope is not None: - pulumi.set(__self__, "scope", scope) - if token is None: - token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '') - if token is not None: - pulumi.set(__self__, "token", token) - if url is None: - url = (_utilities.get_env('ACTIONS_CACHE_URL') or '') - if url is not None: - pulumi.set(__self__, "url", url) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[pulumi.Input[bool]]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @ignore_error.setter - def ignore_error(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "ignore_error", value) - - @property - @pulumi.getter - def mode(self) -> Optional[pulumi.Input['CacheMode']]: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @mode.setter - def mode(self, value: Optional[pulumi.Input['CacheMode']]): - pulumi.set(self, "mode", value) - - @property - @pulumi.getter - def scope(self) -> Optional[pulumi.Input[str]]: - """ - The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - """ - return pulumi.get(self, "scope") - - @scope.setter - def scope(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "scope", value) - - @property - @pulumi.getter - def token(self) -> Optional[pulumi.Input[str]]: - """ - The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "token") - - @token.setter - def token(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "token", value) - - @property - @pulumi.getter - def url(self) -> Optional[pulumi.Input[str]]: - """ - The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "url") - - @url.setter - def url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "url", value) - - -@pulumi.input_type -class CacheToInlineArgs: - def __init__(__self__): - """ - Include an inline cache with the exported image. - """ - pass - - -@pulumi.input_type -class CacheToLocalArgs: - def __init__(__self__, *, - dest: pulumi.Input[str], - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - ignore_error: Optional[pulumi.Input[bool]] = None, - mode: Optional[pulumi.Input['CacheMode']] = None): - """ - :param pulumi.Input[str] dest: Path of the local directory to export the cache. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[bool] ignore_error: Ignore errors caused by failed cache exports. - :param pulumi.Input['CacheMode'] mode: The cache mode to use. Defaults to `min`. - """ - pulumi.set(__self__, "dest", dest) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - - @property - @pulumi.getter - def dest(self) -> pulumi.Input[str]: - """ - Path of the local directory to export the cache. - """ - return pulumi.get(self, "dest") - - @dest.setter - def dest(self, value: pulumi.Input[str]): - pulumi.set(self, "dest", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[pulumi.Input[bool]]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @ignore_error.setter - def ignore_error(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "ignore_error", value) - - @property - @pulumi.getter - def mode(self) -> Optional[pulumi.Input['CacheMode']]: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @mode.setter - def mode(self, value: Optional[pulumi.Input['CacheMode']]): - pulumi.set(self, "mode", value) - - -@pulumi.input_type -class CacheToRegistryArgs: - def __init__(__self__, *, - ref: pulumi.Input[str], - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - ignore_error: Optional[pulumi.Input[bool]] = None, - image_manifest: Optional[pulumi.Input[bool]] = None, - mode: Optional[pulumi.Input['CacheMode']] = None, - oci_media_types: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[str] ref: Fully qualified name of the cache image to import. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[bool] ignore_error: Ignore errors caused by failed cache exports. - :param pulumi.Input[bool] image_manifest: Export cache manifest as an OCI-compatible image manifest instead of a - manifest list. Requires `ociMediaTypes` to also be `true`. - - Some registries like AWS ECR will not work with caching if this is - `false`. - - Defaults to `false` to match Docker's default behavior. - :param pulumi.Input['CacheMode'] mode: The cache mode to use. Defaults to `min`. - :param pulumi.Input[bool] oci_media_types: Whether to use OCI media types in exported manifests. Defaults to - `true`. - """ - pulumi.set(__self__, "ref", ref) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if image_manifest is None: - image_manifest = False - if image_manifest is not None: - pulumi.set(__self__, "image_manifest", image_manifest) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if oci_media_types is None: - oci_media_types = True - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - - @property - @pulumi.getter - def ref(self) -> pulumi.Input[str]: - """ - Fully qualified name of the cache image to import. - """ - return pulumi.get(self, "ref") - - @ref.setter - def ref(self, value: pulumi.Input[str]): - pulumi.set(self, "ref", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[pulumi.Input[bool]]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @ignore_error.setter - def ignore_error(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "ignore_error", value) - - @property - @pulumi.getter(name="imageManifest") - def image_manifest(self) -> Optional[pulumi.Input[bool]]: - """ - Export cache manifest as an OCI-compatible image manifest instead of a - manifest list. Requires `ociMediaTypes` to also be `true`. - - Some registries like AWS ECR will not work with caching if this is - `false`. - - Defaults to `false` to match Docker's default behavior. - """ - return pulumi.get(self, "image_manifest") - - @image_manifest.setter - def image_manifest(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "image_manifest", value) - - @property - @pulumi.getter - def mode(self) -> Optional[pulumi.Input['CacheMode']]: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @mode.setter - def mode(self, value: Optional[pulumi.Input['CacheMode']]): - pulumi.set(self, "mode", value) - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[pulumi.Input[bool]]: - """ - Whether to use OCI media types in exported manifests. Defaults to - `true`. - """ - return pulumi.get(self, "oci_media_types") - - @oci_media_types.setter - def oci_media_types(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "oci_media_types", value) - - -@pulumi.input_type -class CacheToS3Args: - def __init__(__self__, *, - bucket: pulumi.Input[str], - region: Optional[pulumi.Input[str]] = None, - access_key_id: Optional[pulumi.Input[str]] = None, - blobs_prefix: Optional[pulumi.Input[str]] = None, - endpoint_url: Optional[pulumi.Input[str]] = None, - ignore_error: Optional[pulumi.Input[bool]] = None, - manifests_prefix: Optional[pulumi.Input[str]] = None, - mode: Optional[pulumi.Input['CacheMode']] = None, - name: Optional[pulumi.Input[str]] = None, - secret_access_key: Optional[pulumi.Input[str]] = None, - session_token: Optional[pulumi.Input[str]] = None, - use_path_style: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[str] bucket: Name of the S3 bucket. - :param pulumi.Input[str] region: The geographic location of the bucket. Defaults to `$AWS_REGION`. - :param pulumi.Input[str] access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`. - :param pulumi.Input[str] blobs_prefix: Prefix to prepend to blob filenames. - :param pulumi.Input[str] endpoint_url: Endpoint of the S3 bucket. - :param pulumi.Input[bool] ignore_error: Ignore errors caused by failed cache exports. - :param pulumi.Input[str] manifests_prefix: Prefix to prepend on manifest filenames. - :param pulumi.Input['CacheMode'] mode: The cache mode to use. Defaults to `min`. - :param pulumi.Input[str] name: Name of the cache image. - :param pulumi.Input[str] secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`. - :param pulumi.Input[str] session_token: Defaults to `$AWS_SESSION_TOKEN`. - :param pulumi.Input[bool] use_path_style: Uses `bucket` in the URL instead of hostname when `true`. - """ - pulumi.set(__self__, "bucket", bucket) - if region is None: - region = (_utilities.get_env('AWS_REGION') or '') - pulumi.set(__self__, "region", region) - if access_key_id is None: - access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '') - if access_key_id is not None: - pulumi.set(__self__, "access_key_id", access_key_id) - if blobs_prefix is not None: - pulumi.set(__self__, "blobs_prefix", blobs_prefix) - if endpoint_url is not None: - pulumi.set(__self__, "endpoint_url", endpoint_url) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if manifests_prefix is not None: - pulumi.set(__self__, "manifests_prefix", manifests_prefix) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if name is not None: - pulumi.set(__self__, "name", name) - if secret_access_key is None: - secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '') - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - if session_token is None: - session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '') - if session_token is not None: - pulumi.set(__self__, "session_token", session_token) - if use_path_style is not None: - pulumi.set(__self__, "use_path_style", use_path_style) - - @property - @pulumi.getter - def bucket(self) -> pulumi.Input[str]: - """ - Name of the S3 bucket. - """ - return pulumi.get(self, "bucket") - - @bucket.setter - def bucket(self, value: pulumi.Input[str]): - pulumi.set(self, "bucket", value) - - @property - @pulumi.getter - def region(self) -> pulumi.Input[str]: - """ - The geographic location of the bucket. Defaults to `$AWS_REGION`. - """ - return pulumi.get(self, "region") - - @region.setter - def region(self, value: pulumi.Input[str]): - pulumi.set(self, "region", value) - - @property - @pulumi.getter(name="accessKeyId") - def access_key_id(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_ACCESS_KEY_ID`. - """ - return pulumi.get(self, "access_key_id") - - @access_key_id.setter - def access_key_id(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "access_key_id", value) - - @property - @pulumi.getter(name="blobsPrefix") - def blobs_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Prefix to prepend to blob filenames. - """ - return pulumi.get(self, "blobs_prefix") - - @blobs_prefix.setter - def blobs_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "blobs_prefix", value) - - @property - @pulumi.getter(name="endpointUrl") - def endpoint_url(self) -> Optional[pulumi.Input[str]]: - """ - Endpoint of the S3 bucket. - """ - return pulumi.get(self, "endpoint_url") - - @endpoint_url.setter - def endpoint_url(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "endpoint_url", value) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[pulumi.Input[bool]]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @ignore_error.setter - def ignore_error(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "ignore_error", value) - - @property - @pulumi.getter(name="manifestsPrefix") - def manifests_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Prefix to prepend on manifest filenames. - """ - return pulumi.get(self, "manifests_prefix") - - @manifests_prefix.setter - def manifests_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "manifests_prefix", value) - - @property - @pulumi.getter - def mode(self) -> Optional[pulumi.Input['CacheMode']]: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @mode.setter - def mode(self, value: Optional[pulumi.Input['CacheMode']]): - pulumi.set(self, "mode", value) - - @property - @pulumi.getter - def name(self) -> Optional[pulumi.Input[str]]: - """ - Name of the cache image. - """ - return pulumi.get(self, "name") - - @name.setter - def name(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "name", value) - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_SECRET_ACCESS_KEY`. - """ - return pulumi.get(self, "secret_access_key") - - @secret_access_key.setter - def secret_access_key(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "secret_access_key", value) - - @property - @pulumi.getter(name="sessionToken") - def session_token(self) -> Optional[pulumi.Input[str]]: - """ - Defaults to `$AWS_SESSION_TOKEN`. - """ - return pulumi.get(self, "session_token") - - @session_token.setter - def session_token(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "session_token", value) - - @property - @pulumi.getter(name="usePathStyle") - def use_path_style(self) -> Optional[pulumi.Input[bool]]: - """ - Uses `bucket` in the URL instead of hostname when `true`. - """ - return pulumi.get(self, "use_path_style") - - @use_path_style.setter - def use_path_style(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "use_path_style", value) - - -@pulumi.input_type -class CacheToArgs: - def __init__(__self__, *, - azblob: Optional[pulumi.Input['CacheToAzureBlobArgs']] = None, - disabled: Optional[pulumi.Input[bool]] = None, - gha: Optional[pulumi.Input['CacheToGitHubActionsArgs']] = None, - inline: Optional[pulumi.Input['CacheToInlineArgs']] = None, - local: Optional[pulumi.Input['CacheToLocalArgs']] = None, - raw: Optional[pulumi.Input[str]] = None, - registry: Optional[pulumi.Input['CacheToRegistryArgs']] = None, - s3: Optional[pulumi.Input['CacheToS3Args']] = None): - """ - :param pulumi.Input['CacheToAzureBlobArgs'] azblob: Push cache to Azure's blob storage service. - :param pulumi.Input[bool] disabled: When `true` this entry will be excluded. Defaults to `false`. - :param pulumi.Input['CacheToGitHubActionsArgs'] gha: Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - :param pulumi.Input['CacheToInlineArgs'] inline: The inline cache storage backend is the simplest implementation to get - started with, but it does not handle multi-stage builds. Consider the - `registry` cache backend instead. - :param pulumi.Input['CacheToLocalArgs'] local: A simple backend which caches imagines on your local filesystem. - :param pulumi.Input[str] raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`) - :param pulumi.Input['CacheToRegistryArgs'] registry: Push caches to remote registries. Incompatible with the `docker` build - driver. - :param pulumi.Input['CacheToS3Args'] s3: Push cache to AWS S3 or S3-compatible services such as MinIO. - """ - if azblob is not None: - pulumi.set(__self__, "azblob", azblob) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if gha is not None: - pulumi.set(__self__, "gha", gha) - if inline is not None: - pulumi.set(__self__, "inline", inline) - if local is not None: - pulumi.set(__self__, "local", local) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if s3 is not None: - pulumi.set(__self__, "s3", s3) - - @property - @pulumi.getter - def azblob(self) -> Optional[pulumi.Input['CacheToAzureBlobArgs']]: - """ - Push cache to Azure's blob storage service. - """ - return pulumi.get(self, "azblob") - - @azblob.setter - def azblob(self, value: Optional[pulumi.Input['CacheToAzureBlobArgs']]): - pulumi.set(self, "azblob", value) - - @property - @pulumi.getter - def disabled(self) -> Optional[pulumi.Input[bool]]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @disabled.setter - def disabled(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "disabled", value) - - @property - @pulumi.getter - def gha(self) -> Optional[pulumi.Input['CacheToGitHubActionsArgs']]: - """ - Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - """ - return pulumi.get(self, "gha") - - @gha.setter - def gha(self, value: Optional[pulumi.Input['CacheToGitHubActionsArgs']]): - pulumi.set(self, "gha", value) - - @property - @pulumi.getter - def inline(self) -> Optional[pulumi.Input['CacheToInlineArgs']]: - """ - The inline cache storage backend is the simplest implementation to get - started with, but it does not handle multi-stage builds. Consider the - `registry` cache backend instead. - """ - return pulumi.get(self, "inline") - - @inline.setter - def inline(self, value: Optional[pulumi.Input['CacheToInlineArgs']]): - pulumi.set(self, "inline", value) - - @property - @pulumi.getter - def local(self) -> Optional[pulumi.Input['CacheToLocalArgs']]: - """ - A simple backend which caches imagines on your local filesystem. - """ - return pulumi.get(self, "local") - - @local.setter - def local(self, value: Optional[pulumi.Input['CacheToLocalArgs']]): - pulumi.set(self, "local", value) - - @property - @pulumi.getter - def raw(self) -> Optional[pulumi.Input[str]]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`) - """ - return pulumi.get(self, "raw") - - @raw.setter - def raw(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "raw", value) - - @property - @pulumi.getter - def registry(self) -> Optional[pulumi.Input['CacheToRegistryArgs']]: - """ - Push caches to remote registries. Incompatible with the `docker` build - driver. - """ - return pulumi.get(self, "registry") - - @registry.setter - def registry(self, value: Optional[pulumi.Input['CacheToRegistryArgs']]): - pulumi.set(self, "registry", value) - - @property - @pulumi.getter - def s3(self) -> Optional[pulumi.Input['CacheToS3Args']]: - """ - Push cache to AWS S3 or S3-compatible services such as MinIO. - """ - return pulumi.get(self, "s3") - - @s3.setter - def s3(self, value: Optional[pulumi.Input['CacheToS3Args']]): - pulumi.set(self, "s3", value) - - -@pulumi.input_type -class ContextArgs: - def __init__(__self__, *, - location: pulumi.Input[str]): - """ - :param pulumi.Input[str] location: Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - pulumi.set(__self__, "location", location) - - @property - @pulumi.getter - def location(self) -> pulumi.Input[str]: - """ - Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - return pulumi.get(self, "location") - - @location.setter - def location(self, value: pulumi.Input[str]): - pulumi.set(self, "location", value) - - -@pulumi.input_type -class DockerfileArgs: - def __init__(__self__, *, - inline: Optional[pulumi.Input[str]] = None, - location: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] inline: Raw Dockerfile contents. - - Conflicts with `location`. - - Equivalent to invoking Docker with `-f -`. - :param pulumi.Input[str] location: Location of the Dockerfile to use. - - Can be a relative or absolute path to a local file, or a remote URL. - - Defaults to `${context.location}/Dockerfile` if context is on-disk. - - Conflicts with `inline`. - """ - if inline is not None: - pulumi.set(__self__, "inline", inline) - if location is not None: - pulumi.set(__self__, "location", location) - - @property - @pulumi.getter - def inline(self) -> Optional[pulumi.Input[str]]: - """ - Raw Dockerfile contents. - - Conflicts with `location`. - - Equivalent to invoking Docker with `-f -`. - """ - return pulumi.get(self, "inline") - - @inline.setter - def inline(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "inline", value) - - @property - @pulumi.getter - def location(self) -> Optional[pulumi.Input[str]]: - """ - Location of the Dockerfile to use. - - Can be a relative or absolute path to a local file, or a remote URL. - - Defaults to `${context.location}/Dockerfile` if context is on-disk. - - Conflicts with `inline`. - """ - return pulumi.get(self, "location") - - @location.setter - def location(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "location", value) - - -@pulumi.input_type -class ExportCacheOnlyArgs: - def __init__(__self__): - pass - - -@pulumi.input_type -class ExportDockerArgs: - def __init__(__self__, *, - annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - dest: Optional[pulumi.Input[str]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - oci_media_types: Optional[pulumi.Input[bool]] = None, - tar: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Attach an arbitrary key/value annotation to the image. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[str] dest: The local export path. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[Sequence[pulumi.Input[str]]] names: Specify images names to export. This is overridden if tags are already specified. - :param pulumi.Input[bool] oci_media_types: Use OCI media types in exporter manifests. - :param pulumi.Input[bool] tar: Bundle the output into a tarball layout. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dest is not None: - pulumi.set(__self__, "dest", dest) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if tar is None: - tar = True - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @annotations.setter - def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "annotations", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter - def dest(self) -> Optional[pulumi.Input[str]]: - """ - The local export path. - """ - return pulumi.get(self, "dest") - - @dest.setter - def dest(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "dest", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter - def names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @names.setter - def names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "names", value) - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[pulumi.Input[bool]]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @oci_media_types.setter - def oci_media_types(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "oci_media_types", value) - - @property - @pulumi.getter - def tar(self) -> Optional[pulumi.Input[bool]]: - """ - Bundle the output into a tarball layout. - """ - return pulumi.get(self, "tar") - - @tar.setter - def tar(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "tar", value) - - -@pulumi.input_type -class ExportImageArgs: - def __init__(__self__, *, - annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - dangling_name_prefix: Optional[pulumi.Input[str]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - insecure: Optional[pulumi.Input[bool]] = None, - name_canonical: Optional[pulumi.Input[bool]] = None, - names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - oci_media_types: Optional[pulumi.Input[bool]] = None, - push: Optional[pulumi.Input[bool]] = None, - push_by_digest: Optional[pulumi.Input[bool]] = None, - store: Optional[pulumi.Input[bool]] = None, - unpack: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Attach an arbitrary key/value annotation to the image. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[str] dangling_name_prefix: Name image with `prefix@`, used for anonymous images. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[bool] insecure: Allow pushing to an insecure registry. - :param pulumi.Input[bool] name_canonical: Add additional canonical name (`name@`). - :param pulumi.Input[Sequence[pulumi.Input[str]]] names: Specify images names to export. This is overridden if tags are already specified. - :param pulumi.Input[bool] oci_media_types: Use OCI media types in exporter manifests. - :param pulumi.Input[bool] push: Push after creating the image. Defaults to `false`. - :param pulumi.Input[bool] push_by_digest: Push image without name. - :param pulumi.Input[bool] store: Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - :param pulumi.Input[bool] unpack: Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dangling_name_prefix is not None: - pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if insecure is not None: - pulumi.set(__self__, "insecure", insecure) - if name_canonical is not None: - pulumi.set(__self__, "name_canonical", name_canonical) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if push is not None: - pulumi.set(__self__, "push", push) - if push_by_digest is not None: - pulumi.set(__self__, "push_by_digest", push_by_digest) - if store is None: - store = True - if store is not None: - pulumi.set(__self__, "store", store) - if unpack is not None: - pulumi.set(__self__, "unpack", unpack) - - @property - @pulumi.getter - def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @annotations.setter - def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "annotations", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter(name="danglingNamePrefix") - def dangling_name_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Name image with `prefix@`, used for anonymous images. - """ - return pulumi.get(self, "dangling_name_prefix") - - @dangling_name_prefix.setter - def dangling_name_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "dangling_name_prefix", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter - def insecure(self) -> Optional[pulumi.Input[bool]]: - """ - Allow pushing to an insecure registry. - """ - return pulumi.get(self, "insecure") - - @insecure.setter - def insecure(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "insecure", value) - - @property - @pulumi.getter(name="nameCanonical") - def name_canonical(self) -> Optional[pulumi.Input[bool]]: - """ - Add additional canonical name (`name@`). - """ - return pulumi.get(self, "name_canonical") - - @name_canonical.setter - def name_canonical(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "name_canonical", value) - - @property - @pulumi.getter - def names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @names.setter - def names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "names", value) - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[pulumi.Input[bool]]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @oci_media_types.setter - def oci_media_types(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "oci_media_types", value) - - @property - @pulumi.getter - def push(self) -> Optional[pulumi.Input[bool]]: - """ - Push after creating the image. Defaults to `false`. - """ - return pulumi.get(self, "push") - - @push.setter - def push(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "push", value) - - @property - @pulumi.getter(name="pushByDigest") - def push_by_digest(self) -> Optional[pulumi.Input[bool]]: - """ - Push image without name. - """ - return pulumi.get(self, "push_by_digest") - - @push_by_digest.setter - def push_by_digest(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "push_by_digest", value) - - @property - @pulumi.getter - def store(self) -> Optional[pulumi.Input[bool]]: - """ - Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - """ - return pulumi.get(self, "store") - - @store.setter - def store(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "store", value) - - @property - @pulumi.getter - def unpack(self) -> Optional[pulumi.Input[bool]]: - """ - Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - return pulumi.get(self, "unpack") - - @unpack.setter - def unpack(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "unpack", value) - - -@pulumi.input_type -class ExportLocalArgs: - def __init__(__self__, *, - dest: pulumi.Input[str]): - """ - :param pulumi.Input[str] dest: Output path. - """ - pulumi.set(__self__, "dest", dest) - - @property - @pulumi.getter - def dest(self) -> pulumi.Input[str]: - """ - Output path. - """ - return pulumi.get(self, "dest") - - @dest.setter - def dest(self, value: pulumi.Input[str]): - pulumi.set(self, "dest", value) - - -@pulumi.input_type -class ExportOCIArgs: - def __init__(__self__, *, - annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - dest: Optional[pulumi.Input[str]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - oci_media_types: Optional[pulumi.Input[bool]] = None, - tar: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Attach an arbitrary key/value annotation to the image. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[str] dest: The local export path. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[Sequence[pulumi.Input[str]]] names: Specify images names to export. This is overridden if tags are already specified. - :param pulumi.Input[bool] oci_media_types: Use OCI media types in exporter manifests. - :param pulumi.Input[bool] tar: Bundle the output into a tarball layout. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dest is not None: - pulumi.set(__self__, "dest", dest) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = True - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if tar is None: - tar = True - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @annotations.setter - def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "annotations", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter - def dest(self) -> Optional[pulumi.Input[str]]: - """ - The local export path. - """ - return pulumi.get(self, "dest") - - @dest.setter - def dest(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "dest", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter - def names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @names.setter - def names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "names", value) - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[pulumi.Input[bool]]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @oci_media_types.setter - def oci_media_types(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "oci_media_types", value) - - @property - @pulumi.getter - def tar(self) -> Optional[pulumi.Input[bool]]: - """ - Bundle the output into a tarball layout. - """ - return pulumi.get(self, "tar") - - @tar.setter - def tar(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "tar", value) - - -@pulumi.input_type -class ExportRegistryArgs: - def __init__(__self__, *, - annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - compression: Optional[pulumi.Input['CompressionType']] = None, - compression_level: Optional[pulumi.Input[int]] = None, - dangling_name_prefix: Optional[pulumi.Input[str]] = None, - force_compression: Optional[pulumi.Input[bool]] = None, - insecure: Optional[pulumi.Input[bool]] = None, - name_canonical: Optional[pulumi.Input[bool]] = None, - names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - oci_media_types: Optional[pulumi.Input[bool]] = None, - push: Optional[pulumi.Input[bool]] = None, - push_by_digest: Optional[pulumi.Input[bool]] = None, - store: Optional[pulumi.Input[bool]] = None, - unpack: Optional[pulumi.Input[bool]] = None): - """ - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Attach an arbitrary key/value annotation to the image. - :param pulumi.Input['CompressionType'] compression: The compression type to use. - :param pulumi.Input[int] compression_level: Compression level from 0 to 22. - :param pulumi.Input[str] dangling_name_prefix: Name image with `prefix@`, used for anonymous images. - :param pulumi.Input[bool] force_compression: Forcefully apply compression. - :param pulumi.Input[bool] insecure: Allow pushing to an insecure registry. - :param pulumi.Input[bool] name_canonical: Add additional canonical name (`name@`). - :param pulumi.Input[Sequence[pulumi.Input[str]]] names: Specify images names to export. This is overridden if tags are already specified. - :param pulumi.Input[bool] oci_media_types: Use OCI media types in exporter manifests. - :param pulumi.Input[bool] push: Push after creating the image. Defaults to `true`. - :param pulumi.Input[bool] push_by_digest: Push image without name. - :param pulumi.Input[bool] store: Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - :param pulumi.Input[bool] unpack: Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dangling_name_prefix is not None: - pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if insecure is not None: - pulumi.set(__self__, "insecure", insecure) - if name_canonical is not None: - pulumi.set(__self__, "name_canonical", name_canonical) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if push is None: - push = True - if push is not None: - pulumi.set(__self__, "push", push) - if push_by_digest is not None: - pulumi.set(__self__, "push_by_digest", push_by_digest) - if store is None: - store = True - if store is not None: - pulumi.set(__self__, "store", store) - if unpack is not None: - pulumi.set(__self__, "unpack", unpack) - - @property - @pulumi.getter - def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @annotations.setter - def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "annotations", value) - - @property - @pulumi.getter - def compression(self) -> Optional[pulumi.Input['CompressionType']]: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @compression.setter - def compression(self, value: Optional[pulumi.Input['CompressionType']]): - pulumi.set(self, "compression", value) - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[pulumi.Input[int]]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @compression_level.setter - def compression_level(self, value: Optional[pulumi.Input[int]]): - pulumi.set(self, "compression_level", value) - - @property - @pulumi.getter(name="danglingNamePrefix") - def dangling_name_prefix(self) -> Optional[pulumi.Input[str]]: - """ - Name image with `prefix@`, used for anonymous images. - """ - return pulumi.get(self, "dangling_name_prefix") - - @dangling_name_prefix.setter - def dangling_name_prefix(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "dangling_name_prefix", value) - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[pulumi.Input[bool]]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @force_compression.setter - def force_compression(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "force_compression", value) - - @property - @pulumi.getter - def insecure(self) -> Optional[pulumi.Input[bool]]: - """ - Allow pushing to an insecure registry. - """ - return pulumi.get(self, "insecure") - - @insecure.setter - def insecure(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "insecure", value) - - @property - @pulumi.getter(name="nameCanonical") - def name_canonical(self) -> Optional[pulumi.Input[bool]]: - """ - Add additional canonical name (`name@`). - """ - return pulumi.get(self, "name_canonical") - - @name_canonical.setter - def name_canonical(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "name_canonical", value) - - @property - @pulumi.getter - def names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @names.setter - def names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "names", value) - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[pulumi.Input[bool]]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @oci_media_types.setter - def oci_media_types(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "oci_media_types", value) - - @property - @pulumi.getter - def push(self) -> Optional[pulumi.Input[bool]]: - """ - Push after creating the image. Defaults to `true`. - """ - return pulumi.get(self, "push") - - @push.setter - def push(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "push", value) - - @property - @pulumi.getter(name="pushByDigest") - def push_by_digest(self) -> Optional[pulumi.Input[bool]]: - """ - Push image without name. - """ - return pulumi.get(self, "push_by_digest") - - @push_by_digest.setter - def push_by_digest(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "push_by_digest", value) - - @property - @pulumi.getter - def store(self) -> Optional[pulumi.Input[bool]]: - """ - Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - """ - return pulumi.get(self, "store") - - @store.setter - def store(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "store", value) - - @property - @pulumi.getter - def unpack(self) -> Optional[pulumi.Input[bool]]: - """ - Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - return pulumi.get(self, "unpack") - - @unpack.setter - def unpack(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "unpack", value) - - -@pulumi.input_type -class ExportTarArgs: - def __init__(__self__, *, - dest: pulumi.Input[str]): - """ - :param pulumi.Input[str] dest: Output path. - """ - pulumi.set(__self__, "dest", dest) - - @property - @pulumi.getter - def dest(self) -> pulumi.Input[str]: - """ - Output path. - """ - return pulumi.get(self, "dest") - - @dest.setter - def dest(self, value: pulumi.Input[str]): - pulumi.set(self, "dest", value) - - -@pulumi.input_type -class ExportArgs: - def __init__(__self__, *, - cacheonly: Optional[pulumi.Input['ExportCacheOnlyArgs']] = None, - disabled: Optional[pulumi.Input[bool]] = None, - docker: Optional[pulumi.Input['ExportDockerArgs']] = None, - image: Optional[pulumi.Input['ExportImageArgs']] = None, - local: Optional[pulumi.Input['ExportLocalArgs']] = None, - oci: Optional[pulumi.Input['ExportOCIArgs']] = None, - raw: Optional[pulumi.Input[str]] = None, - registry: Optional[pulumi.Input['ExportRegistryArgs']] = None, - tar: Optional[pulumi.Input['ExportTarArgs']] = None): - """ - :param pulumi.Input['ExportCacheOnlyArgs'] cacheonly: A no-op export. Helpful for silencing the 'no exports' warning if you - just want to populate caches. - :param pulumi.Input[bool] disabled: When `true` this entry will be excluded. Defaults to `false`. - :param pulumi.Input['ExportDockerArgs'] docker: Export as a Docker image layout. - :param pulumi.Input['ExportImageArgs'] image: Outputs the build result into a container image format. - :param pulumi.Input['ExportLocalArgs'] local: Export to a local directory as files and directories. - :param pulumi.Input['ExportOCIArgs'] oci: Identical to the Docker exporter but uses OCI media types by default. - :param pulumi.Input[str] raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=docker`) - :param pulumi.Input['ExportRegistryArgs'] registry: Identical to the Image exporter, but pushes by default. - :param pulumi.Input['ExportTarArgs'] tar: Export to a local directory as a tarball. - """ - if cacheonly is not None: - pulumi.set(__self__, "cacheonly", cacheonly) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if docker is not None: - pulumi.set(__self__, "docker", docker) - if image is not None: - pulumi.set(__self__, "image", image) - if local is not None: - pulumi.set(__self__, "local", local) - if oci is not None: - pulumi.set(__self__, "oci", oci) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def cacheonly(self) -> Optional[pulumi.Input['ExportCacheOnlyArgs']]: - """ - A no-op export. Helpful for silencing the 'no exports' warning if you - just want to populate caches. - """ - return pulumi.get(self, "cacheonly") - - @cacheonly.setter - def cacheonly(self, value: Optional[pulumi.Input['ExportCacheOnlyArgs']]): - pulumi.set(self, "cacheonly", value) - - @property - @pulumi.getter - def disabled(self) -> Optional[pulumi.Input[bool]]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @disabled.setter - def disabled(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "disabled", value) - - @property - @pulumi.getter - def docker(self) -> Optional[pulumi.Input['ExportDockerArgs']]: - """ - Export as a Docker image layout. - """ - return pulumi.get(self, "docker") - - @docker.setter - def docker(self, value: Optional[pulumi.Input['ExportDockerArgs']]): - pulumi.set(self, "docker", value) - - @property - @pulumi.getter - def image(self) -> Optional[pulumi.Input['ExportImageArgs']]: - """ - Outputs the build result into a container image format. - """ - return pulumi.get(self, "image") - - @image.setter - def image(self, value: Optional[pulumi.Input['ExportImageArgs']]): - pulumi.set(self, "image", value) - - @property - @pulumi.getter - def local(self) -> Optional[pulumi.Input['ExportLocalArgs']]: - """ - Export to a local directory as files and directories. - """ - return pulumi.get(self, "local") - - @local.setter - def local(self, value: Optional[pulumi.Input['ExportLocalArgs']]): - pulumi.set(self, "local", value) - - @property - @pulumi.getter - def oci(self) -> Optional[pulumi.Input['ExportOCIArgs']]: - """ - Identical to the Docker exporter but uses OCI media types by default. - """ - return pulumi.get(self, "oci") - - @oci.setter - def oci(self, value: Optional[pulumi.Input['ExportOCIArgs']]): - pulumi.set(self, "oci", value) - - @property - @pulumi.getter - def raw(self) -> Optional[pulumi.Input[str]]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=docker`) - """ - return pulumi.get(self, "raw") - - @raw.setter - def raw(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "raw", value) - - @property - @pulumi.getter - def registry(self) -> Optional[pulumi.Input['ExportRegistryArgs']]: - """ - Identical to the Image exporter, but pushes by default. - """ - return pulumi.get(self, "registry") - - @registry.setter - def registry(self, value: Optional[pulumi.Input['ExportRegistryArgs']]): - pulumi.set(self, "registry", value) - - @property - @pulumi.getter - def tar(self) -> Optional[pulumi.Input['ExportTarArgs']]: - """ - Export to a local directory as a tarball. - """ - return pulumi.get(self, "tar") - - @tar.setter - def tar(self, value: Optional[pulumi.Input['ExportTarArgs']]): - pulumi.set(self, "tar", value) - - -@pulumi.input_type -class RegistryArgs: - def __init__(__self__, *, - address: pulumi.Input[str], - password: Optional[pulumi.Input[str]] = None, - username: Optional[pulumi.Input[str]] = None): - """ - :param pulumi.Input[str] address: The registry's address (e.g. "docker.io"). - :param pulumi.Input[str] password: Password or token for the registry. - :param pulumi.Input[str] username: Username for the registry. - """ - pulumi.set(__self__, "address", address) - if password is not None: - pulumi.set(__self__, "password", password) - if username is not None: - pulumi.set(__self__, "username", username) - - @property - @pulumi.getter - def address(self) -> pulumi.Input[str]: - """ - The registry's address (e.g. "docker.io"). - """ - return pulumi.get(self, "address") - - @address.setter - def address(self, value: pulumi.Input[str]): - pulumi.set(self, "address", value) - - @property - @pulumi.getter - def password(self) -> Optional[pulumi.Input[str]]: - """ - Password or token for the registry. - """ - return pulumi.get(self, "password") - - @password.setter - def password(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "password", value) - - @property - @pulumi.getter - def username(self) -> Optional[pulumi.Input[str]]: - """ - Username for the registry. - """ - return pulumi.get(self, "username") - - @username.setter - def username(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "username", value) - - -@pulumi.input_type -class SSHArgs: - def __init__(__self__, *, - id: pulumi.Input[str], - paths: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): - """ - :param pulumi.Input[str] id: Useful for distinguishing different servers that are part of the same - build. - - A value of `default` is appropriate if only dealing with a single host. - :param pulumi.Input[Sequence[pulumi.Input[str]]] paths: SSH agent socket or private keys to expose to the build under the given - identifier. - - Defaults to `[$SSH_AUTH_SOCK]`. - - Note that your keys are **not** automatically added when using an - agent. Run `ssh-add -l` locally to confirm which public keys are - visible to the agent; these will be exposed to your build. - """ - pulumi.set(__self__, "id", id) - if paths is not None: - pulumi.set(__self__, "paths", paths) - - @property - @pulumi.getter - def id(self) -> pulumi.Input[str]: - """ - Useful for distinguishing different servers that are part of the same - build. - - A value of `default` is appropriate if only dealing with a single host. - """ - return pulumi.get(self, "id") - - @id.setter - def id(self, value: pulumi.Input[str]): - pulumi.set(self, "id", value) - - @property - @pulumi.getter - def paths(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - SSH agent socket or private keys to expose to the build under the given - identifier. - - Defaults to `[$SSH_AUTH_SOCK]`. - - Note that your keys are **not** automatically added when using an - agent. Run `ssh-add -l` locally to confirm which public keys are - visible to the agent; these will be exposed to your build. - """ - return pulumi.get(self, "paths") - - @paths.setter - def paths(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "paths", value) - - diff --git a/sdk/python/pulumi_docker_build/_utilities.py b/sdk/python/pulumi_docker_build/_utilities.py deleted file mode 100644 index 622a367..0000000 --- a/sdk/python/pulumi_docker_build/_utilities.py +++ /dev/null @@ -1,325 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - - -import asyncio -import functools -import importlib.metadata -import importlib.util -import inspect -import json -import os -import sys -import typing -import warnings - -import pulumi -import pulumi.runtime -from pulumi.runtime.sync_await import _sync_await - -from semver import VersionInfo as SemverVersion -from parver import Version as PEP440Version - -C = typing.TypeVar("C", bound=typing.Callable) - - -def get_env(*args): - for v in args: - value = os.getenv(v) - if value is not None: - return value - return None - - -def get_env_bool(*args): - str = get_env(*args) - if str is not None: - # NOTE: these values are taken from https://golang.org/src/strconv/atob.go?s=351:391#L1, which is what - # Terraform uses internally when parsing boolean values. - if str in ["1", "t", "T", "true", "TRUE", "True"]: - return True - if str in ["0", "f", "F", "false", "FALSE", "False"]: - return False - return None - - -def get_env_int(*args): - str = get_env(*args) - if str is not None: - try: - return int(str) - except: - return None - return None - - -def get_env_float(*args): - str = get_env(*args) - if str is not None: - try: - return float(str) - except: - return None - return None - - -def _get_semver_version(): - # __name__ is set to the fully-qualified name of the current module, In our case, it will be - # ._utilities. is the module we want to query the version for. - root_package, *rest = __name__.split('.') - - # pkg_resources uses setuptools to inspect the set of installed packages. We use it here to ask - # for the currently installed version of the root package (i.e. us) and get its version. - - # Unfortunately, PEP440 and semver differ slightly in incompatible ways. The Pulumi engine expects - # to receive a valid semver string when receiving requests from the language host, so it's our - # responsibility as the library to convert our own PEP440 version into a valid semver string. - - pep440_version_string = importlib.metadata.version(root_package) - pep440_version = PEP440Version.parse(pep440_version_string) - (major, minor, patch) = pep440_version.release - prerelease = None - if pep440_version.pre_tag == 'a': - prerelease = f"alpha.{pep440_version.pre}" - elif pep440_version.pre_tag == 'b': - prerelease = f"beta.{pep440_version.pre}" - elif pep440_version.pre_tag == 'rc': - prerelease = f"rc.{pep440_version.pre}" - elif pep440_version.dev is not None: - prerelease = f"dev.{pep440_version.dev}" - - # The only significant difference between PEP440 and semver as it pertains to us is that PEP440 has explicit support - # for dev builds, while semver encodes them as "prerelease" versions. In order to bridge between the two, we convert - # our dev build version into a prerelease tag. This matches what all of our other packages do when constructing - # their own semver string. - return SemverVersion(major=major, minor=minor, patch=patch, prerelease=prerelease) - - -# Determine the version once and cache the value, which measurably improves program performance. -_version = _get_semver_version() -_version_str = str(_version) - -def get_resource_opts_defaults() -> pulumi.ResourceOptions: - return pulumi.ResourceOptions( - version=get_version(), - plugin_download_url=get_plugin_download_url(), - ) - -def get_invoke_opts_defaults() -> pulumi.InvokeOptions: - return pulumi.InvokeOptions( - version=get_version(), - plugin_download_url=get_plugin_download_url(), - ) - -def get_resource_args_opts(resource_args_type, resource_options_type, *args, **kwargs): - """ - Return the resource args and options given the *args and **kwargs of a resource's - __init__ method. - """ - - resource_args, opts = None, None - - # If the first item is the resource args type, save it and remove it from the args list. - if args and isinstance(args[0], resource_args_type): - resource_args, args = args[0], args[1:] - - # Now look at the first item in the args list again. - # If the first item is the resource options class, save it. - if args and isinstance(args[0], resource_options_type): - opts = args[0] - - # If resource_args is None, see if "args" is in kwargs, and, if so, if it's typed as the - # the resource args type. - if resource_args is None: - a = kwargs.get("args") - if isinstance(a, resource_args_type): - resource_args = a - - # If opts is None, look it up in kwargs. - if opts is None: - opts = kwargs.get("opts") - - return resource_args, opts - - -# Temporary: just use pulumi._utils.lazy_import once everyone upgrades. -def lazy_import(fullname): - - import pulumi._utils as u - f = getattr(u, 'lazy_import', None) - if f is None: - f = _lazy_import_temp - - return f(fullname) - - -# Copied from pulumi._utils.lazy_import, see comments there. -def _lazy_import_temp(fullname): - m = sys.modules.get(fullname, None) - if m is not None: - return m - - spec = importlib.util.find_spec(fullname) - - m = sys.modules.get(fullname, None) - if m is not None: - return m - - loader = importlib.util.LazyLoader(spec.loader) - spec.loader = loader - module = importlib.util.module_from_spec(spec) - - m = sys.modules.get(fullname, None) - if m is not None: - return m - - sys.modules[fullname] = module - loader.exec_module(module) - return module - - -class Package(pulumi.runtime.ResourcePackage): - def __init__(self, pkg_info): - super().__init__() - self.pkg_info = pkg_info - - def version(self): - return _version - - def construct_provider(self, name: str, typ: str, urn: str) -> pulumi.ProviderResource: - if typ != self.pkg_info['token']: - raise Exception(f"unknown provider type {typ}") - Provider = getattr(lazy_import(self.pkg_info['fqn']), self.pkg_info['class']) - return Provider(name, pulumi.ResourceOptions(urn=urn)) - - -class Module(pulumi.runtime.ResourceModule): - def __init__(self, mod_info): - super().__init__() - self.mod_info = mod_info - - def version(self): - return _version - - def construct(self, name: str, typ: str, urn: str) -> pulumi.Resource: - class_name = self.mod_info['classes'].get(typ, None) - - if class_name is None: - raise Exception(f"unknown resource type {typ}") - - TheClass = getattr(lazy_import(self.mod_info['fqn']), class_name) - return TheClass(name, pulumi.ResourceOptions(urn=urn)) - - -def register(resource_modules, resource_packages): - resource_modules = json.loads(resource_modules) - resource_packages = json.loads(resource_packages) - - for pkg_info in resource_packages: - pulumi.runtime.register_resource_package(pkg_info['pkg'], Package(pkg_info)) - - for mod_info in resource_modules: - pulumi.runtime.register_resource_module( - mod_info['pkg'], - mod_info['mod'], - Module(mod_info)) - - -_F = typing.TypeVar('_F', bound=typing.Callable[..., typing.Any]) - - -def lift_output_func(func: typing.Any) -> typing.Callable[[_F], _F]: - """Decorator internally used on {fn}_output lifted function versions - to implement them automatically from the un-lifted function.""" - - func_sig = inspect.signature(func) - - def lifted_func(*args, opts=None, **kwargs): - bound_args = func_sig.bind(*args, **kwargs) - # Convert tuple to list, see pulumi/pulumi#8172 - args_list = list(bound_args.args) - return pulumi.Output.from_input({ - 'args': args_list, - 'kwargs': bound_args.kwargs - }).apply(lambda resolved_args: func(*resolved_args['args'], - opts=opts, - **resolved_args['kwargs'])) - - return (lambda _: lifted_func) - - -def call_plain( - tok: str, - props: pulumi.Inputs, - res: typing.Optional[pulumi.Resource] = None, - typ: typing.Optional[type] = None, -) -> typing.Any: - """ - Wraps pulumi.runtime.plain to force the output and return it plainly. - """ - - output = pulumi.runtime.call(tok, props, res, typ) - - # Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. - result, known, secret, _ = _sync_await(asyncio.ensure_future(_await_output(output))) - - problem = None - if not known: - problem = ' an unknown value' - elif secret: - problem = ' a secret value' - - if problem: - raise AssertionError( - f"Plain resource method '{tok}' incorrectly returned {problem}. " - + "This is an error in the provider, please report this to the provider developer." - ) - - return result - - -async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bool, bool, set]: - return ( - await o._future, - await o._is_known, - await o._is_secret, - await o._resources, - ) - - -# This is included to provide an upgrade path for users who are using a version -# of the Pulumi SDK (<3.121.0) that does not include the `deprecated` decorator. -def deprecated(message: str) -> typing.Callable[[C], C]: - """ - Decorator to indicate a function is deprecated. - - As well as inserting appropriate statements to indicate that the function is - deprecated, this decorator also tags the function with a special attribute - so that Pulumi code can detect that it is deprecated and react appropriately - in certain situations. - - message is the deprecation message that should be printed if the function is called. - """ - - def decorator(fn: C) -> C: - if not callable(fn): - raise TypeError("Expected fn to be callable") - - @functools.wraps(fn) - def deprecated_fn(*args, **kwargs): - warnings.warn(message) - pulumi.warn(f"{fn.__name__} is deprecated: {message}") - - return fn(*args, **kwargs) - - deprecated_fn.__dict__["_pulumi_deprecated_callable"] = fn - return typing.cast(C, deprecated_fn) - - return decorator - -def get_plugin_download_url(): - return None - -def get_version(): - return _version_str diff --git a/sdk/python/pulumi_docker_build/config/__init__.py b/sdk/python/pulumi_docker_build/config/__init__.py deleted file mode 100644 index b8c2b21..0000000 --- a/sdk/python/pulumi_docker_build/config/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import sys -from .vars import _ExportableConfig - -sys.modules[__name__].__class__ = _ExportableConfig diff --git a/sdk/python/pulumi_docker_build/config/__init__.pyi b/sdk/python/pulumi_docker_build/config/__init__.pyi deleted file mode 100644 index 56b3600..0000000 --- a/sdk/python/pulumi_docker_build/config/__init__.pyi +++ /dev/null @@ -1,19 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from .. import _utilities -from .. import outputs as _root_outputs - -host: str -""" -The build daemon's address. -""" - -registries: Optional[str] - diff --git a/sdk/python/pulumi_docker_build/config/vars.py b/sdk/python/pulumi_docker_build/config/vars.py deleted file mode 100644 index 340ed0e..0000000 --- a/sdk/python/pulumi_docker_build/config/vars.py +++ /dev/null @@ -1,29 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from .. import _utilities -from .. import outputs as _root_outputs - -import types - -__config__ = pulumi.Config('docker-build') - - -class _ExportableConfig(types.ModuleType): - @property - def host(self) -> str: - """ - The build daemon's address. - """ - return __config__.get('host') or (_utilities.get_env('DOCKER_HOST') or '') - - @property - def registries(self) -> Optional[str]: - return __config__.get('registries') - diff --git a/sdk/python/pulumi_docker_build/image.py b/sdk/python/pulumi_docker_build/image.py deleted file mode 100644 index fdb6794..0000000 --- a/sdk/python/pulumi_docker_build/image.py +++ /dev/null @@ -1,1799 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from . import _utilities -from . import outputs -from ._enums import * -from ._inputs import * - -__all__ = ['ImageArgs', 'Image'] - -@pulumi.input_type -class ImageArgs: - def __init__(__self__, *, - push: pulumi.Input[bool], - add_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - build_args: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - build_on_preview: Optional[pulumi.Input[bool]] = None, - builder: Optional[pulumi.Input['BuilderConfigArgs']] = None, - cache_from: Optional[pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]]] = None, - cache_to: Optional[pulumi.Input[Sequence[pulumi.Input['CacheToArgs']]]] = None, - context: Optional[pulumi.Input['BuildContextArgs']] = None, - dockerfile: Optional[pulumi.Input['DockerfileArgs']] = None, - exec_: Optional[pulumi.Input[bool]] = None, - exports: Optional[pulumi.Input[Sequence[pulumi.Input['ExportArgs']]]] = None, - labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - load: Optional[pulumi.Input[bool]] = None, - network: Optional[pulumi.Input['NetworkMode']] = None, - no_cache: Optional[pulumi.Input[bool]] = None, - platforms: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]] = None, - pull: Optional[pulumi.Input[bool]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]] = None, - secrets: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - ssh: Optional[pulumi.Input[Sequence[pulumi.Input['SSHArgs']]]] = None, - tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - target: Optional[pulumi.Input[str]] = None): - """ - 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. - - Equivalent to Docker's `--add-host` flag. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] build_args: `ARG` names and values to set during the build. - - These variables are accessed like environment variables inside `RUN` - instructions. - - Build arguments are persisted in the image, so you should use `secrets` - if these arguments are sensitive. - - Equivalent to Docker's `--build-arg` flag. - :param pulumi.Input[bool] build_on_preview: Setting this to `false` will always skip image builds during previews, - and setting it to `true` will always build images during previews. - - Images built during previews are never exported to registries, however - cache manifests are still exported. - - On-disk Dockerfiles are always validated for syntactic correctness - regardless of this setting. - - Defaults to `true` as a safeguard against broken images merging as part - of CI pipelines. - :param pulumi.Input['BuilderConfigArgs'] builder: Builder configuration. - :param pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]] cache_from: Cache export configuration. - - Equivalent to Docker's `--cache-from` flag. - :param pulumi.Input[Sequence[pulumi.Input['CacheToArgs']]] cache_to: Cache import configuration. - - Equivalent to Docker's `--cache-to` flag. - :param pulumi.Input['BuildContextArgs'] context: Build context settings. Defaults to the current directory. - - Equivalent to Docker's `PATH | URL | -` positional argument. - :param pulumi.Input['DockerfileArgs'] dockerfile: Dockerfile settings. - - Equivalent to Docker's `--file` flag. - :param pulumi.Input[bool] exec_: Use `exec` mode to build this image. - - By default the provider embeds a v25 Docker client with v0.12 buildx - support. This helps ensure consistent behavior across environments and - is compatible with alternative build backends (e.g. `buildkitd`), but - it may not be desirable if you require a specific version of buildx. - For example you may want to run a custom `docker-buildx` binary with - support for [Docker Build - Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - - When this is set to `true` the provider will instead execute the - `docker-buildx` binary directly to perform its operations. The user is - responsible for ensuring this binary exists, with correct permissions - and pre-configured builders, at a path Docker expects (e.g. - `~/.docker/cli-plugins`). - - Debugging `exec` mode may be more difficult as Pulumi will not be able - to surface fine-grained errors and warnings. Additionally credentials - are temporarily written to disk in order to provide them to the - `docker-buildx` binary. - :param pulumi.Input[Sequence[pulumi.Input['ExportArgs']]] exports: Controls where images are persisted after building. - - Images are only stored in the local cache unless `exports` are - explicitly configured. - - Exporting to multiple destinations requires a daemon running BuildKit - 0.13 or later. - - Equivalent to Docker's `--output` flag. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Attach arbitrary key/value metadata to the image. - - Equivalent to Docker's `--label` flag. - :param pulumi.Input[bool] load: When `true` the build will automatically include a `docker` export. - - Defaults to `false`. - - Equivalent to Docker's `--load` flag. - :param pulumi.Input['NetworkMode'] network: Set the network mode for `RUN` instructions. Defaults to `default`. - - For custom networks, configure your builder with `--driver-opt network=...`. - - Equivalent to Docker's `--network` flag. - :param pulumi.Input[bool] no_cache: Do not import cache manifests when building the image. - - Equivalent to Docker's `--no-cache` flag. - :param pulumi.Input[Sequence[pulumi.Input['Platform']]] platforms: Set target platform(s) for the build. Defaults to the host's platform. - - Equivalent to Docker's `--platform` flag. - :param pulumi.Input[bool] pull: Always pull referenced images. - - Equivalent to Docker's `--pull` flag. - :param pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]] registries: Registry credentials. Required if reading or exporting to private - repositories. - - Credentials are kept in-memory and do not pollute pre-existing - credentials on the host. - - Similar to `docker login`. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] secrets: A mapping of secret names to their corresponding values. - - Unlike the Docker CLI, these can be passed by value and do not need to - exist on-disk or in environment variables. - - Build arguments and environment variables are persistent in the final - image, so you should use this for sensitive values. - - Similar to Docker's `--secret` flag. - :param pulumi.Input[Sequence[pulumi.Input['SSHArgs']]] ssh: SSH agent socket or keys to expose to the build. - - Equivalent to Docker's `--ssh` flag. - :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Name and optionally a tag (format: `name:tag`). - - If exporting to a registry, the name should include the fully qualified - registry address (e.g. `docker.io/pulumi/pulumi:latest`). - - Equivalent to Docker's `--tag` flag. - :param pulumi.Input[str] target: Set the target build stage(s) to build. - - If not specified all targets will be built by default. - - Equivalent to Docker's `--target` flag. - """ - pulumi.set(__self__, "push", push) - if add_hosts is not None: - pulumi.set(__self__, "add_hosts", add_hosts) - if build_args is not None: - pulumi.set(__self__, "build_args", build_args) - if build_on_preview is None: - build_on_preview = True - if build_on_preview is not None: - pulumi.set(__self__, "build_on_preview", build_on_preview) - if builder is not None: - pulumi.set(__self__, "builder", builder) - if cache_from is not None: - pulumi.set(__self__, "cache_from", cache_from) - if cache_to is not None: - pulumi.set(__self__, "cache_to", cache_to) - if context is not None: - pulumi.set(__self__, "context", context) - if dockerfile is not None: - pulumi.set(__self__, "dockerfile", dockerfile) - if exec_ is not None: - pulumi.set(__self__, "exec_", exec_) - if exports is not None: - pulumi.set(__self__, "exports", exports) - if labels is not None: - pulumi.set(__self__, "labels", labels) - if load is not None: - pulumi.set(__self__, "load", load) - if network is None: - network = 'default' - if network is not None: - pulumi.set(__self__, "network", network) - if no_cache is not None: - pulumi.set(__self__, "no_cache", no_cache) - if platforms is not None: - pulumi.set(__self__, "platforms", platforms) - if pull is not None: - pulumi.set(__self__, "pull", pull) - if registries is not None: - pulumi.set(__self__, "registries", registries) - if secrets is not None: - pulumi.set(__self__, "secrets", secrets) - if ssh is not None: - pulumi.set(__self__, "ssh", ssh) - if tags is not None: - pulumi.set(__self__, "tags", tags) - if target is not None: - 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 - @pulumi.getter(name="addHosts") - def add_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Custom `host:ip` mappings to use during the build. - - Equivalent to Docker's `--add-host` flag. - """ - return pulumi.get(self, "add_hosts") - - @add_hosts.setter - def add_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "add_hosts", value) - - @property - @pulumi.getter(name="buildArgs") - def build_args(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - `ARG` names and values to set during the build. - - These variables are accessed like environment variables inside `RUN` - instructions. - - Build arguments are persisted in the image, so you should use `secrets` - if these arguments are sensitive. - - Equivalent to Docker's `--build-arg` flag. - """ - return pulumi.get(self, "build_args") - - @build_args.setter - def build_args(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "build_args", value) - - @property - @pulumi.getter(name="buildOnPreview") - def build_on_preview(self) -> Optional[pulumi.Input[bool]]: - """ - Setting this to `false` will always skip image builds during previews, - and setting it to `true` will always build images during previews. - - Images built during previews are never exported to registries, however - cache manifests are still exported. - - On-disk Dockerfiles are always validated for syntactic correctness - regardless of this setting. - - Defaults to `true` as a safeguard against broken images merging as part - of CI pipelines. - """ - return pulumi.get(self, "build_on_preview") - - @build_on_preview.setter - def build_on_preview(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "build_on_preview", value) - - @property - @pulumi.getter - def builder(self) -> Optional[pulumi.Input['BuilderConfigArgs']]: - """ - Builder configuration. - """ - return pulumi.get(self, "builder") - - @builder.setter - def builder(self, value: Optional[pulumi.Input['BuilderConfigArgs']]): - pulumi.set(self, "builder", value) - - @property - @pulumi.getter(name="cacheFrom") - def cache_from(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]]]: - """ - Cache export configuration. - - Equivalent to Docker's `--cache-from` flag. - """ - return pulumi.get(self, "cache_from") - - @cache_from.setter - def cache_from(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CacheFromArgs']]]]): - pulumi.set(self, "cache_from", value) - - @property - @pulumi.getter(name="cacheTo") - def cache_to(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CacheToArgs']]]]: - """ - Cache import configuration. - - Equivalent to Docker's `--cache-to` flag. - """ - return pulumi.get(self, "cache_to") - - @cache_to.setter - def cache_to(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CacheToArgs']]]]): - pulumi.set(self, "cache_to", value) - - @property - @pulumi.getter - def context(self) -> Optional[pulumi.Input['BuildContextArgs']]: - """ - Build context settings. Defaults to the current directory. - - Equivalent to Docker's `PATH | URL | -` positional argument. - """ - return pulumi.get(self, "context") - - @context.setter - def context(self, value: Optional[pulumi.Input['BuildContextArgs']]): - pulumi.set(self, "context", value) - - @property - @pulumi.getter - def dockerfile(self) -> Optional[pulumi.Input['DockerfileArgs']]: - """ - Dockerfile settings. - - Equivalent to Docker's `--file` flag. - """ - return pulumi.get(self, "dockerfile") - - @dockerfile.setter - def dockerfile(self, value: Optional[pulumi.Input['DockerfileArgs']]): - pulumi.set(self, "dockerfile", value) - - @property - @pulumi.getter(name="exec") - def exec_(self) -> Optional[pulumi.Input[bool]]: - """ - Use `exec` mode to build this image. - - By default the provider embeds a v25 Docker client with v0.12 buildx - support. This helps ensure consistent behavior across environments and - is compatible with alternative build backends (e.g. `buildkitd`), but - it may not be desirable if you require a specific version of buildx. - For example you may want to run a custom `docker-buildx` binary with - support for [Docker Build - Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - - When this is set to `true` the provider will instead execute the - `docker-buildx` binary directly to perform its operations. The user is - responsible for ensuring this binary exists, with correct permissions - and pre-configured builders, at a path Docker expects (e.g. - `~/.docker/cli-plugins`). - - Debugging `exec` mode may be more difficult as Pulumi will not be able - to surface fine-grained errors and warnings. Additionally credentials - are temporarily written to disk in order to provide them to the - `docker-buildx` binary. - """ - return pulumi.get(self, "exec_") - - @exec_.setter - def exec_(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "exec_", value) - - @property - @pulumi.getter - def exports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ExportArgs']]]]: - """ - Controls where images are persisted after building. - - Images are only stored in the local cache unless `exports` are - explicitly configured. - - Exporting to multiple destinations requires a daemon running BuildKit - 0.13 or later. - - Equivalent to Docker's `--output` flag. - """ - return pulumi.get(self, "exports") - - @exports.setter - def exports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ExportArgs']]]]): - pulumi.set(self, "exports", value) - - @property - @pulumi.getter - def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - Attach arbitrary key/value metadata to the image. - - Equivalent to Docker's `--label` flag. - """ - return pulumi.get(self, "labels") - - @labels.setter - def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "labels", value) - - @property - @pulumi.getter - def load(self) -> Optional[pulumi.Input[bool]]: - """ - When `true` the build will automatically include a `docker` export. - - Defaults to `false`. - - Equivalent to Docker's `--load` flag. - """ - return pulumi.get(self, "load") - - @load.setter - def load(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "load", value) - - @property - @pulumi.getter - def network(self) -> Optional[pulumi.Input['NetworkMode']]: - """ - Set the network mode for `RUN` instructions. Defaults to `default`. - - For custom networks, configure your builder with `--driver-opt network=...`. - - Equivalent to Docker's `--network` flag. - """ - return pulumi.get(self, "network") - - @network.setter - def network(self, value: Optional[pulumi.Input['NetworkMode']]): - pulumi.set(self, "network", value) - - @property - @pulumi.getter(name="noCache") - def no_cache(self) -> Optional[pulumi.Input[bool]]: - """ - Do not import cache manifests when building the image. - - Equivalent to Docker's `--no-cache` flag. - """ - return pulumi.get(self, "no_cache") - - @no_cache.setter - def no_cache(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "no_cache", value) - - @property - @pulumi.getter - def platforms(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]]: - """ - Set target platform(s) for the build. Defaults to the host's platform. - - Equivalent to Docker's `--platform` flag. - """ - return pulumi.get(self, "platforms") - - @platforms.setter - def platforms(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]]): - pulumi.set(self, "platforms", value) - - @property - @pulumi.getter - def pull(self) -> Optional[pulumi.Input[bool]]: - """ - Always pull referenced images. - - Equivalent to Docker's `--pull` flag. - """ - return pulumi.get(self, "pull") - - @pull.setter - def pull(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "pull", value) - - @property - @pulumi.getter - def registries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]: - """ - Registry credentials. Required if reading or exporting to private - repositories. - - Credentials are kept in-memory and do not pollute pre-existing - credentials on the host. - - Similar to `docker login`. - """ - return pulumi.get(self, "registries") - - @registries.setter - def registries(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]): - pulumi.set(self, "registries", value) - - @property - @pulumi.getter - def secrets(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: - """ - A mapping of secret names to their corresponding values. - - Unlike the Docker CLI, these can be passed by value and do not need to - exist on-disk or in environment variables. - - Build arguments and environment variables are persistent in the final - image, so you should use this for sensitive values. - - Similar to Docker's `--secret` flag. - """ - return pulumi.get(self, "secrets") - - @secrets.setter - def secrets(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): - pulumi.set(self, "secrets", value) - - @property - @pulumi.getter - def ssh(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SSHArgs']]]]: - """ - SSH agent socket or keys to expose to the build. - - Equivalent to Docker's `--ssh` flag. - """ - return pulumi.get(self, "ssh") - - @ssh.setter - def ssh(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SSHArgs']]]]): - pulumi.set(self, "ssh", value) - - @property - @pulumi.getter - def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: - """ - Name and optionally a tag (format: `name:tag`). - - If exporting to a registry, the name should include the fully qualified - registry address (e.g. `docker.io/pulumi/pulumi:latest`). - - Equivalent to Docker's `--tag` flag. - """ - return pulumi.get(self, "tags") - - @tags.setter - def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): - pulumi.set(self, "tags", value) - - @property - @pulumi.getter - def target(self) -> Optional[pulumi.Input[str]]: - """ - Set the target build stage(s) to build. - - If not specified all targets will be built by default. - - Equivalent to Docker's `--target` flag. - """ - return pulumi.get(self, "target") - - @target.setter - def target(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "target", value) - - -class Image(pulumi.CustomResource): - @overload - def __init__(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - add_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - build_args: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - build_on_preview: Optional[pulumi.Input[bool]] = None, - builder: Optional[pulumi.Input[pulumi.InputType['BuilderConfigArgs']]] = None, - cache_from: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheFromArgs']]]]] = None, - cache_to: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheToArgs']]]]] = None, - context: Optional[pulumi.Input[pulumi.InputType['BuildContextArgs']]] = None, - dockerfile: Optional[pulumi.Input[pulumi.InputType['DockerfileArgs']]] = None, - exec_: Optional[pulumi.Input[bool]] = None, - exports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ExportArgs']]]]] = None, - labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - load: Optional[pulumi.Input[bool]] = None, - network: Optional[pulumi.Input['NetworkMode']] = None, - no_cache: Optional[pulumi.Input[bool]] = None, - platforms: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]] = None, - pull: Optional[pulumi.Input[bool]] = None, - push: Optional[pulumi.Input[bool]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegistryArgs']]]]] = None, - secrets: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - ssh: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SSHArgs']]]]] = None, - tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - target: Optional[pulumi.Input[str]] = None, - __props__=None): - """ - A Docker image built using buildx -- Docker's interface to the improved - BuildKit backend. - - ## Stability - - **This resource is pre-1.0 and in public preview.** - - We will strive to keep APIs and behavior as stable as possible, but we - cannot guarantee stability until version 1.0. - - ## Migrating Pulumi Docker v3 and v4 Image resources - - This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. - Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - - ### Behavioral differences - - There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - - #### Previews - - Version `3.x` of the Pulumi Docker provider always builds images during preview operations. - This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - - Version `4.x` changed build-on-preview behavior to be opt-in. - By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. - Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - - The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. - This behavior can be changed by specifying `buildOnPreview`. - - #### Push behavior - - Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. - They expose a `skipPush: true` option to disable pushing. - - This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - - To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). - Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - - #### Secrets - - Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - - Version `4.x` of the Pulumi Docker provider does not support secrets. - - The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. - Instead, they should be passed directly as values. - (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) - Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - - #### Caching - - Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. - It builds targets individually and pushes them to separate images for caching. - - Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - - Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. - This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - - The `Image` resource delegates all caching behavior to Docker. - `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - - #### Outputs - - Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. - In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - - Unlike earlier providers the `Image` resource can push multiple tags. - As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. - If multiple tags were pushed this uses one at random. - - If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - - #### Tag deletion and refreshes - - Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - - The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. - If any are missing a subsequent `update` will push them. - - When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. - Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). - Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - - Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - - ### Example migration - - Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - - The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. - After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. - In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - - The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. - It it is shown with parameters similar to the `v3` example for completeness. - - ## Example Usage - - ## Example Usage - ### Push to AWS ECR with caching - ```python - import pulumi - import pulumi_aws as aws - import pulumi_docker_build as docker_build - - ecr_repository = aws.ecr.Repository("ecr-repository") - auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id) - my_image = docker_build.Image("my-image", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - image_manifest=True, - oci_media_types=True, - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - context=docker_build.BuildContextArgs( - location="./app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address=ecr_repository.repository_url, - password=auth_token.password, - username=auth_token.user_name, - )], - tags=[ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:latest")]) - pulumi.export("ref", my_image.ref) - ``` - ### Multi-platform image - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[ - docker_build.Platform.PLAN9_AMD64, - docker_build.Platform.PLAN9_386, - ], - push=False) - ``` - ### Registry export - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address="docker.io", - password=docker_hub_password, - username="pulumibot", - )], - tags=["docker.io/pulumi/pulumi:3.107.0"]) - pulumi.export("ref", my_image["ref"]) - ``` - ### Caching - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - cache_from=[docker_build.CacheFromArgs( - local=docker_build.CacheFromLocalArgs( - src="tmp/cache", - ), - )], - cache_to=[docker_build.CacheToArgs( - local=docker_build.CacheToLocalArgs( - dest="tmp/cache", - mode=docker_build.CacheMode.MAX, - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) - ``` - ### Docker Build Cloud - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - builder=docker_build.BuilderConfigArgs( - name="cloud-builder-name", - ), - context=docker_build.BuildContextArgs( - location="app", - ), - exec_=True, - push=False) - ``` - ### Build arguments - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - build_args={ - "SET_ME_TO_TRUE": "true", - }, - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) - ``` - ### Build target - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=False, - target="build-me") - ``` - ### Named contexts - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - named={ - "golang:latest": docker_build.ContextArgs( - location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - ), - }, - ), - push=False) - ``` - ### Remote context - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - ), - push=False) - ``` - ### Inline Dockerfile - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - dockerfile=docker_build.DockerfileArgs( - inline=\"\"\"FROM busybox - COPY hello.c ./ - \"\"\", - ), - push=False) - ``` - ### Remote context - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://github.com/docker-library/hello-world.git", - ), - dockerfile=docker_build.DockerfileArgs( - location="app/Dockerfile", - ), - push=False) - ``` - ### Local export - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - exports=[docker_build.ExportArgs( - docker=docker_build.ExportDockerArgs( - tar=True, - ), - )], - push=False) - ``` - - :param str resource_name: The name of the resource. - :param pulumi.ResourceOptions opts: Options for the resource. - :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. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] build_args: `ARG` names and values to set during the build. - - These variables are accessed like environment variables inside `RUN` - instructions. - - Build arguments are persisted in the image, so you should use `secrets` - if these arguments are sensitive. - - Equivalent to Docker's `--build-arg` flag. - :param pulumi.Input[bool] build_on_preview: Setting this to `false` will always skip image builds during previews, - and setting it to `true` will always build images during previews. - - Images built during previews are never exported to registries, however - cache manifests are still exported. - - On-disk Dockerfiles are always validated for syntactic correctness - regardless of this setting. - - Defaults to `true` as a safeguard against broken images merging as part - of CI pipelines. - :param pulumi.Input[pulumi.InputType['BuilderConfigArgs']] builder: Builder configuration. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheFromArgs']]]] cache_from: Cache export configuration. - - Equivalent to Docker's `--cache-from` flag. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheToArgs']]]] cache_to: Cache import configuration. - - Equivalent to Docker's `--cache-to` flag. - :param pulumi.Input[pulumi.InputType['BuildContextArgs']] context: Build context settings. Defaults to the current directory. - - Equivalent to Docker's `PATH | URL | -` positional argument. - :param pulumi.Input[pulumi.InputType['DockerfileArgs']] dockerfile: Dockerfile settings. - - Equivalent to Docker's `--file` flag. - :param pulumi.Input[bool] exec_: Use `exec` mode to build this image. - - By default the provider embeds a v25 Docker client with v0.12 buildx - support. This helps ensure consistent behavior across environments and - is compatible with alternative build backends (e.g. `buildkitd`), but - it may not be desirable if you require a specific version of buildx. - For example you may want to run a custom `docker-buildx` binary with - support for [Docker Build - Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - - When this is set to `true` the provider will instead execute the - `docker-buildx` binary directly to perform its operations. The user is - responsible for ensuring this binary exists, with correct permissions - and pre-configured builders, at a path Docker expects (e.g. - `~/.docker/cli-plugins`). - - Debugging `exec` mode may be more difficult as Pulumi will not be able - to surface fine-grained errors and warnings. Additionally credentials - are temporarily written to disk in order to provide them to the - `docker-buildx` binary. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ExportArgs']]]] exports: Controls where images are persisted after building. - - Images are only stored in the local cache unless `exports` are - explicitly configured. - - Exporting to multiple destinations requires a daemon running BuildKit - 0.13 or later. - - Equivalent to Docker's `--output` flag. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Attach arbitrary key/value metadata to the image. - - Equivalent to Docker's `--label` flag. - :param pulumi.Input[bool] load: When `true` the build will automatically include a `docker` export. - - Defaults to `false`. - - Equivalent to Docker's `--load` flag. - :param pulumi.Input['NetworkMode'] network: Set the network mode for `RUN` instructions. Defaults to `default`. - - For custom networks, configure your builder with `--driver-opt network=...`. - - Equivalent to Docker's `--network` flag. - :param pulumi.Input[bool] no_cache: Do not import cache manifests when building the image. - - Equivalent to Docker's `--no-cache` flag. - :param pulumi.Input[Sequence[pulumi.Input['Platform']]] platforms: Set target platform(s) for the build. Defaults to the host's platform. - - Equivalent to Docker's `--platform` flag. - :param pulumi.Input[bool] pull: Always pull referenced images. - - 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[pulumi.InputType['RegistryArgs']]]] registries: Registry credentials. Required if reading or exporting to private - repositories. - - Credentials are kept in-memory and do not pollute pre-existing - credentials on the host. - - Similar to `docker login`. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] secrets: A mapping of secret names to their corresponding values. - - Unlike the Docker CLI, these can be passed by value and do not need to - exist on-disk or in environment variables. - - Build arguments and environment variables are persistent in the final - image, so you should use this for sensitive values. - - Similar to Docker's `--secret` flag. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SSHArgs']]]] ssh: SSH agent socket or keys to expose to the build. - - Equivalent to Docker's `--ssh` flag. - :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Name and optionally a tag (format: `name:tag`). - - If exporting to a registry, the name should include the fully qualified - registry address (e.g. `docker.io/pulumi/pulumi:latest`). - - Equivalent to Docker's `--tag` flag. - :param pulumi.Input[str] target: Set the target build stage(s) to build. - - If not specified all targets will be built by default. - - Equivalent to Docker's `--target` flag. - """ - ... - @overload - def __init__(__self__, - resource_name: str, - args: ImageArgs, - opts: Optional[pulumi.ResourceOptions] = None): - """ - A Docker image built using buildx -- Docker's interface to the improved - BuildKit backend. - - ## Stability - - **This resource is pre-1.0 and in public preview.** - - We will strive to keep APIs and behavior as stable as possible, but we - cannot guarantee stability until version 1.0. - - ## Migrating Pulumi Docker v3 and v4 Image resources - - This provider's `Image` resource provides a superset of functionality over the `Image` resources available in versions 3 and 4 of the Pulumi Docker provider. - Existing `Image` resources can be converted to the docker-build `Image` resources with minor modifications. - - ### Behavioral differences - - There are several key behavioral differences to keep in mind when transitioning images to the new `Image` resource. - - #### Previews - - Version `3.x` of the Pulumi Docker provider always builds images during preview operations. - This is helpful as a safeguard to prevent "broken" images from merging, but users found the behavior unnecessarily redundant when running previews and updates locally. - - Version `4.x` changed build-on-preview behavior to be opt-in. - By default, `v4.x` `Image` resources do _not_ build during previews, but this behavior can be toggled with the `buildOnPreview` option. - Several users reported outages due to the default behavior allowing bad images to accidentally sneak through CI. - - The default behavior of this provider's `Image` resource is similar to `3.x` and will build images during previews. - This behavior can be changed by specifying `buildOnPreview`. - - #### Push behavior - - Versions `3.x` and `4.x` of the Pulumi Docker provider attempt to push images to remote registries by default. - They expose a `skipPush: true` option to disable pushing. - - This provider's `Image` resource matches the Docker CLI's behavior and does not push images anywhere by default. - - To push images to a registry you can include `push: true` (equivalent to Docker's `--push` flag) or configure an `export` of type `registry` (equivalent to Docker's `--output type=registry`). - Like Docker, if an image is configured without exports you will see a warning with instructions for how to enable pushing, but the build will still proceed normally. - - #### Secrets - - Version `3.x` of the Pulumi Docker provider supports secrets by way of the `extraOptions` field. - - Version `4.x` of the Pulumi Docker provider does not support secrets. - - The `Image` resource supports secrets but does not require those secrets to exist on-disk or in environment variables. - Instead, they should be passed directly as values. - (Please be sure to familiarize yourself with Pulumi's [native secret handling](https://www.pulumi.com/docs/concepts/secrets/).) - Pulumi also provides [ESC](https://www.pulumi.com/product/esc/) to make it easier to share secrets across stacks and environments. - - #### Caching - - Version `3.x` of the Pulumi Docker provider exposes `cacheFrom: bool | { stages: [...] }`. - It builds targets individually and pushes them to separate images for caching. - - Version `4.x` exposes a similar parameter `cacheFrom: { images: [...] }` which pushes and pulls inline caches. - - Both versions 3 and 4 require specific environment variables to be set and deviate from Docker's native caching behavior. - This can result in inefficient builds due to unnecessary image pulls, repeated file transfers, etc. - - The `Image` resource delegates all caching behavior to Docker. - `cacheFrom` and `cacheTo` options (equivalent to Docker's `--cache-to` and `--cache-from`) are exposed and provide additional cache targets, such as local disk, S3 storage, etc. - - #### Outputs - - Versions `3.x` and `4.x` of the provider exposed a `repoDigest` output which was a fully qualified tag with digest. - In `4.x` this could also be a single sha256 hash if the image wasn't pushed. - - Unlike earlier providers the `Image` resource can push multiple tags. - As a convenience, it exposes a `ref` output consisting of a tag with digest as long as the image was pushed. - If multiple tags were pushed this uses one at random. - - If you need more control over tag references you can use the `digest` output, which is always a single sha256 hash as long as the image was exported somewhere. - - #### Tag deletion and refreshes - - Versions 3 and 4 of Pulumi Docker provider do not delete tags when the `Image` resource is deleted, nor do they confirm expected tags exist during `refresh` operations. - - The `buidx.Image` will query your registries during `refresh` to ensure the expected tags exist. - If any are missing a subsequent `update` will push them. - - When a `Image` is deleted, it will _attempt_ to also delete any pushed tags. - Deletion of remote tags is not guaranteed because not all registries support the manifest `DELETE` API (`docker.io` in particular). - Manifests are _not_ deleted in the same way during updates -- to do so safely would require a full build to determine whether a Pulumi operation should be an update or update-replace. - - Use the [`retainOnDelete: true`](https://www.pulumi.com/docs/concepts/options/retainondelete/) option if you do not want tags deleted. - - ### Example migration - - Examples of "fully-featured" `v3` and `v4` `Image` resources are shown below, along with an example `Image` resource showing how they would look after migration. - - The `v3` resource leverages `buildx` via a `DOCKER_BUILDKIT` environment variable and CLI flags passed in with `extraOption`. - After migration, the environment variable is no longer needed and CLI flags are now properties on the `Image`. - In almost all cases, properties of `Image` are named after the Docker CLI flag they correspond to. - - The `v4` resource is less functional than its `v3` counterpart because it lacks the flexibility of `extraOptions`. - It it is shown with parameters similar to the `v3` example for completeness. - - ## Example Usage - - ## Example Usage - ### Push to AWS ECR with caching - ```python - import pulumi - import pulumi_aws as aws - import pulumi_docker_build as docker_build - - ecr_repository = aws.ecr.Repository("ecr-repository") - auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id) - my_image = docker_build.Image("my-image", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - image_manifest=True, - oci_media_types=True, - ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"), - ), - )], - context=docker_build.BuildContextArgs( - location="./app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address=ecr_repository.repository_url, - password=auth_token.password, - username=auth_token.user_name, - )], - tags=[ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:latest")]) - pulumi.export("ref", my_image.ref) - ``` - ### Multi-platform image - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[ - docker_build.Platform.PLAN9_AMD64, - docker_build.Platform.PLAN9_386, - ], - push=False) - ``` - ### Registry export - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=True, - registries=[docker_build.RegistryArgs( - address="docker.io", - password=docker_hub_password, - username="pulumibot", - )], - tags=["docker.io/pulumi/pulumi:3.107.0"]) - pulumi.export("ref", my_image["ref"]) - ``` - ### Caching - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - cache_from=[docker_build.CacheFromArgs( - local=docker_build.CacheFromLocalArgs( - src="tmp/cache", - ), - )], - cache_to=[docker_build.CacheToArgs( - local=docker_build.CacheToLocalArgs( - dest="tmp/cache", - mode=docker_build.CacheMode.MAX, - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) - ``` - ### Docker Build Cloud - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - builder=docker_build.BuilderConfigArgs( - name="cloud-builder-name", - ), - context=docker_build.BuildContextArgs( - location="app", - ), - exec_=True, - push=False) - ``` - ### Build arguments - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - build_args={ - "SET_ME_TO_TRUE": "true", - }, - context=docker_build.BuildContextArgs( - location="app", - ), - push=False) - ``` - ### Build target - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - push=False, - target="build-me") - ``` - ### Named contexts - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - named={ - "golang:latest": docker_build.ContextArgs( - location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984", - ), - }, - ), - push=False) - ``` - ### Remote context - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile", - ), - push=False) - ``` - ### Inline Dockerfile - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - dockerfile=docker_build.DockerfileArgs( - inline=\"\"\"FROM busybox - COPY hello.c ./ - \"\"\", - ), - push=False) - ``` - ### Remote context - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="https://github.com/docker-library/hello-world.git", - ), - dockerfile=docker_build.DockerfileArgs( - location="app/Dockerfile", - ), - push=False) - ``` - ### Local export - ```python - import pulumi - import pulumi_docker_build as docker_build - - image = docker_build.Image("image", - context=docker_build.BuildContextArgs( - location="app", - ), - exports=[docker_build.ExportArgs( - docker=docker_build.ExportDockerArgs( - tar=True, - ), - )], - push=False) - ``` - - :param str resource_name: The name of the resource. - :param ImageArgs args: The arguments to use to populate this resource's properties. - :param pulumi.ResourceOptions opts: Options for the resource. - """ - ... - def __init__(__self__, resource_name: str, *args, **kwargs): - resource_args, opts = _utilities.get_resource_args_opts(ImageArgs, pulumi.ResourceOptions, *args, **kwargs) - if resource_args is not None: - __self__._internal_init(resource_name, opts, **resource_args.__dict__) - else: - __self__._internal_init(resource_name, *args, **kwargs) - - def _internal_init(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - add_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - build_args: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - build_on_preview: Optional[pulumi.Input[bool]] = None, - builder: Optional[pulumi.Input[pulumi.InputType['BuilderConfigArgs']]] = None, - cache_from: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheFromArgs']]]]] = None, - cache_to: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CacheToArgs']]]]] = None, - context: Optional[pulumi.Input[pulumi.InputType['BuildContextArgs']]] = None, - dockerfile: Optional[pulumi.Input[pulumi.InputType['DockerfileArgs']]] = None, - exec_: Optional[pulumi.Input[bool]] = None, - exports: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ExportArgs']]]]] = None, - labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - load: Optional[pulumi.Input[bool]] = None, - network: Optional[pulumi.Input['NetworkMode']] = None, - no_cache: Optional[pulumi.Input[bool]] = None, - platforms: Optional[pulumi.Input[Sequence[pulumi.Input['Platform']]]] = None, - pull: Optional[pulumi.Input[bool]] = None, - push: Optional[pulumi.Input[bool]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegistryArgs']]]]] = None, - secrets: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - ssh: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SSHArgs']]]]] = None, - tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - target: Optional[pulumi.Input[str]] = None, - __props__=None): - opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) - if not isinstance(opts, pulumi.ResourceOptions): - raise TypeError('Expected resource options to be a ResourceOptions instance') - if opts.id is None: - if __props__ is not None: - raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') - __props__ = ImageArgs.__new__(ImageArgs) - - __props__.__dict__["add_hosts"] = add_hosts - __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__["builder"] = builder - __props__.__dict__["cache_from"] = cache_from - __props__.__dict__["cache_to"] = cache_to - __props__.__dict__["context"] = context - __props__.__dict__["dockerfile"] = dockerfile - __props__.__dict__["exec_"] = exec_ - __props__.__dict__["exports"] = exports - __props__.__dict__["labels"] = labels - __props__.__dict__["load"] = load - if network is None: - network = 'default' - __props__.__dict__["network"] = network - __props__.__dict__["no_cache"] = no_cache - __props__.__dict__["platforms"] = platforms - __props__.__dict__["pull"] = pull - if push is None and not opts.urn: - raise TypeError("Missing required property 'push'") - __props__.__dict__["push"] = push - __props__.__dict__["registries"] = registries - __props__.__dict__["secrets"] = secrets - __props__.__dict__["ssh"] = ssh - __props__.__dict__["tags"] = tags - __props__.__dict__["target"] = target - __props__.__dict__["context_hash"] = None - __props__.__dict__["digest"] = None - __props__.__dict__["ref"] = None - super(Image, __self__).__init__( - 'docker-build:index:Image', - resource_name, - __props__, - opts) - - @staticmethod - def get(resource_name: str, - id: pulumi.Input[str], - opts: Optional[pulumi.ResourceOptions] = None) -> 'Image': - """ - Get an existing Image resource's state with the given name, id, and optional extra - properties used to qualify the lookup. - - :param str resource_name: The unique name of the resulting resource. - :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. - :param pulumi.ResourceOptions opts: Options for the resource. - """ - opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) - - __props__ = ImageArgs.__new__(ImageArgs) - - __props__.__dict__["add_hosts"] = None - __props__.__dict__["build_args"] = None - __props__.__dict__["build_on_preview"] = None - __props__.__dict__["builder"] = None - __props__.__dict__["cache_from"] = None - __props__.__dict__["cache_to"] = None - __props__.__dict__["context"] = None - __props__.__dict__["context_hash"] = None - __props__.__dict__["digest"] = None - __props__.__dict__["dockerfile"] = None - __props__.__dict__["exec_"] = None - __props__.__dict__["exports"] = None - __props__.__dict__["labels"] = None - __props__.__dict__["load"] = None - __props__.__dict__["network"] = None - __props__.__dict__["no_cache"] = None - __props__.__dict__["platforms"] = None - __props__.__dict__["pull"] = None - __props__.__dict__["push"] = None - __props__.__dict__["ref"] = None - __props__.__dict__["registries"] = None - __props__.__dict__["secrets"] = None - __props__.__dict__["ssh"] = None - __props__.__dict__["tags"] = None - __props__.__dict__["target"] = None - return Image(resource_name, opts=opts, __props__=__props__) - - @property - @pulumi.getter(name="addHosts") - def add_hosts(self) -> pulumi.Output[Optional[Sequence[str]]]: - """ - Custom `host:ip` mappings to use during the build. - - Equivalent to Docker's `--add-host` flag. - """ - return pulumi.get(self, "add_hosts") - - @property - @pulumi.getter(name="buildArgs") - def build_args(self) -> pulumi.Output[Optional[Mapping[str, str]]]: - """ - `ARG` names and values to set during the build. - - These variables are accessed like environment variables inside `RUN` - instructions. - - Build arguments are persisted in the image, so you should use `secrets` - if these arguments are sensitive. - - Equivalent to Docker's `--build-arg` flag. - """ - return pulumi.get(self, "build_args") - - @property - @pulumi.getter(name="buildOnPreview") - def build_on_preview(self) -> pulumi.Output[Optional[bool]]: - """ - Setting this to `false` will always skip image builds during previews, - and setting it to `true` will always build images during previews. - - Images built during previews are never exported to registries, however - cache manifests are still exported. - - On-disk Dockerfiles are always validated for syntactic correctness - regardless of this setting. - - Defaults to `true` as a safeguard against broken images merging as part - of CI pipelines. - """ - return pulumi.get(self, "build_on_preview") - - @property - @pulumi.getter - def builder(self) -> pulumi.Output[Optional['outputs.BuilderConfig']]: - """ - Builder configuration. - """ - return pulumi.get(self, "builder") - - @property - @pulumi.getter(name="cacheFrom") - def cache_from(self) -> pulumi.Output[Optional[Sequence['outputs.CacheFrom']]]: - """ - Cache export configuration. - - Equivalent to Docker's `--cache-from` flag. - """ - return pulumi.get(self, "cache_from") - - @property - @pulumi.getter(name="cacheTo") - def cache_to(self) -> pulumi.Output[Optional[Sequence['outputs.CacheTo']]]: - """ - Cache import configuration. - - Equivalent to Docker's `--cache-to` flag. - """ - return pulumi.get(self, "cache_to") - - @property - @pulumi.getter - def context(self) -> pulumi.Output[Optional['outputs.BuildContext']]: - """ - Build context settings. Defaults to the current directory. - - Equivalent to Docker's `PATH | URL | -` positional argument. - """ - return pulumi.get(self, "context") - - @property - @pulumi.getter(name="contextHash") - def context_hash(self) -> pulumi.Output[str]: - """ - A preliminary hash of the image's build context. - - Pulumi uses this to determine if an image _may_ need to be re-built. - """ - return pulumi.get(self, "context_hash") - - @property - @pulumi.getter - def digest(self) -> pulumi.Output[str]: - """ - A SHA256 digest of the image if it was exported to a registry or - elsewhere. - - Empty if the image was not exported. - - Registry images can be referenced precisely as `@`. The - `ref` output provides one such reference as a convenience. - """ - return pulumi.get(self, "digest") - - @property - @pulumi.getter - def dockerfile(self) -> pulumi.Output[Optional['outputs.Dockerfile']]: - """ - Dockerfile settings. - - Equivalent to Docker's `--file` flag. - """ - return pulumi.get(self, "dockerfile") - - @property - @pulumi.getter(name="exec") - def exec_(self) -> pulumi.Output[Optional[bool]]: - """ - Use `exec` mode to build this image. - - By default the provider embeds a v25 Docker client with v0.12 buildx - support. This helps ensure consistent behavior across environments and - is compatible with alternative build backends (e.g. `buildkitd`), but - it may not be desirable if you require a specific version of buildx. - For example you may want to run a custom `docker-buildx` binary with - support for [Docker Build - Cloud](https://docs.docker.com/build/cloud/setup/) (DBC). - - When this is set to `true` the provider will instead execute the - `docker-buildx` binary directly to perform its operations. The user is - responsible for ensuring this binary exists, with correct permissions - and pre-configured builders, at a path Docker expects (e.g. - `~/.docker/cli-plugins`). - - Debugging `exec` mode may be more difficult as Pulumi will not be able - to surface fine-grained errors and warnings. Additionally credentials - are temporarily written to disk in order to provide them to the - `docker-buildx` binary. - """ - return pulumi.get(self, "exec_") - - @property - @pulumi.getter - def exports(self) -> pulumi.Output[Optional[Sequence['outputs.Export']]]: - """ - Controls where images are persisted after building. - - Images are only stored in the local cache unless `exports` are - explicitly configured. - - Exporting to multiple destinations requires a daemon running BuildKit - 0.13 or later. - - Equivalent to Docker's `--output` flag. - """ - return pulumi.get(self, "exports") - - @property - @pulumi.getter - def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: - """ - Attach arbitrary key/value metadata to the image. - - Equivalent to Docker's `--label` flag. - """ - return pulumi.get(self, "labels") - - @property - @pulumi.getter - def load(self) -> pulumi.Output[Optional[bool]]: - """ - When `true` the build will automatically include a `docker` export. - - Defaults to `false`. - - Equivalent to Docker's `--load` flag. - """ - return pulumi.get(self, "load") - - @property - @pulumi.getter - def network(self) -> pulumi.Output[Optional['NetworkMode']]: - """ - Set the network mode for `RUN` instructions. Defaults to `default`. - - For custom networks, configure your builder with `--driver-opt network=...`. - - Equivalent to Docker's `--network` flag. - """ - return pulumi.get(self, "network") - - @property - @pulumi.getter(name="noCache") - def no_cache(self) -> pulumi.Output[Optional[bool]]: - """ - Do not import cache manifests when building the image. - - Equivalent to Docker's `--no-cache` flag. - """ - return pulumi.get(self, "no_cache") - - @property - @pulumi.getter - def platforms(self) -> pulumi.Output[Optional[Sequence['Platform']]]: - """ - Set target platform(s) for the build. Defaults to the host's platform. - - Equivalent to Docker's `--platform` flag. - """ - return pulumi.get(self, "platforms") - - @property - @pulumi.getter - def pull(self) -> pulumi.Output[Optional[bool]]: - """ - Always pull referenced images. - - Equivalent to Docker's `--pull` flag. - """ - return pulumi.get(self, "pull") - - @property - @pulumi.getter - def push(self) -> pulumi.Output[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") - - @property - @pulumi.getter - def ref(self) -> pulumi.Output[str]: - """ - If the image was pushed to any registries then this will contain a - single fully-qualified tag including the build's digest. - - If the image had tags but was not exported, this will take on a value - of one of those tags. - - This will be empty if the image had no exports and no tags. - - This is only for convenience and may not be appropriate for situations - where multiple tags or registries are involved. In those cases this - output is not guaranteed to be stable. - - For more control over tags consumed by downstream resources you should - use the `digest` output. - """ - return pulumi.get(self, "ref") - - @property - @pulumi.getter - def registries(self) -> pulumi.Output[Optional[Sequence['outputs.Registry']]]: - """ - Registry credentials. Required if reading or exporting to private - repositories. - - Credentials are kept in-memory and do not pollute pre-existing - credentials on the host. - - Similar to `docker login`. - """ - return pulumi.get(self, "registries") - - @property - @pulumi.getter - def secrets(self) -> pulumi.Output[Optional[Mapping[str, str]]]: - """ - A mapping of secret names to their corresponding values. - - Unlike the Docker CLI, these can be passed by value and do not need to - exist on-disk or in environment variables. - - Build arguments and environment variables are persistent in the final - image, so you should use this for sensitive values. - - Similar to Docker's `--secret` flag. - """ - return pulumi.get(self, "secrets") - - @property - @pulumi.getter - def ssh(self) -> pulumi.Output[Optional[Sequence['outputs.SSH']]]: - """ - SSH agent socket or keys to expose to the build. - - Equivalent to Docker's `--ssh` flag. - """ - return pulumi.get(self, "ssh") - - @property - @pulumi.getter - def tags(self) -> pulumi.Output[Optional[Sequence[str]]]: - """ - Name and optionally a tag (format: `name:tag`). - - If exporting to a registry, the name should include the fully qualified - registry address (e.g. `docker.io/pulumi/pulumi:latest`). - - Equivalent to Docker's `--tag` flag. - """ - return pulumi.get(self, "tags") - - @property - @pulumi.getter - def target(self) -> pulumi.Output[Optional[str]]: - """ - Set the target build stage(s) to build. - - If not specified all targets will be built by default. - - Equivalent to Docker's `--target` flag. - """ - return pulumi.get(self, "target") - diff --git a/sdk/python/pulumi_docker_build/index.py b/sdk/python/pulumi_docker_build/index.py deleted file mode 100644 index 62ffaf2..0000000 --- a/sdk/python/pulumi_docker_build/index.py +++ /dev/null @@ -1,376 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from . import _utilities -from . import outputs -from ._inputs import * - -__all__ = ['IndexArgs', 'Index'] - -@pulumi.input_type -class IndexArgs: - def __init__(__self__, *, - sources: pulumi.Input[Sequence[pulumi.Input[str]]], - tag: pulumi.Input[str], - push: Optional[pulumi.Input[bool]] = None, - registry: Optional[pulumi.Input['RegistryArgs']] = None): - """ - The set of arguments for constructing a Index resource. - :param pulumi.Input[Sequence[pulumi.Input[str]]] sources: Existing images to include in the index. - :param pulumi.Input[str] tag: The tag to apply to the index. - :param pulumi.Input[bool] push: If true, push the index to the target registry. - - Defaults to `true`. - :param pulumi.Input['RegistryArgs'] registry: Authentication for the registry where the tagged index will be pushed. - - Credentials can also be included with the provider's configuration. - """ - pulumi.set(__self__, "sources", sources) - pulumi.set(__self__, "tag", tag) - if push is None: - push = True - if push is not None: - pulumi.set(__self__, "push", push) - if registry is not None: - pulumi.set(__self__, "registry", registry) - - @property - @pulumi.getter - def sources(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: - """ - Existing images to include in the index. - """ - return pulumi.get(self, "sources") - - @sources.setter - def sources(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): - pulumi.set(self, "sources", value) - - @property - @pulumi.getter - def tag(self) -> pulumi.Input[str]: - """ - The tag to apply to the index. - """ - return pulumi.get(self, "tag") - - @tag.setter - def tag(self, value: pulumi.Input[str]): - pulumi.set(self, "tag", value) - - @property - @pulumi.getter - def push(self) -> Optional[pulumi.Input[bool]]: - """ - If true, push the index to the target registry. - - Defaults to `true`. - """ - return pulumi.get(self, "push") - - @push.setter - def push(self, value: Optional[pulumi.Input[bool]]): - pulumi.set(self, "push", value) - - @property - @pulumi.getter - def registry(self) -> Optional[pulumi.Input['RegistryArgs']]: - """ - Authentication for the registry where the tagged index will be pushed. - - Credentials can also be included with the provider's configuration. - """ - return pulumi.get(self, "registry") - - @registry.setter - def registry(self, value: Optional[pulumi.Input['RegistryArgs']]): - pulumi.set(self, "registry", value) - - -class Index(pulumi.CustomResource): - @overload - def __init__(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - push: Optional[pulumi.Input[bool]] = None, - registry: Optional[pulumi.Input[pulumi.InputType['RegistryArgs']]] = None, - sources: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - tag: Optional[pulumi.Input[str]] = None, - __props__=None): - """ - A wrapper around `docker buildx imagetools create` to create an index - (or manifest list) referencing one or more existing images. - - In most cases you do not need an `Index` to build a multi-platform - image -- specifying multiple platforms on the `Image` will handle this - for you automatically. - - However, as of April 2024, building multi-platform images _with - caching_ will only export a cache for one platform at a time (see [this - discussion](https://github.com/docker/buildx/discussions/1382) for more - details). - - Therefore this resource can be helpful if you are building - multi-platform images with caching: each platform can be built and - cached separately, and an `Index` can join them all together. An - example of this is shown below. - - This resource creates an OCI image index or a Docker manifest list - depending on the media types of the source images. - - ## Example Usage - ### Multi-platform registry caching - ```python - import pulumi - import pulumi_docker_build as docker_build - - amd64 = docker_build.Image("amd64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_AMD64], - tags=["docker.io/pulumi/pulumi:3.107.0-amd64"]) - arm64 = docker_build.Image("arm64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_ARM64], - tags=["docker.io/pulumi/pulumi:3.107.0-arm64"]) - index = docker_build.Index("index", - sources=[ - amd64.ref, - arm64.ref, - ], - tag="docker.io/pulumi/pulumi:3.107.0") - pulumi.export("ref", index.ref) - ``` - - :param str resource_name: The name of the resource. - :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[bool] push: If true, push the index to the target registry. - - Defaults to `true`. - :param pulumi.Input[pulumi.InputType['RegistryArgs']] registry: Authentication for the registry where the tagged index will be pushed. - - Credentials can also be included with the provider's configuration. - :param pulumi.Input[Sequence[pulumi.Input[str]]] sources: Existing images to include in the index. - :param pulumi.Input[str] tag: The tag to apply to the index. - """ - ... - @overload - def __init__(__self__, - resource_name: str, - args: IndexArgs, - opts: Optional[pulumi.ResourceOptions] = None): - """ - A wrapper around `docker buildx imagetools create` to create an index - (or manifest list) referencing one or more existing images. - - In most cases you do not need an `Index` to build a multi-platform - image -- specifying multiple platforms on the `Image` will handle this - for you automatically. - - However, as of April 2024, building multi-platform images _with - caching_ will only export a cache for one platform at a time (see [this - discussion](https://github.com/docker/buildx/discussions/1382) for more - details). - - Therefore this resource can be helpful if you are building - multi-platform images with caching: each platform can be built and - cached separately, and an `Index` can join them all together. An - example of this is shown below. - - This resource creates an OCI image index or a Docker manifest list - depending on the media types of the source images. - - ## Example Usage - ### Multi-platform registry caching - ```python - import pulumi - import pulumi_docker_build as docker_build - - amd64 = docker_build.Image("amd64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-amd64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_AMD64], - tags=["docker.io/pulumi/pulumi:3.107.0-amd64"]) - arm64 = docker_build.Image("arm64", - cache_from=[docker_build.CacheFromArgs( - registry=docker_build.CacheFromRegistryArgs( - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - cache_to=[docker_build.CacheToArgs( - registry=docker_build.CacheToRegistryArgs( - mode=docker_build.CacheMode.MAX, - ref="docker.io/pulumi/pulumi:cache-arm64", - ), - )], - context=docker_build.BuildContextArgs( - location="app", - ), - platforms=[docker_build.Platform.LINUX_ARM64], - tags=["docker.io/pulumi/pulumi:3.107.0-arm64"]) - index = docker_build.Index("index", - sources=[ - amd64.ref, - arm64.ref, - ], - tag="docker.io/pulumi/pulumi:3.107.0") - pulumi.export("ref", index.ref) - ``` - - :param str resource_name: The name of the resource. - :param IndexArgs args: The arguments to use to populate this resource's properties. - :param pulumi.ResourceOptions opts: Options for the resource. - """ - ... - def __init__(__self__, resource_name: str, *args, **kwargs): - resource_args, opts = _utilities.get_resource_args_opts(IndexArgs, pulumi.ResourceOptions, *args, **kwargs) - if resource_args is not None: - __self__._internal_init(resource_name, opts, **resource_args.__dict__) - else: - __self__._internal_init(resource_name, *args, **kwargs) - - def _internal_init(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - push: Optional[pulumi.Input[bool]] = None, - registry: Optional[pulumi.Input[pulumi.InputType['RegistryArgs']]] = None, - sources: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, - tag: Optional[pulumi.Input[str]] = None, - __props__=None): - opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) - if not isinstance(opts, pulumi.ResourceOptions): - raise TypeError('Expected resource options to be a ResourceOptions instance') - if opts.id is None: - if __props__ is not None: - raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') - __props__ = IndexArgs.__new__(IndexArgs) - - if push is None: - push = True - __props__.__dict__["push"] = push - __props__.__dict__["registry"] = registry - if sources is None and not opts.urn: - raise TypeError("Missing required property 'sources'") - __props__.__dict__["sources"] = sources - if tag is None and not opts.urn: - raise TypeError("Missing required property 'tag'") - __props__.__dict__["tag"] = tag - __props__.__dict__["ref"] = None - super(Index, __self__).__init__( - 'docker-build:index:Index', - resource_name, - __props__, - opts) - - @staticmethod - def get(resource_name: str, - id: pulumi.Input[str], - opts: Optional[pulumi.ResourceOptions] = None) -> 'Index': - """ - Get an existing Index resource's state with the given name, id, and optional extra - properties used to qualify the lookup. - - :param str resource_name: The unique name of the resulting resource. - :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. - :param pulumi.ResourceOptions opts: Options for the resource. - """ - opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) - - __props__ = IndexArgs.__new__(IndexArgs) - - __props__.__dict__["push"] = None - __props__.__dict__["ref"] = None - __props__.__dict__["registry"] = None - __props__.__dict__["sources"] = None - __props__.__dict__["tag"] = None - return Index(resource_name, opts=opts, __props__=__props__) - - @property - @pulumi.getter - def push(self) -> pulumi.Output[Optional[bool]]: - """ - If true, push the index to the target registry. - - Defaults to `true`. - """ - return pulumi.get(self, "push") - - @property - @pulumi.getter - def ref(self) -> pulumi.Output[str]: - """ - The pushed tag with digest. - - Identical to the tag if the index was not pushed. - """ - return pulumi.get(self, "ref") - - @property - @pulumi.getter - def registry(self) -> pulumi.Output[Optional['outputs.Registry']]: - """ - Authentication for the registry where the tagged index will be pushed. - - Credentials can also be included with the provider's configuration. - """ - return pulumi.get(self, "registry") - - @property - @pulumi.getter - def sources(self) -> pulumi.Output[Sequence[str]]: - """ - Existing images to include in the index. - """ - return pulumi.get(self, "sources") - - @property - @pulumi.getter - def tag(self) -> pulumi.Output[str]: - """ - The tag to apply to the index. - """ - return pulumi.get(self, "tag") - diff --git a/sdk/python/pulumi_docker_build/outputs.py b/sdk/python/pulumi_docker_build/outputs.py deleted file mode 100644 index 5907951..0000000 --- a/sdk/python/pulumi_docker_build/outputs.py +++ /dev/null @@ -1,2399 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from . import _utilities -from . import outputs -from ._enums import * - -__all__ = [ - 'BuildContext', - 'BuilderConfig', - 'CacheFrom', - 'CacheFromAzureBlob', - 'CacheFromGitHubActions', - 'CacheFromLocal', - 'CacheFromRegistry', - 'CacheFromS3', - 'CacheTo', - 'CacheToAzureBlob', - 'CacheToGitHubActions', - 'CacheToInline', - 'CacheToLocal', - 'CacheToRegistry', - 'CacheToS3', - 'Context', - 'Dockerfile', - 'Export', - 'ExportCacheOnly', - 'ExportDocker', - 'ExportImage', - 'ExportLocal', - 'ExportOCI', - 'ExportRegistry', - 'ExportTar', - 'Registry', - 'SSH', -] - -@pulumi.output_type -class BuildContext(dict): - def __init__(__self__, *, - location: str, - named: Optional[Mapping[str, 'outputs.Context']] = None): - """ - :param str location: Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - :param Mapping[str, 'Context'] named: Additional build contexts to use. - - These contexts are accessed with `FROM name` or `--from=name` - statements when using Dockerfile 1.4+ syntax. - - Values can be local paths, HTTP URLs, or `docker-image://` images. - """ - pulumi.set(__self__, "location", location) - if named is not None: - pulumi.set(__self__, "named", named) - - @property - @pulumi.getter - def location(self) -> str: - """ - Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - return pulumi.get(self, "location") - - @property - @pulumi.getter - def named(self) -> Optional[Mapping[str, 'outputs.Context']]: - """ - Additional build contexts to use. - - These contexts are accessed with `FROM name` or `--from=name` - statements when using Dockerfile 1.4+ syntax. - - Values can be local paths, HTTP URLs, or `docker-image://` images. - """ - return pulumi.get(self, "named") - - -@pulumi.output_type -class BuilderConfig(dict): - def __init__(__self__, *, - name: Optional[str] = None): - """ - :param str name: Name of an existing buildx builder to use. - - Only `docker-container`, `kubernetes`, or `remote` drivers are - supported. The legacy `docker` driver is not supported. - - Equivalent to Docker's `--builder` flag. - """ - if name is not None: - pulumi.set(__self__, "name", name) - - @property - @pulumi.getter - def name(self) -> Optional[str]: - """ - Name of an existing buildx builder to use. - - Only `docker-container`, `kubernetes`, or `remote` drivers are - supported. The legacy `docker` driver is not supported. - - Equivalent to Docker's `--builder` flag. - """ - return pulumi.get(self, "name") - - -@pulumi.output_type -class CacheFrom(dict): - def __init__(__self__, *, - azblob: Optional['outputs.CacheFromAzureBlob'] = None, - disabled: Optional[bool] = None, - gha: Optional['outputs.CacheFromGitHubActions'] = None, - local: Optional['outputs.CacheFromLocal'] = None, - raw: Optional[str] = None, - registry: Optional['outputs.CacheFromRegistry'] = None, - s3: Optional['outputs.CacheFromS3'] = None): - """ - :param 'CacheFromAzureBlob' azblob: Upload build caches to Azure's blob storage service. - :param bool disabled: When `true` this entry will be excluded. Defaults to `false`. - :param 'CacheFromGitHubActions' gha: Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - :param 'CacheFromLocal' local: A simple backend which caches images on your local filesystem. - :param str raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`). - :param 'CacheFromRegistry' registry: Upload build caches to remote registries. - :param 'CacheFromS3' s3: Upload build caches to AWS S3 or an S3-compatible services such as - MinIO. - """ - if azblob is not None: - pulumi.set(__self__, "azblob", azblob) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if gha is not None: - pulumi.set(__self__, "gha", gha) - if local is not None: - pulumi.set(__self__, "local", local) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if s3 is not None: - pulumi.set(__self__, "s3", s3) - - @property - @pulumi.getter - def azblob(self) -> Optional['outputs.CacheFromAzureBlob']: - """ - Upload build caches to Azure's blob storage service. - """ - return pulumi.get(self, "azblob") - - @property - @pulumi.getter - def disabled(self) -> Optional[bool]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @property - @pulumi.getter - def gha(self) -> Optional['outputs.CacheFromGitHubActions']: - """ - Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - """ - return pulumi.get(self, "gha") - - @property - @pulumi.getter - def local(self) -> Optional['outputs.CacheFromLocal']: - """ - A simple backend which caches images on your local filesystem. - """ - return pulumi.get(self, "local") - - @property - @pulumi.getter - def raw(self) -> Optional[str]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`). - """ - return pulumi.get(self, "raw") - - @property - @pulumi.getter - def registry(self) -> Optional['outputs.CacheFromRegistry']: - """ - Upload build caches to remote registries. - """ - return pulumi.get(self, "registry") - - @property - @pulumi.getter - def s3(self) -> Optional['outputs.CacheFromS3']: - """ - Upload build caches to AWS S3 or an S3-compatible services such as - MinIO. - """ - return pulumi.get(self, "s3") - - -@pulumi.output_type -class CacheFromAzureBlob(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "accountUrl": - suggest = "account_url" - elif key == "secretAccessKey": - suggest = "secret_access_key" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheFromAzureBlob. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheFromAzureBlob.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheFromAzureBlob.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - name: str, - account_url: Optional[str] = None, - secret_access_key: Optional[str] = None): - """ - :param str name: The name of the cache image. - :param str account_url: Base URL of the storage account. - :param str secret_access_key: Blob storage account key. - """ - pulumi.set(__self__, "name", name) - if account_url is not None: - pulumi.set(__self__, "account_url", account_url) - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - - @property - @pulumi.getter - def name(self) -> str: - """ - The name of the cache image. - """ - return pulumi.get(self, "name") - - @property - @pulumi.getter(name="accountUrl") - def account_url(self) -> Optional[str]: - """ - Base URL of the storage account. - """ - return pulumi.get(self, "account_url") - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[str]: - """ - Blob storage account key. - """ - return pulumi.get(self, "secret_access_key") - - -@pulumi.output_type -class CacheFromGitHubActions(dict): - def __init__(__self__, *, - scope: Optional[str] = None, - token: Optional[str] = None, - url: Optional[str] = None): - """ - :param str scope: The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - :param str token: The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - :param str url: The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - if scope is None: - scope = (_utilities.get_env('buildkit') or '') - if scope is not None: - pulumi.set(__self__, "scope", scope) - if token is None: - token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '') - if token is not None: - pulumi.set(__self__, "token", token) - if url is None: - url = (_utilities.get_env('ACTIONS_CACHE_URL') or '') - if url is not None: - pulumi.set(__self__, "url", url) - - @property - @pulumi.getter - def scope(self) -> Optional[str]: - """ - The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - """ - return pulumi.get(self, "scope") - - @property - @pulumi.getter - def token(self) -> Optional[str]: - """ - The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "token") - - @property - @pulumi.getter - def url(self) -> Optional[str]: - """ - The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "url") - - -@pulumi.output_type -class CacheFromLocal(dict): - def __init__(__self__, *, - src: str, - digest: Optional[str] = None): - """ - :param str src: Path of the local directory where cache gets imported from. - :param str digest: Digest of manifest to import. - """ - pulumi.set(__self__, "src", src) - if digest is not None: - pulumi.set(__self__, "digest", digest) - - @property - @pulumi.getter - def src(self) -> str: - """ - Path of the local directory where cache gets imported from. - """ - return pulumi.get(self, "src") - - @property - @pulumi.getter - def digest(self) -> Optional[str]: - """ - Digest of manifest to import. - """ - return pulumi.get(self, "digest") - - -@pulumi.output_type -class CacheFromRegistry(dict): - def __init__(__self__, *, - ref: str): - """ - :param str ref: Fully qualified name of the cache image to import. - """ - pulumi.set(__self__, "ref", ref) - - @property - @pulumi.getter - def ref(self) -> str: - """ - Fully qualified name of the cache image to import. - """ - return pulumi.get(self, "ref") - - -@pulumi.output_type -class CacheFromS3(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "accessKeyId": - suggest = "access_key_id" - elif key == "blobsPrefix": - suggest = "blobs_prefix" - elif key == "endpointUrl": - suggest = "endpoint_url" - elif key == "manifestsPrefix": - suggest = "manifests_prefix" - elif key == "secretAccessKey": - suggest = "secret_access_key" - elif key == "sessionToken": - suggest = "session_token" - elif key == "usePathStyle": - suggest = "use_path_style" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheFromS3. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheFromS3.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheFromS3.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - bucket: str, - region: Optional[str] = None, - access_key_id: Optional[str] = None, - blobs_prefix: Optional[str] = None, - endpoint_url: Optional[str] = None, - manifests_prefix: Optional[str] = None, - name: Optional[str] = None, - secret_access_key: Optional[str] = None, - session_token: Optional[str] = None, - use_path_style: Optional[bool] = None): - """ - :param str bucket: Name of the S3 bucket. - :param str region: The geographic location of the bucket. Defaults to `$AWS_REGION`. - :param str access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`. - :param str blobs_prefix: Prefix to prepend to blob filenames. - :param str endpoint_url: Endpoint of the S3 bucket. - :param str manifests_prefix: Prefix to prepend on manifest filenames. - :param str name: Name of the cache image. - :param str secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`. - :param str session_token: Defaults to `$AWS_SESSION_TOKEN`. - :param bool use_path_style: Uses `bucket` in the URL instead of hostname when `true`. - """ - pulumi.set(__self__, "bucket", bucket) - if region is None: - region = (_utilities.get_env('AWS_REGION') or '') - pulumi.set(__self__, "region", region) - if access_key_id is None: - access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '') - if access_key_id is not None: - pulumi.set(__self__, "access_key_id", access_key_id) - if blobs_prefix is not None: - pulumi.set(__self__, "blobs_prefix", blobs_prefix) - if endpoint_url is not None: - pulumi.set(__self__, "endpoint_url", endpoint_url) - if manifests_prefix is not None: - pulumi.set(__self__, "manifests_prefix", manifests_prefix) - if name is not None: - pulumi.set(__self__, "name", name) - if secret_access_key is None: - secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '') - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - if session_token is None: - session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '') - if session_token is not None: - pulumi.set(__self__, "session_token", session_token) - if use_path_style is not None: - pulumi.set(__self__, "use_path_style", use_path_style) - - @property - @pulumi.getter - def bucket(self) -> str: - """ - Name of the S3 bucket. - """ - return pulumi.get(self, "bucket") - - @property - @pulumi.getter - def region(self) -> str: - """ - The geographic location of the bucket. Defaults to `$AWS_REGION`. - """ - return pulumi.get(self, "region") - - @property - @pulumi.getter(name="accessKeyId") - def access_key_id(self) -> Optional[str]: - """ - Defaults to `$AWS_ACCESS_KEY_ID`. - """ - return pulumi.get(self, "access_key_id") - - @property - @pulumi.getter(name="blobsPrefix") - def blobs_prefix(self) -> Optional[str]: - """ - Prefix to prepend to blob filenames. - """ - return pulumi.get(self, "blobs_prefix") - - @property - @pulumi.getter(name="endpointUrl") - def endpoint_url(self) -> Optional[str]: - """ - Endpoint of the S3 bucket. - """ - return pulumi.get(self, "endpoint_url") - - @property - @pulumi.getter(name="manifestsPrefix") - def manifests_prefix(self) -> Optional[str]: - """ - Prefix to prepend on manifest filenames. - """ - return pulumi.get(self, "manifests_prefix") - - @property - @pulumi.getter - def name(self) -> Optional[str]: - """ - Name of the cache image. - """ - return pulumi.get(self, "name") - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[str]: - """ - Defaults to `$AWS_SECRET_ACCESS_KEY`. - """ - return pulumi.get(self, "secret_access_key") - - @property - @pulumi.getter(name="sessionToken") - def session_token(self) -> Optional[str]: - """ - Defaults to `$AWS_SESSION_TOKEN`. - """ - return pulumi.get(self, "session_token") - - @property - @pulumi.getter(name="usePathStyle") - def use_path_style(self) -> Optional[bool]: - """ - Uses `bucket` in the URL instead of hostname when `true`. - """ - return pulumi.get(self, "use_path_style") - - -@pulumi.output_type -class CacheTo(dict): - def __init__(__self__, *, - azblob: Optional['outputs.CacheToAzureBlob'] = None, - disabled: Optional[bool] = None, - gha: Optional['outputs.CacheToGitHubActions'] = None, - inline: Optional['outputs.CacheToInline'] = None, - local: Optional['outputs.CacheToLocal'] = None, - raw: Optional[str] = None, - registry: Optional['outputs.CacheToRegistry'] = None, - s3: Optional['outputs.CacheToS3'] = None): - """ - :param 'CacheToAzureBlob' azblob: Push cache to Azure's blob storage service. - :param bool disabled: When `true` this entry will be excluded. Defaults to `false`. - :param 'CacheToGitHubActions' gha: Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - :param 'CacheToInline' inline: The inline cache storage backend is the simplest implementation to get - started with, but it does not handle multi-stage builds. Consider the - `registry` cache backend instead. - :param 'CacheToLocal' local: A simple backend which caches imagines on your local filesystem. - :param str raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`) - :param 'CacheToRegistry' registry: Push caches to remote registries. Incompatible with the `docker` build - driver. - :param 'CacheToS3' s3: Push cache to AWS S3 or S3-compatible services such as MinIO. - """ - if azblob is not None: - pulumi.set(__self__, "azblob", azblob) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if gha is not None: - pulumi.set(__self__, "gha", gha) - if inline is not None: - pulumi.set(__self__, "inline", inline) - if local is not None: - pulumi.set(__self__, "local", local) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if s3 is not None: - pulumi.set(__self__, "s3", s3) - - @property - @pulumi.getter - def azblob(self) -> Optional['outputs.CacheToAzureBlob']: - """ - Push cache to Azure's blob storage service. - """ - return pulumi.get(self, "azblob") - - @property - @pulumi.getter - def disabled(self) -> Optional[bool]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @property - @pulumi.getter - def gha(self) -> Optional['outputs.CacheToGitHubActions']: - """ - Recommended for use with GitHub Actions workflows. - - An action like `crazy-max/ghaction-github-runtime` is recommended to - expose appropriate credentials to your GitHub workflow. - """ - return pulumi.get(self, "gha") - - @property - @pulumi.getter - def inline(self) -> Optional['outputs.CacheToInline']: - """ - The inline cache storage backend is the simplest implementation to get - started with, but it does not handle multi-stage builds. Consider the - `registry` cache backend instead. - """ - return pulumi.get(self, "inline") - - @property - @pulumi.getter - def local(self) -> Optional['outputs.CacheToLocal']: - """ - A simple backend which caches imagines on your local filesystem. - """ - return pulumi.get(self, "local") - - @property - @pulumi.getter - def raw(self) -> Optional[str]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=inline`) - """ - return pulumi.get(self, "raw") - - @property - @pulumi.getter - def registry(self) -> Optional['outputs.CacheToRegistry']: - """ - Push caches to remote registries. Incompatible with the `docker` build - driver. - """ - return pulumi.get(self, "registry") - - @property - @pulumi.getter - def s3(self) -> Optional['outputs.CacheToS3']: - """ - Push cache to AWS S3 or S3-compatible services such as MinIO. - """ - return pulumi.get(self, "s3") - - -@pulumi.output_type -class CacheToAzureBlob(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "accountUrl": - suggest = "account_url" - elif key == "ignoreError": - suggest = "ignore_error" - elif key == "secretAccessKey": - suggest = "secret_access_key" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheToAzureBlob. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheToAzureBlob.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheToAzureBlob.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - name: str, - account_url: Optional[str] = None, - ignore_error: Optional[bool] = None, - mode: Optional['CacheMode'] = None, - secret_access_key: Optional[str] = None): - """ - :param str name: The name of the cache image. - :param str account_url: Base URL of the storage account. - :param bool ignore_error: Ignore errors caused by failed cache exports. - :param 'CacheMode' mode: The cache mode to use. Defaults to `min`. - :param str secret_access_key: Blob storage account key. - """ - pulumi.set(__self__, "name", name) - if account_url is not None: - pulumi.set(__self__, "account_url", account_url) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - - @property - @pulumi.getter - def name(self) -> str: - """ - The name of the cache image. - """ - return pulumi.get(self, "name") - - @property - @pulumi.getter(name="accountUrl") - def account_url(self) -> Optional[str]: - """ - Base URL of the storage account. - """ - return pulumi.get(self, "account_url") - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[bool]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @property - @pulumi.getter - def mode(self) -> Optional['CacheMode']: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[str]: - """ - Blob storage account key. - """ - return pulumi.get(self, "secret_access_key") - - -@pulumi.output_type -class CacheToGitHubActions(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "ignoreError": - suggest = "ignore_error" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheToGitHubActions. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheToGitHubActions.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheToGitHubActions.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - ignore_error: Optional[bool] = None, - mode: Optional['CacheMode'] = None, - scope: Optional[str] = None, - token: Optional[str] = None, - url: Optional[str] = None): - """ - :param bool ignore_error: Ignore errors caused by failed cache exports. - :param 'CacheMode' mode: The cache mode to use. Defaults to `min`. - :param str scope: The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - :param str token: The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - :param str url: The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if scope is None: - scope = (_utilities.get_env('buildkit') or '') - if scope is not None: - pulumi.set(__self__, "scope", scope) - if token is None: - token = (_utilities.get_env('ACTIONS_RUNTIME_TOKEN') or '') - if token is not None: - pulumi.set(__self__, "token", token) - if url is None: - url = (_utilities.get_env('ACTIONS_CACHE_URL') or '') - if url is not None: - pulumi.set(__self__, "url", url) - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[bool]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @property - @pulumi.getter - def mode(self) -> Optional['CacheMode']: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @property - @pulumi.getter - def scope(self) -> Optional[str]: - """ - The scope to use for cache keys. Defaults to `buildkit`. - - This should be set if building and caching multiple images in one - workflow, otherwise caches will overwrite each other. - """ - return pulumi.get(self, "scope") - - @property - @pulumi.getter - def token(self) -> Optional[str]: - """ - The GitHub Actions token to use. This is not a personal access tokens - and is typically generated automatically as part of each job. - - Defaults to `$ACTIONS_RUNTIME_TOKEN`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "token") - - @property - @pulumi.getter - def url(self) -> Optional[str]: - """ - The cache server URL to use for artifacts. - - Defaults to `$ACTIONS_CACHE_URL`, although a separate action like - `crazy-max/ghaction-github-runtime` is recommended to expose this - environment variable to your jobs. - """ - return pulumi.get(self, "url") - - -@pulumi.output_type -class CacheToInline(dict): - """ - Include an inline cache with the exported image. - """ - def __init__(__self__): - """ - Include an inline cache with the exported image. - """ - pass - - -@pulumi.output_type -class CacheToLocal(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "ignoreError": - suggest = "ignore_error" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheToLocal. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheToLocal.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheToLocal.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - dest: str, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - force_compression: Optional[bool] = None, - ignore_error: Optional[bool] = None, - mode: Optional['CacheMode'] = None): - """ - :param str dest: Path of the local directory to export the cache. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param bool force_compression: Forcefully apply compression. - :param bool ignore_error: Ignore errors caused by failed cache exports. - :param 'CacheMode' mode: The cache mode to use. Defaults to `min`. - """ - pulumi.set(__self__, "dest", dest) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - - @property - @pulumi.getter - def dest(self) -> str: - """ - Path of the local directory to export the cache. - """ - return pulumi.get(self, "dest") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[bool]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @property - @pulumi.getter - def mode(self) -> Optional['CacheMode']: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - -@pulumi.output_type -class CacheToRegistry(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "ignoreError": - suggest = "ignore_error" - elif key == "imageManifest": - suggest = "image_manifest" - elif key == "ociMediaTypes": - suggest = "oci_media_types" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheToRegistry. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheToRegistry.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheToRegistry.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - ref: str, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - force_compression: Optional[bool] = None, - ignore_error: Optional[bool] = None, - image_manifest: Optional[bool] = None, - mode: Optional['CacheMode'] = None, - oci_media_types: Optional[bool] = None): - """ - :param str ref: Fully qualified name of the cache image to import. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param bool force_compression: Forcefully apply compression. - :param bool ignore_error: Ignore errors caused by failed cache exports. - :param bool image_manifest: Export cache manifest as an OCI-compatible image manifest instead of a - manifest list. Requires `ociMediaTypes` to also be `true`. - - Some registries like AWS ECR will not work with caching if this is - `false`. - - Defaults to `false` to match Docker's default behavior. - :param 'CacheMode' mode: The cache mode to use. Defaults to `min`. - :param bool oci_media_types: Whether to use OCI media types in exported manifests. Defaults to - `true`. - """ - pulumi.set(__self__, "ref", ref) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if image_manifest is None: - image_manifest = False - if image_manifest is not None: - pulumi.set(__self__, "image_manifest", image_manifest) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if oci_media_types is None: - oci_media_types = True - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - - @property - @pulumi.getter - def ref(self) -> str: - """ - Fully qualified name of the cache image to import. - """ - return pulumi.get(self, "ref") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[bool]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @property - @pulumi.getter(name="imageManifest") - def image_manifest(self) -> Optional[bool]: - """ - Export cache manifest as an OCI-compatible image manifest instead of a - manifest list. Requires `ociMediaTypes` to also be `true`. - - Some registries like AWS ECR will not work with caching if this is - `false`. - - Defaults to `false` to match Docker's default behavior. - """ - return pulumi.get(self, "image_manifest") - - @property - @pulumi.getter - def mode(self) -> Optional['CacheMode']: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[bool]: - """ - Whether to use OCI media types in exported manifests. Defaults to - `true`. - """ - return pulumi.get(self, "oci_media_types") - - -@pulumi.output_type -class CacheToS3(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "accessKeyId": - suggest = "access_key_id" - elif key == "blobsPrefix": - suggest = "blobs_prefix" - elif key == "endpointUrl": - suggest = "endpoint_url" - elif key == "ignoreError": - suggest = "ignore_error" - elif key == "manifestsPrefix": - suggest = "manifests_prefix" - elif key == "secretAccessKey": - suggest = "secret_access_key" - elif key == "sessionToken": - suggest = "session_token" - elif key == "usePathStyle": - suggest = "use_path_style" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in CacheToS3. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - CacheToS3.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - CacheToS3.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - bucket: str, - region: Optional[str] = None, - access_key_id: Optional[str] = None, - blobs_prefix: Optional[str] = None, - endpoint_url: Optional[str] = None, - ignore_error: Optional[bool] = None, - manifests_prefix: Optional[str] = None, - mode: Optional['CacheMode'] = None, - name: Optional[str] = None, - secret_access_key: Optional[str] = None, - session_token: Optional[str] = None, - use_path_style: Optional[bool] = None): - """ - :param str bucket: Name of the S3 bucket. - :param str region: The geographic location of the bucket. Defaults to `$AWS_REGION`. - :param str access_key_id: Defaults to `$AWS_ACCESS_KEY_ID`. - :param str blobs_prefix: Prefix to prepend to blob filenames. - :param str endpoint_url: Endpoint of the S3 bucket. - :param bool ignore_error: Ignore errors caused by failed cache exports. - :param str manifests_prefix: Prefix to prepend on manifest filenames. - :param 'CacheMode' mode: The cache mode to use. Defaults to `min`. - :param str name: Name of the cache image. - :param str secret_access_key: Defaults to `$AWS_SECRET_ACCESS_KEY`. - :param str session_token: Defaults to `$AWS_SESSION_TOKEN`. - :param bool use_path_style: Uses `bucket` in the URL instead of hostname when `true`. - """ - pulumi.set(__self__, "bucket", bucket) - if region is None: - region = (_utilities.get_env('AWS_REGION') or '') - pulumi.set(__self__, "region", region) - if access_key_id is None: - access_key_id = (_utilities.get_env('AWS_ACCESS_KEY_ID') or '') - if access_key_id is not None: - pulumi.set(__self__, "access_key_id", access_key_id) - if blobs_prefix is not None: - pulumi.set(__self__, "blobs_prefix", blobs_prefix) - if endpoint_url is not None: - pulumi.set(__self__, "endpoint_url", endpoint_url) - if ignore_error is None: - ignore_error = False - if ignore_error is not None: - pulumi.set(__self__, "ignore_error", ignore_error) - if manifests_prefix is not None: - pulumi.set(__self__, "manifests_prefix", manifests_prefix) - if mode is None: - mode = 'min' - if mode is not None: - pulumi.set(__self__, "mode", mode) - if name is not None: - pulumi.set(__self__, "name", name) - if secret_access_key is None: - secret_access_key = (_utilities.get_env('AWS_SECRET_ACCESS_KEY') or '') - if secret_access_key is not None: - pulumi.set(__self__, "secret_access_key", secret_access_key) - if session_token is None: - session_token = (_utilities.get_env('AWS_SESSION_TOKEN') or '') - if session_token is not None: - pulumi.set(__self__, "session_token", session_token) - if use_path_style is not None: - pulumi.set(__self__, "use_path_style", use_path_style) - - @property - @pulumi.getter - def bucket(self) -> str: - """ - Name of the S3 bucket. - """ - return pulumi.get(self, "bucket") - - @property - @pulumi.getter - def region(self) -> str: - """ - The geographic location of the bucket. Defaults to `$AWS_REGION`. - """ - return pulumi.get(self, "region") - - @property - @pulumi.getter(name="accessKeyId") - def access_key_id(self) -> Optional[str]: - """ - Defaults to `$AWS_ACCESS_KEY_ID`. - """ - return pulumi.get(self, "access_key_id") - - @property - @pulumi.getter(name="blobsPrefix") - def blobs_prefix(self) -> Optional[str]: - """ - Prefix to prepend to blob filenames. - """ - return pulumi.get(self, "blobs_prefix") - - @property - @pulumi.getter(name="endpointUrl") - def endpoint_url(self) -> Optional[str]: - """ - Endpoint of the S3 bucket. - """ - return pulumi.get(self, "endpoint_url") - - @property - @pulumi.getter(name="ignoreError") - def ignore_error(self) -> Optional[bool]: - """ - Ignore errors caused by failed cache exports. - """ - return pulumi.get(self, "ignore_error") - - @property - @pulumi.getter(name="manifestsPrefix") - def manifests_prefix(self) -> Optional[str]: - """ - Prefix to prepend on manifest filenames. - """ - return pulumi.get(self, "manifests_prefix") - - @property - @pulumi.getter - def mode(self) -> Optional['CacheMode']: - """ - The cache mode to use. Defaults to `min`. - """ - return pulumi.get(self, "mode") - - @property - @pulumi.getter - def name(self) -> Optional[str]: - """ - Name of the cache image. - """ - return pulumi.get(self, "name") - - @property - @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[str]: - """ - Defaults to `$AWS_SECRET_ACCESS_KEY`. - """ - return pulumi.get(self, "secret_access_key") - - @property - @pulumi.getter(name="sessionToken") - def session_token(self) -> Optional[str]: - """ - Defaults to `$AWS_SESSION_TOKEN`. - """ - return pulumi.get(self, "session_token") - - @property - @pulumi.getter(name="usePathStyle") - def use_path_style(self) -> Optional[bool]: - """ - Uses `bucket` in the URL instead of hostname when `true`. - """ - return pulumi.get(self, "use_path_style") - - -@pulumi.output_type -class Context(dict): - def __init__(__self__, *, - location: str): - """ - :param str location: Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - pulumi.set(__self__, "location", location) - - @property - @pulumi.getter - def location(self) -> str: - """ - Resources to use for build context. - - The location can be: - * A relative or absolute path to a local directory (`.`, `./app`, - `/app`, etc.). - * A remote URL of a Git repository, tarball, or plain text file - (`https://github.com/user/myrepo.git`, `http://server/context.tar.gz`, - etc.). - """ - return pulumi.get(self, "location") - - -@pulumi.output_type -class Dockerfile(dict): - def __init__(__self__, *, - inline: Optional[str] = None, - location: Optional[str] = None): - """ - :param str inline: Raw Dockerfile contents. - - Conflicts with `location`. - - Equivalent to invoking Docker with `-f -`. - :param str location: Location of the Dockerfile to use. - - Can be a relative or absolute path to a local file, or a remote URL. - - Defaults to `${context.location}/Dockerfile` if context is on-disk. - - Conflicts with `inline`. - """ - if inline is not None: - pulumi.set(__self__, "inline", inline) - if location is not None: - pulumi.set(__self__, "location", location) - - @property - @pulumi.getter - def inline(self) -> Optional[str]: - """ - Raw Dockerfile contents. - - Conflicts with `location`. - - Equivalent to invoking Docker with `-f -`. - """ - return pulumi.get(self, "inline") - - @property - @pulumi.getter - def location(self) -> Optional[str]: - """ - Location of the Dockerfile to use. - - Can be a relative or absolute path to a local file, or a remote URL. - - Defaults to `${context.location}/Dockerfile` if context is on-disk. - - Conflicts with `inline`. - """ - return pulumi.get(self, "location") - - -@pulumi.output_type -class Export(dict): - def __init__(__self__, *, - cacheonly: Optional['outputs.ExportCacheOnly'] = None, - disabled: Optional[bool] = None, - docker: Optional['outputs.ExportDocker'] = None, - image: Optional['outputs.ExportImage'] = None, - local: Optional['outputs.ExportLocal'] = None, - oci: Optional['outputs.ExportOCI'] = None, - raw: Optional[str] = None, - registry: Optional['outputs.ExportRegistry'] = None, - tar: Optional['outputs.ExportTar'] = None): - """ - :param 'ExportCacheOnly' cacheonly: A no-op export. Helpful for silencing the 'no exports' warning if you - just want to populate caches. - :param bool disabled: When `true` this entry will be excluded. Defaults to `false`. - :param 'ExportDocker' docker: Export as a Docker image layout. - :param 'ExportImage' image: Outputs the build result into a container image format. - :param 'ExportLocal' local: Export to a local directory as files and directories. - :param 'ExportOCI' oci: Identical to the Docker exporter but uses OCI media types by default. - :param str raw: A raw string as you would provide it to the Docker CLI (e.g., - `type=docker`) - :param 'ExportRegistry' registry: Identical to the Image exporter, but pushes by default. - :param 'ExportTar' tar: Export to a local directory as a tarball. - """ - if cacheonly is not None: - pulumi.set(__self__, "cacheonly", cacheonly) - if disabled is not None: - pulumi.set(__self__, "disabled", disabled) - if docker is not None: - pulumi.set(__self__, "docker", docker) - if image is not None: - pulumi.set(__self__, "image", image) - if local is not None: - pulumi.set(__self__, "local", local) - if oci is not None: - pulumi.set(__self__, "oci", oci) - if raw is not None: - pulumi.set(__self__, "raw", raw) - if registry is not None: - pulumi.set(__self__, "registry", registry) - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def cacheonly(self) -> Optional['outputs.ExportCacheOnly']: - """ - A no-op export. Helpful for silencing the 'no exports' warning if you - just want to populate caches. - """ - return pulumi.get(self, "cacheonly") - - @property - @pulumi.getter - def disabled(self) -> Optional[bool]: - """ - When `true` this entry will be excluded. Defaults to `false`. - """ - return pulumi.get(self, "disabled") - - @property - @pulumi.getter - def docker(self) -> Optional['outputs.ExportDocker']: - """ - Export as a Docker image layout. - """ - return pulumi.get(self, "docker") - - @property - @pulumi.getter - def image(self) -> Optional['outputs.ExportImage']: - """ - Outputs the build result into a container image format. - """ - return pulumi.get(self, "image") - - @property - @pulumi.getter - def local(self) -> Optional['outputs.ExportLocal']: - """ - Export to a local directory as files and directories. - """ - return pulumi.get(self, "local") - - @property - @pulumi.getter - def oci(self) -> Optional['outputs.ExportOCI']: - """ - Identical to the Docker exporter but uses OCI media types by default. - """ - return pulumi.get(self, "oci") - - @property - @pulumi.getter - def raw(self) -> Optional[str]: - """ - A raw string as you would provide it to the Docker CLI (e.g., - `type=docker`) - """ - return pulumi.get(self, "raw") - - @property - @pulumi.getter - def registry(self) -> Optional['outputs.ExportRegistry']: - """ - Identical to the Image exporter, but pushes by default. - """ - return pulumi.get(self, "registry") - - @property - @pulumi.getter - def tar(self) -> Optional['outputs.ExportTar']: - """ - Export to a local directory as a tarball. - """ - return pulumi.get(self, "tar") - - -@pulumi.output_type -class ExportCacheOnly(dict): - def __init__(__self__): - pass - - -@pulumi.output_type -class ExportDocker(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "ociMediaTypes": - suggest = "oci_media_types" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in ExportDocker. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - ExportDocker.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - ExportDocker.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - annotations: Optional[Mapping[str, str]] = None, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - dest: Optional[str] = None, - force_compression: Optional[bool] = None, - names: Optional[Sequence[str]] = None, - oci_media_types: Optional[bool] = None, - tar: Optional[bool] = None): - """ - :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param str dest: The local export path. - :param bool force_compression: Forcefully apply compression. - :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified. - :param bool oci_media_types: Use OCI media types in exporter manifests. - :param bool tar: Bundle the output into a tarball layout. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dest is not None: - pulumi.set(__self__, "dest", dest) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if tar is None: - tar = True - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def annotations(self) -> Optional[Mapping[str, str]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter - def dest(self) -> Optional[str]: - """ - The local export path. - """ - return pulumi.get(self, "dest") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter - def names(self) -> Optional[Sequence[str]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[bool]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @property - @pulumi.getter - def tar(self) -> Optional[bool]: - """ - Bundle the output into a tarball layout. - """ - return pulumi.get(self, "tar") - - -@pulumi.output_type -class ExportImage(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "danglingNamePrefix": - suggest = "dangling_name_prefix" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "nameCanonical": - suggest = "name_canonical" - elif key == "ociMediaTypes": - suggest = "oci_media_types" - elif key == "pushByDigest": - suggest = "push_by_digest" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in ExportImage. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - ExportImage.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - ExportImage.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - annotations: Optional[Mapping[str, str]] = None, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - dangling_name_prefix: Optional[str] = None, - force_compression: Optional[bool] = None, - insecure: Optional[bool] = None, - name_canonical: Optional[bool] = None, - names: Optional[Sequence[str]] = None, - oci_media_types: Optional[bool] = None, - push: Optional[bool] = None, - push_by_digest: Optional[bool] = None, - store: Optional[bool] = None, - unpack: Optional[bool] = None): - """ - :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param str dangling_name_prefix: Name image with `prefix@`, used for anonymous images. - :param bool force_compression: Forcefully apply compression. - :param bool insecure: Allow pushing to an insecure registry. - :param bool name_canonical: Add additional canonical name (`name@`). - :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified. - :param bool oci_media_types: Use OCI media types in exporter manifests. - :param bool push: Push after creating the image. Defaults to `false`. - :param bool push_by_digest: Push image without name. - :param bool store: Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - :param bool unpack: Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dangling_name_prefix is not None: - pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if insecure is not None: - pulumi.set(__self__, "insecure", insecure) - if name_canonical is not None: - pulumi.set(__self__, "name_canonical", name_canonical) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if push is not None: - pulumi.set(__self__, "push", push) - if push_by_digest is not None: - pulumi.set(__self__, "push_by_digest", push_by_digest) - if store is None: - store = True - if store is not None: - pulumi.set(__self__, "store", store) - if unpack is not None: - pulumi.set(__self__, "unpack", unpack) - - @property - @pulumi.getter - def annotations(self) -> Optional[Mapping[str, str]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter(name="danglingNamePrefix") - def dangling_name_prefix(self) -> Optional[str]: - """ - Name image with `prefix@`, used for anonymous images. - """ - return pulumi.get(self, "dangling_name_prefix") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter - def insecure(self) -> Optional[bool]: - """ - Allow pushing to an insecure registry. - """ - return pulumi.get(self, "insecure") - - @property - @pulumi.getter(name="nameCanonical") - def name_canonical(self) -> Optional[bool]: - """ - Add additional canonical name (`name@`). - """ - return pulumi.get(self, "name_canonical") - - @property - @pulumi.getter - def names(self) -> Optional[Sequence[str]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[bool]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @property - @pulumi.getter - def push(self) -> Optional[bool]: - """ - Push after creating the image. Defaults to `false`. - """ - return pulumi.get(self, "push") - - @property - @pulumi.getter(name="pushByDigest") - def push_by_digest(self) -> Optional[bool]: - """ - Push image without name. - """ - return pulumi.get(self, "push_by_digest") - - @property - @pulumi.getter - def store(self) -> Optional[bool]: - """ - Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - """ - return pulumi.get(self, "store") - - @property - @pulumi.getter - def unpack(self) -> Optional[bool]: - """ - Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - return pulumi.get(self, "unpack") - - -@pulumi.output_type -class ExportLocal(dict): - def __init__(__self__, *, - dest: str): - """ - :param str dest: Output path. - """ - pulumi.set(__self__, "dest", dest) - - @property - @pulumi.getter - def dest(self) -> str: - """ - Output path. - """ - return pulumi.get(self, "dest") - - -@pulumi.output_type -class ExportOCI(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "ociMediaTypes": - suggest = "oci_media_types" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in ExportOCI. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - ExportOCI.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - ExportOCI.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - annotations: Optional[Mapping[str, str]] = None, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - dest: Optional[str] = None, - force_compression: Optional[bool] = None, - names: Optional[Sequence[str]] = None, - oci_media_types: Optional[bool] = None, - tar: Optional[bool] = None): - """ - :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param str dest: The local export path. - :param bool force_compression: Forcefully apply compression. - :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified. - :param bool oci_media_types: Use OCI media types in exporter manifests. - :param bool tar: Bundle the output into a tarball layout. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dest is not None: - pulumi.set(__self__, "dest", dest) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = True - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if tar is None: - tar = True - if tar is not None: - pulumi.set(__self__, "tar", tar) - - @property - @pulumi.getter - def annotations(self) -> Optional[Mapping[str, str]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter - def dest(self) -> Optional[str]: - """ - The local export path. - """ - return pulumi.get(self, "dest") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter - def names(self) -> Optional[Sequence[str]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[bool]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @property - @pulumi.getter - def tar(self) -> Optional[bool]: - """ - Bundle the output into a tarball layout. - """ - return pulumi.get(self, "tar") - - -@pulumi.output_type -class ExportRegistry(dict): - @staticmethod - def __key_warning(key: str): - suggest = None - if key == "compressionLevel": - suggest = "compression_level" - elif key == "danglingNamePrefix": - suggest = "dangling_name_prefix" - elif key == "forceCompression": - suggest = "force_compression" - elif key == "nameCanonical": - suggest = "name_canonical" - elif key == "ociMediaTypes": - suggest = "oci_media_types" - elif key == "pushByDigest": - suggest = "push_by_digest" - - if suggest: - pulumi.log.warn(f"Key '{key}' not found in ExportRegistry. Access the value via the '{suggest}' property getter instead.") - - def __getitem__(self, key: str) -> Any: - ExportRegistry.__key_warning(key) - return super().__getitem__(key) - - def get(self, key: str, default = None) -> Any: - ExportRegistry.__key_warning(key) - return super().get(key, default) - - def __init__(__self__, *, - annotations: Optional[Mapping[str, str]] = None, - compression: Optional['CompressionType'] = None, - compression_level: Optional[int] = None, - dangling_name_prefix: Optional[str] = None, - force_compression: Optional[bool] = None, - insecure: Optional[bool] = None, - name_canonical: Optional[bool] = None, - names: Optional[Sequence[str]] = None, - oci_media_types: Optional[bool] = None, - push: Optional[bool] = None, - push_by_digest: Optional[bool] = None, - store: Optional[bool] = None, - unpack: Optional[bool] = None): - """ - :param Mapping[str, str] annotations: Attach an arbitrary key/value annotation to the image. - :param 'CompressionType' compression: The compression type to use. - :param int compression_level: Compression level from 0 to 22. - :param str dangling_name_prefix: Name image with `prefix@`, used for anonymous images. - :param bool force_compression: Forcefully apply compression. - :param bool insecure: Allow pushing to an insecure registry. - :param bool name_canonical: Add additional canonical name (`name@`). - :param Sequence[str] names: Specify images names to export. This is overridden if tags are already specified. - :param bool oci_media_types: Use OCI media types in exporter manifests. - :param bool push: Push after creating the image. Defaults to `true`. - :param bool push_by_digest: Push image without name. - :param bool store: Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - :param bool unpack: Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - if annotations is not None: - pulumi.set(__self__, "annotations", annotations) - if compression is None: - compression = 'gzip' - if compression is not None: - pulumi.set(__self__, "compression", compression) - if compression_level is None: - compression_level = 0 - if compression_level is not None: - pulumi.set(__self__, "compression_level", compression_level) - if dangling_name_prefix is not None: - pulumi.set(__self__, "dangling_name_prefix", dangling_name_prefix) - if force_compression is None: - force_compression = False - if force_compression is not None: - pulumi.set(__self__, "force_compression", force_compression) - if insecure is not None: - pulumi.set(__self__, "insecure", insecure) - if name_canonical is not None: - pulumi.set(__self__, "name_canonical", name_canonical) - if names is not None: - pulumi.set(__self__, "names", names) - if oci_media_types is None: - oci_media_types = False - if oci_media_types is not None: - pulumi.set(__self__, "oci_media_types", oci_media_types) - if push is None: - push = True - if push is not None: - pulumi.set(__self__, "push", push) - if push_by_digest is not None: - pulumi.set(__self__, "push_by_digest", push_by_digest) - if store is None: - store = True - if store is not None: - pulumi.set(__self__, "store", store) - if unpack is not None: - pulumi.set(__self__, "unpack", unpack) - - @property - @pulumi.getter - def annotations(self) -> Optional[Mapping[str, str]]: - """ - Attach an arbitrary key/value annotation to the image. - """ - return pulumi.get(self, "annotations") - - @property - @pulumi.getter - def compression(self) -> Optional['CompressionType']: - """ - The compression type to use. - """ - return pulumi.get(self, "compression") - - @property - @pulumi.getter(name="compressionLevel") - def compression_level(self) -> Optional[int]: - """ - Compression level from 0 to 22. - """ - return pulumi.get(self, "compression_level") - - @property - @pulumi.getter(name="danglingNamePrefix") - def dangling_name_prefix(self) -> Optional[str]: - """ - Name image with `prefix@`, used for anonymous images. - """ - return pulumi.get(self, "dangling_name_prefix") - - @property - @pulumi.getter(name="forceCompression") - def force_compression(self) -> Optional[bool]: - """ - Forcefully apply compression. - """ - return pulumi.get(self, "force_compression") - - @property - @pulumi.getter - def insecure(self) -> Optional[bool]: - """ - Allow pushing to an insecure registry. - """ - return pulumi.get(self, "insecure") - - @property - @pulumi.getter(name="nameCanonical") - def name_canonical(self) -> Optional[bool]: - """ - Add additional canonical name (`name@`). - """ - return pulumi.get(self, "name_canonical") - - @property - @pulumi.getter - def names(self) -> Optional[Sequence[str]]: - """ - Specify images names to export. This is overridden if tags are already specified. - """ - return pulumi.get(self, "names") - - @property - @pulumi.getter(name="ociMediaTypes") - def oci_media_types(self) -> Optional[bool]: - """ - Use OCI media types in exporter manifests. - """ - return pulumi.get(self, "oci_media_types") - - @property - @pulumi.getter - def push(self) -> Optional[bool]: - """ - Push after creating the image. Defaults to `true`. - """ - return pulumi.get(self, "push") - - @property - @pulumi.getter(name="pushByDigest") - def push_by_digest(self) -> Optional[bool]: - """ - Push image without name. - """ - return pulumi.get(self, "push_by_digest") - - @property - @pulumi.getter - def store(self) -> Optional[bool]: - """ - Store resulting images to the worker's image store and ensure all of - its blobs are in the content store. - - Defaults to `true`. - - Ignored if the worker doesn't have image store (when using OCI workers, - for example). - """ - return pulumi.get(self, "store") - - @property - @pulumi.getter - def unpack(self) -> Optional[bool]: - """ - Unpack image after creation (for use with containerd). Defaults to - `false`. - """ - return pulumi.get(self, "unpack") - - -@pulumi.output_type -class ExportTar(dict): - def __init__(__self__, *, - dest: str): - """ - :param str dest: Output path. - """ - pulumi.set(__self__, "dest", dest) - - @property - @pulumi.getter - def dest(self) -> str: - """ - Output path. - """ - return pulumi.get(self, "dest") - - -@pulumi.output_type -class Registry(dict): - def __init__(__self__, *, - address: str, - password: Optional[str] = None, - username: Optional[str] = None): - """ - :param str address: The registry's address (e.g. "docker.io"). - :param str password: Password or token for the registry. - :param str username: Username for the registry. - """ - pulumi.set(__self__, "address", address) - if password is not None: - pulumi.set(__self__, "password", password) - if username is not None: - pulumi.set(__self__, "username", username) - - @property - @pulumi.getter - def address(self) -> str: - """ - The registry's address (e.g. "docker.io"). - """ - return pulumi.get(self, "address") - - @property - @pulumi.getter - def password(self) -> Optional[str]: - """ - Password or token for the registry. - """ - return pulumi.get(self, "password") - - @property - @pulumi.getter - def username(self) -> Optional[str]: - """ - Username for the registry. - """ - return pulumi.get(self, "username") - - -@pulumi.output_type -class SSH(dict): - def __init__(__self__, *, - id: str, - paths: Optional[Sequence[str]] = None): - """ - :param str id: Useful for distinguishing different servers that are part of the same - build. - - A value of `default` is appropriate if only dealing with a single host. - :param Sequence[str] paths: SSH agent socket or private keys to expose to the build under the given - identifier. - - Defaults to `[$SSH_AUTH_SOCK]`. - - Note that your keys are **not** automatically added when using an - agent. Run `ssh-add -l` locally to confirm which public keys are - visible to the agent; these will be exposed to your build. - """ - pulumi.set(__self__, "id", id) - if paths is not None: - pulumi.set(__self__, "paths", paths) - - @property - @pulumi.getter - def id(self) -> str: - """ - Useful for distinguishing different servers that are part of the same - build. - - A value of `default` is appropriate if only dealing with a single host. - """ - return pulumi.get(self, "id") - - @property - @pulumi.getter - def paths(self) -> Optional[Sequence[str]]: - """ - SSH agent socket or private keys to expose to the build under the given - identifier. - - Defaults to `[$SSH_AUTH_SOCK]`. - - Note that your keys are **not** automatically added when using an - agent. Run `ssh-add -l` locally to confirm which public keys are - visible to the agent; these will be exposed to your build. - """ - return pulumi.get(self, "paths") - - diff --git a/sdk/python/pulumi_docker_build/provider.py b/sdk/python/pulumi_docker_build/provider.py deleted file mode 100644 index 9c62765..0000000 --- a/sdk/python/pulumi_docker_build/provider.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding=utf-8 -# *** WARNING: this file was generated by pulumi-language-python. *** -# *** Do not edit by hand unless you're certain you know what you are doing! *** - -import copy -import warnings -import pulumi -import pulumi.runtime -from typing import Any, Mapping, Optional, Sequence, Union, overload -from . import _utilities -from ._inputs import * - -__all__ = ['ProviderArgs', 'Provider'] - -@pulumi.input_type -class ProviderArgs: - def __init__(__self__, *, - host: Optional[pulumi.Input[str]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]] = None): - """ - The set of arguments for constructing a Provider resource. - :param pulumi.Input[str] host: The build daemon's address. - """ - if host is None: - host = (_utilities.get_env('DOCKER_HOST') or '') - if host is not None: - pulumi.set(__self__, "host", host) - if registries is not None: - pulumi.set(__self__, "registries", registries) - - @property - @pulumi.getter - def host(self) -> Optional[pulumi.Input[str]]: - """ - The build daemon's address. - """ - return pulumi.get(self, "host") - - @host.setter - def host(self, value: Optional[pulumi.Input[str]]): - pulumi.set(self, "host", value) - - @property - @pulumi.getter - def registries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]: - return pulumi.get(self, "registries") - - @registries.setter - def registries(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegistryArgs']]]]): - pulumi.set(self, "registries", value) - - -class Provider(pulumi.ProviderResource): - @overload - def __init__(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - host: Optional[pulumi.Input[str]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegistryArgs']]]]] = None, - __props__=None): - """ - Create a Docker-build resource with the given unique name, props, and options. - :param str resource_name: The name of the resource. - :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] host: The build daemon's address. - """ - ... - @overload - def __init__(__self__, - resource_name: str, - args: Optional[ProviderArgs] = None, - opts: Optional[pulumi.ResourceOptions] = None): - """ - Create a Docker-build resource with the given unique name, props, and options. - :param str resource_name: The name of the resource. - :param ProviderArgs args: The arguments to use to populate this resource's properties. - :param pulumi.ResourceOptions opts: Options for the resource. - """ - ... - def __init__(__self__, resource_name: str, *args, **kwargs): - resource_args, opts = _utilities.get_resource_args_opts(ProviderArgs, pulumi.ResourceOptions, *args, **kwargs) - if resource_args is not None: - __self__._internal_init(resource_name, opts, **resource_args.__dict__) - else: - __self__._internal_init(resource_name, *args, **kwargs) - - def _internal_init(__self__, - resource_name: str, - opts: Optional[pulumi.ResourceOptions] = None, - host: Optional[pulumi.Input[str]] = None, - registries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegistryArgs']]]]] = None, - __props__=None): - opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) - if not isinstance(opts, pulumi.ResourceOptions): - raise TypeError('Expected resource options to be a ResourceOptions instance') - if opts.id is None: - if __props__ is not None: - raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') - __props__ = ProviderArgs.__new__(ProviderArgs) - - if host is None: - host = (_utilities.get_env('DOCKER_HOST') or '') - __props__.__dict__["host"] = host - __props__.__dict__["registries"] = pulumi.Output.from_input(registries).apply(pulumi.runtime.to_json) if registries is not None else None - super(Provider, __self__).__init__( - 'docker-build', - resource_name, - __props__, - opts) - - @property - @pulumi.getter - def host(self) -> pulumi.Output[Optional[str]]: - """ - The build daemon's address. - """ - return pulumi.get(self, "host") - diff --git a/sdk/python/pulumi_docker_build/pulumi-plugin.json b/sdk/python/pulumi_docker_build/pulumi-plugin.json deleted file mode 100644 index 5ec7f95..0000000 --- a/sdk/python/pulumi_docker_build/pulumi-plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "resource": true, - "name": "docker-build", - "version": "0.1.0-alpha.0+dev" -} diff --git a/sdk/python/pulumi_docker_build/py.typed b/sdk/python/pulumi_docker_build/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml deleted file mode 100644 index c16a253..0000000 --- a/sdk/python/pyproject.toml +++ /dev/null @@ -1,22 +0,0 @@ -[project] - name = "pulumi_docker_build" - 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"] - keywords = ["docker", "buildkit", "buildx", "kind/native"] - readme = "README.md" - requires-python = ">=3.8" - version = "0.1.0a0+dev" - [project.license] - text = "Apache-2.0" - [project.urls] - Homepage = "https://pulumi.com" - Repository = "https://github.com/pulumi/pulumi-docker-build" - -[build-system] - requires = ["setuptools>=61.0"] - build-backend = "setuptools.build_meta" - -[tool] - [tool.setuptools] - [tool.setuptools.package-data] - pulumi_docker_build = ["py.typed", "pulumi-plugin.json"] diff --git a/tools/tools.go b/tools/tools.go deleted file mode 100644 index 2136786..0000000 --- a/tools/tools.go +++ /dev/null @@ -1,17 +0,0 @@ -//go:build tools -// +build tools - -// See https://play-with-go.dev/tools-as-dependencies_go119_en/ for an explanation of this file. -package tools - -import ( - _ "github.com/golangci/golangci-lint/cmd/golangci-lint" - _ "github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet" - _ "github.com/pulumi/pulumi-java/pkg/cmd/pulumi-language-java" - _ "github.com/pulumi/pulumi-yaml/cmd/pulumi-converter-yaml" - _ "github.com/pulumi/pulumi-yaml/cmd/pulumi-language-yaml" - _ "github.com/pulumi/pulumi/pkg/v3/cmd/pulumi" - _ "github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3" - _ "github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3" - _ "github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3" -)