Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5b79b4a1d | ||
|
|
08245eaffd | ||
|
|
4e730f689b | ||
|
|
5d7ff1eeca | ||
|
|
b1d2d5b5b3 | ||
|
|
3856050305 | ||
|
|
d9c3284f40 | ||
|
|
81a7aa4ec4 | ||
|
|
c9c5986598 | ||
|
|
75a73687db | ||
|
|
f2b29d43ec | ||
|
|
81cfc63d5a | ||
|
|
7dd7fc6cbf | ||
|
|
fe794ee018 | ||
|
|
119bdcf8db | ||
|
|
3a6f828c8c | ||
|
|
b61b8df9f9 | ||
|
|
fddf8fd81b | ||
|
|
213bf56765 | ||
|
|
5379812b59 |
34
.github/actions/setup-tools/action.yml
vendored
Normal file
34
.github/actions/setup-tools/action.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Setup tools
|
||||
description: Installs all tools necessary for building and testing the project.
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Collect workflow stats
|
||||
uses: catchpoint/workflow-telemetry-action@v2
|
||||
with:
|
||||
comment_on_pr: false
|
||||
env:
|
||||
GITHUB_TOKEN: ""
|
||||
|
||||
- name: Setup mise
|
||||
uses: jdx/mise-action@v2
|
||||
|
||||
- name: Go cache paths
|
||||
id: go-cache-paths
|
||||
shell: sh
|
||||
run: |
|
||||
echo "go-build=$(go env GOCACHE)" >> $GITHUB_OUTPUT
|
||||
echo "go-mod=$(go env GOMODCACHE)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Go build cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ steps.go-cache-paths.outputs.go-build }}
|
||||
key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }}
|
||||
|
||||
- name: Go mod cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ steps.go-cache-paths.outputs.go-mod }}
|
||||
key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }}
|
||||
599
.github/workflows/run-acceptance-tests.yml
vendored
599
.github/workflows/run-acceptance-tests.yml
vendored
@@ -4,10 +4,10 @@ name: run-acceptance-tests
|
||||
on:
|
||||
repository_dispatch:
|
||||
types:
|
||||
- run-acceptance-tests-command
|
||||
- run-acceptance-tests-command
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- CHANGELOG.md
|
||||
- CHANGELOG.md
|
||||
workflow_dispatch: {}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }}
|
||||
@@ -27,13 +27,6 @@ env:
|
||||
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
|
||||
@@ -56,383 +49,251 @@ jobs:
|
||||
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 }}"
|
||||
- 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:
|
||||
if: github.event_name == 'repository_dispatch' ||
|
||||
github.event.pull_request.head.repo.full_name == github.repository
|
||||
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<<EOF' >> $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
|
||||
actions: write # For telemetry.
|
||||
pull-requests: write # For schema comment.
|
||||
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
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
lfs: true
|
||||
ref: ${{ env.PR_COMMIT_SHA }}
|
||||
- name: Setup tools
|
||||
uses: ./.github/actions/setup-tools
|
||||
- id: version
|
||||
name: Set Provider Version
|
||||
uses: pulumi/provider-version-action@v1
|
||||
with:
|
||||
set-env: PROVIDER_VERSION
|
||||
- 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<<EOF' >> $GITHUB_ENV
|
||||
|
||||
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 }}
|
||||
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 }}
|
||||
|
||||
- name: Generate & Build SDK
|
||||
run: mise run sdk
|
||||
- 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.tar.gz -C sdk .
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: sdk.tar.gz
|
||||
path: ${{ github.workspace}}/sdk.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: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
actions: write # For telemetry.
|
||||
needs:
|
||||
- prerequisites
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
shard: [0, 1, 2, 3, 4, 5, 6, 7]
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
lfs: true
|
||||
ref: ${{ env.PR_COMMIT_SHA }}
|
||||
- name: Setup tools
|
||||
uses: ./.github/actions/setup-tools
|
||||
- id: version
|
||||
name: Set Provider Version
|
||||
uses: pulumi/provider-version-action@v1
|
||||
with:
|
||||
set-env: PROVIDER_VERSION
|
||||
- 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: sdk.tar.gz
|
||||
path: ${{ github.workspace}}
|
||||
- name: UnTar SDK folder
|
||||
run: tar -zxf ${{ github.workspace}}/sdk.tar.gz -C ${{github.workspace}}/sdk
|
||||
- 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 dependencies
|
||||
run: mise run install
|
||||
- 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:
|
||||
skip_install: true
|
||||
- name: Shard tests
|
||||
run: mise run "test:examples:shard" -- --total ${{ strategy.job-total }} --index ${{ strategy.job-index }} > go-test
|
||||
- name: Run tests
|
||||
run: mise run "test:examples" $(cat go-test) 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 }}
|
||||
- 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
|
||||
- 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
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
actions: write # For telemetry.
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
lfs: true
|
||||
ref: ${{ env.PR_COMMIT_SHA }}
|
||||
- name: Setup tools
|
||||
uses: ./.github/actions/setup-tools
|
||||
- run: make lint
|
||||
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -2,6 +2,7 @@
|
||||
**/bin/
|
||||
**/obj/
|
||||
**/node_modules/
|
||||
**/venv
|
||||
**/.vs
|
||||
**/.idea
|
||||
**/.ionide
|
||||
@@ -18,4 +19,7 @@ sdk/dotnet/version.txt
|
||||
sdk/java/.gradle
|
||||
sdk/java/build/
|
||||
sdk/java/build.gradle
|
||||
sdk/python/venv
|
||||
|
||||
# Allow local mise overrides.
|
||||
.mise.*.local.toml
|
||||
.mise.local.toml
|
||||
|
||||
133
.mise.toml
Normal file
133
.mise.toml
Normal file
@@ -0,0 +1,133 @@
|
||||
[tasks.provider]
|
||||
run = ["make provider"]
|
||||
sources = ["provider/**/*.go", "go.mod"]
|
||||
outputs = ["bin/pulumi-resource-docker-build"]
|
||||
|
||||
# Generate
|
||||
|
||||
[tasks."generate:nodejs"]
|
||||
depends = ["provider"]
|
||||
run = "make generate_nodejs"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["sdk/nodejs/**/*.ts"]
|
||||
|
||||
[tasks."generate:python"]
|
||||
run = "make generate_python"
|
||||
depends = ["provider"]
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["sdk/python/**/*.py"]
|
||||
|
||||
[tasks."generate:dotnet"]
|
||||
depends = ["provider"]
|
||||
run = "make generate_dotnet"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["sdk/dotnet/**/*.cs"]
|
||||
|
||||
[tasks."generate:go"]
|
||||
depends = ["provider"]
|
||||
run = "make generate_go"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["sdk/go/**/*.go"]
|
||||
|
||||
[tasks."generate:java"]
|
||||
depends = ["provider"]
|
||||
run = "make generate_java"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["sdk/java/**/*.java"]
|
||||
|
||||
# Build
|
||||
|
||||
[tasks."build:nodejs"]
|
||||
depends = ["generate:nodejs"]
|
||||
run = "make build_nodejs"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["*"]
|
||||
|
||||
[tasks."build:python"]
|
||||
depends = ["generate:python"]
|
||||
run = "make build_python"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["*"]
|
||||
|
||||
[tasks."build:dotnet"]
|
||||
depends = ["generate:dotnet"]
|
||||
run = "make build_dotnet"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["*"]
|
||||
|
||||
[tasks."build:go"]
|
||||
depends = ["generate:go"]
|
||||
run = "make build_go"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["*"]
|
||||
|
||||
[tasks."build:java"]
|
||||
depends = ["generate:java"]
|
||||
run = "make build_java"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["*"]
|
||||
|
||||
# TODO: Might be able to link these directly?
|
||||
[tasks."install:dotnet"]
|
||||
run = "make install_dotnet_sdk"
|
||||
|
||||
[tasks."install:nodejs"]
|
||||
run = "make install_nodejs_sdk"
|
||||
|
||||
[tasks.sdk]
|
||||
depends = ["generate:*", "build:*"]
|
||||
|
||||
[tasks.install]
|
||||
depends = ["install:*"]
|
||||
|
||||
[tasks.test]
|
||||
sources = ["**/*.go"]
|
||||
outputs = ["*"]
|
||||
run = "make test_provider"
|
||||
|
||||
[tasks."test:examples"]
|
||||
run = "go test -v -json -cover -timeout 2h -tags=all -parallel 4"
|
||||
|
||||
[tasks."test:examples:shard"]
|
||||
run = "go run github.com/blampe/shard@latest --root ./examples"
|
||||
|
||||
[tasks.schema]
|
||||
run = "pulumi package get-schema bin/pulumi-resource-docker-build | jq 'del(.version)' > provider/cmd/pulumi-resource-docker-build/schema.json"
|
||||
sources = ["bin/pulumi-resource-docker-build"]
|
||||
outputs = ["provider/cmd/pulumi-resource-docker-build/schema.json"]
|
||||
|
||||
[tasks.docs]
|
||||
run = "go generate docs/generate.go"
|
||||
depends = ["schema"]
|
||||
sources = ["docs/yaml/*.yaml"]
|
||||
outputs= ["provider/internal/embed/*.md"]
|
||||
|
||||
# TODO: tasks.examples
|
||||
|
||||
[tools]
|
||||
# Development tooling.
|
||||
go = "latest" # Will read version from go.mod.
|
||||
lefthook = "1.7.12"
|
||||
golangci-lint = "1.58.1"
|
||||
|
||||
# Build and test tools.
|
||||
pulumi = "3.128.0"
|
||||
node = "22"
|
||||
dotnet = "6"
|
||||
python = "3.11.9"
|
||||
java = "temurin-11"
|
||||
gradle = "7.6"
|
||||
"go:github.com/pulumi/schema-tools" = "v0.6.0"
|
||||
"go:github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt" = "v2.5.0"
|
||||
"go:github.com/pulumi/pulumictl/cmd/pulumictl" = "a1b89aaf4299fe5bc78e140fc60eba79088b3dc5" # blampe/replace branch doesn't work?
|
||||
yarn = "1.22.19"
|
||||
gcloud = "455.0.0"
|
||||
|
||||
[env]
|
||||
# TODO(https://github.com/jdx/mise/issues/1898): create = true
|
||||
_.python.venv = { path = "venv", create = false }
|
||||
CGO_ENABLED = "0"
|
||||
|
||||
[settings]
|
||||
experimental = true # Enable Go backend.
|
||||
python_compile = false # Don't build Python from source.
|
||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,5 +1,15 @@
|
||||
## Unreleased
|
||||
|
||||
### Fixed
|
||||
|
||||
- Refreshing an `Index` resource will no longer fail if its stored credentials
|
||||
have expired. (https://github.com/pulumi/pulumi-docker-build/pull/194)
|
||||
|
||||
### Changed
|
||||
|
||||
- Local and tar exporters will now trigger an update if an export doesn't exist
|
||||
at the expected path. (https://github.com/pulumi/pulumi-docker-build/pull/195)
|
||||
|
||||
## 0.0.5 (2024-08-08)
|
||||
|
||||
### Fixed
|
||||
|
||||
53
Makefile
53
Makefile
@@ -17,9 +17,6 @@ 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
|
||||
@@ -63,38 +60,26 @@ 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
|
||||
examples/go: 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
|
||||
examples/nodejs: 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
|
||||
examples/python: 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
|
||||
examples/dotnet: 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
|
||||
examples/java: 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;
|
||||
@@ -102,7 +87,7 @@ endef
|
||||
|
||||
define example
|
||||
rm -rf ${WORKING_DIR}/examples/$(1)
|
||||
$(PULUMI) convert \
|
||||
pulumi convert \
|
||||
--cwd ${WORKING_DIR}/examples/yaml \
|
||||
--logtostderr \
|
||||
--generate-only \
|
||||
@@ -140,8 +125,8 @@ build:: provider sdk/dotnet sdk/go sdk/nodejs sdk/python sdk/java ${SCHEMA_PATH}
|
||||
only_build:: build
|
||||
|
||||
.PHONY: lint
|
||||
lint: ${GOGLANGCILINT}
|
||||
${GOGLANGCILINT} run --fix -c .golangci.yml
|
||||
lint:
|
||||
golangci-lint run --fix -c .golangci.yml
|
||||
|
||||
install:: install_nodejs_sdk install_dotnet_sdk
|
||||
cp $(WORKING_DIR)/bin/${PROVIDER} ${GOPATH}/bin
|
||||
@@ -195,7 +180,7 @@ bin/${PROVIDER}: $(shell find ./provider -name '*.go') go.mod
|
||||
bin/pulumi-gen-${PACK}: # Required by CI
|
||||
touch bin/pulumi-gen-${PACK}
|
||||
|
||||
go.mod: $(shell find . -name '*.go')
|
||||
go.mod: $(shell find provider -name '*.go')
|
||||
go.sum: go.mod
|
||||
|
||||
sdk: $(shell mkdir -p sdk)
|
||||
@@ -205,9 +190,9 @@ sdk: sdk/python sdk/nodejs sdk/java sdk/python sdk/go sdk/dotnet
|
||||
.PHONY: sdk/*
|
||||
|
||||
sdk/python: TMPDIR := $(shell mktemp -d)
|
||||
sdk/python: $(PULUMI) bin/${PROVIDER}
|
||||
sdk/python: bin/${PROVIDER}
|
||||
rm -rf sdk/python
|
||||
$(PULUMI) package gen-sdk bin/$(PROVIDER) --language python -o ${TMPDIR}
|
||||
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 && \
|
||||
@@ -218,9 +203,9 @@ sdk/python: $(PULUMI) bin/${PROVIDER}
|
||||
mv -f ${TMPDIR}/python ${WORKING_DIR}/sdk/.
|
||||
|
||||
sdk/nodejs: TMPDIR := $(shell mktemp -d)
|
||||
sdk/nodejs: $(PULUMI) bin/${PROVIDER}
|
||||
sdk/nodejs: bin/${PROVIDER}
|
||||
rm -rf sdk/nodejs
|
||||
$(PULUMI) package gen-sdk bin/$(PROVIDER) --language nodejs -o ${TMPDIR}
|
||||
pulumi package gen-sdk bin/$(PROVIDER) --language nodejs -o ${TMPDIR}
|
||||
cp README.md LICENSE ${TMPDIR}/nodejs
|
||||
cd ${TMPDIR}/nodejs/ && \
|
||||
yarn install && \
|
||||
@@ -230,9 +215,9 @@ sdk/nodejs: $(PULUMI) bin/${PROVIDER}
|
||||
|
||||
sdk/go: TMPDIR := $(shell mktemp -d)
|
||||
sdk/go: PATH := "$(WORKING_DIR)/bin:$(PATH)"
|
||||
sdk/go: $(PULUMI) bin/${PROVIDER}
|
||||
sdk/go: bin/${PROVIDER}
|
||||
rm -rf sdk/go
|
||||
PATH=$(PATH) $(PULUMI) package gen-sdk bin/$(PROVIDER) --language go -o ${TMPDIR}
|
||||
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 && \
|
||||
@@ -240,9 +225,9 @@ sdk/go: $(PULUMI) bin/${PROVIDER}
|
||||
mv -f ${TMPDIR}/go ${WORKING_DIR}/sdk/go
|
||||
|
||||
sdk/dotnet: TMPDIR := $(shell mktemp -d)
|
||||
sdk/dotnet: $(PULUMI) bin/${PROVIDER}
|
||||
sdk/dotnet: bin/${PROVIDER}
|
||||
rm -rf sdk/dotnet
|
||||
$(PULUMI) package gen-sdk bin/${PROVIDER} --language dotnet -o ${TMPDIR}
|
||||
pulumi package gen-sdk bin/${PROVIDER} --language dotnet -o ${TMPDIR}
|
||||
cd ${TMPDIR}/dotnet/ && \
|
||||
echo "$(VERSION_GENERIC)" > version.txt && \
|
||||
dotnet build
|
||||
@@ -250,9 +235,9 @@ sdk/dotnet: $(PULUMI) bin/${PROVIDER}
|
||||
|
||||
sdk/java: PACKAGE_VERSION := $(shell pulumictl convert-version --language generic -v "$(VERSION_GENERIC)")
|
||||
sdk/java: TMPDIR := $(shell mktemp -d)
|
||||
sdk/java: $(PULUMI) bin/${PROVIDER}
|
||||
sdk/java: bin/${PROVIDER}
|
||||
rm -rf sdk/java
|
||||
$(PULUMI) package gen-sdk --language java bin/${PROVIDER} -o ${TMPDIR}
|
||||
pulumi package gen-sdk --language java bin/${PROVIDER} -o ${TMPDIR}
|
||||
cd ${TMPDIR}/java/ && gradle --console=plain build
|
||||
mv -f ${TMPDIR}/java ${WORKING_DIR}/sdk/.
|
||||
|
||||
|
||||
@@ -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 "<frozen runpy>" rather
|
||||
# than runpy.__file__ in the traceback.
|
||||
return runpy.__file__ if m == "<frozen runpy>" 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)
|
||||
193
go.mod
193
go.mod
@@ -8,23 +8,17 @@ require (
|
||||
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.1.0+incompatible
|
||||
github.com/golangci/golangci-lint v1.59.1
|
||||
github.com/docker/docker v27.1.1+incompatible
|
||||
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.21.0
|
||||
github.com/pulumi/pulumi-java/pkg v0.13.0
|
||||
github.com/pulumi/pulumi-yaml v1.9.1
|
||||
github.com/pulumi/pulumi/pkg/v3 v3.128.0
|
||||
github.com/pulumi/pulumi/sdk/go/pulumi-language-go/v3 v3.0.0-20240805173038-c428a91a4c3c
|
||||
github.com/pulumi/pulumi/sdk/nodejs/cmd/pulumi-language-nodejs/v3 v3.0.0-20240805173038-c428a91a4c3c
|
||||
github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3 v3.0.0-20240805173038-c428a91a4c3c
|
||||
github.com/pulumi/pulumi/sdk/v3 v3.128.0
|
||||
github.com/regclient/regclient v0.6.1
|
||||
github.com/regclient/regclient v0.7.1
|
||||
github.com/sirupsen/logrus v1.9.3
|
||||
github.com/spf13/afero v1.11.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
@@ -38,8 +32,6 @@ require (
|
||||
)
|
||||
|
||||
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
|
||||
@@ -49,91 +41,49 @@ require (
|
||||
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
|
||||
@@ -145,15 +95,10 @@ require (
|
||||
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
|
||||
@@ -162,42 +107,24 @@ require (
|
||||
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
|
||||
@@ -206,32 +133,18 @@ require (
|
||||
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
|
||||
@@ -243,57 +156,27 @@ require (
|
||||
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
|
||||
@@ -304,7 +187,6 @@ require (
|
||||
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
|
||||
@@ -313,39 +195,29 @@ require (
|
||||
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/onsi/ginkgo/v2 v2.17.3 // indirect
|
||||
github.com/onsi/gomega v1.33.1 // 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
|
||||
@@ -353,59 +225,24 @@ require (
|
||||
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
|
||||
@@ -413,25 +250,12 @@ require (
|
||||
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
|
||||
@@ -448,19 +272,14 @@ require (
|
||||
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/sys v0.24.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
|
||||
@@ -477,7 +296,6 @@ require (
|
||||
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
|
||||
@@ -486,7 +304,6 @@ require (
|
||||
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
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -46,27 +46,27 @@ 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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"registry": {
|
||||
"image_manifest": True,
|
||||
"oci_media_types": True,
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "./app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address=ecr_repository.repository_url,
|
||||
password=auth_token.password,
|
||||
username=auth_token.user_name,
|
||||
)],
|
||||
registries=[{
|
||||
"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)
|
||||
```
|
||||
@@ -277,7 +277,7 @@ public class App {
|
||||
.registryId(ecrRepository.registryId())
|
||||
.build());
|
||||
|
||||
var myImage = new Image("myImage", ImageArgs.builder()
|
||||
var myImage = new Image("myImage", ImageArgs.builder()
|
||||
.cacheFrom(CacheFromArgs.builder()
|
||||
.registry(CacheFromRegistryArgs.builder()
|
||||
.ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
|
||||
@@ -330,9 +330,9 @@ import pulumi
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
platforms=[
|
||||
docker_build.Platform.PLAN9_AMD64,
|
||||
docker_build.Platform.PLAN9_386,
|
||||
@@ -428,7 +428,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
.build())
|
||||
@@ -468,15 +468,15 @@ import pulumi
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address="docker.io",
|
||||
password=docker_hub_password,
|
||||
username="pulumibot",
|
||||
)],
|
||||
registries=[{
|
||||
"address": "docker.io",
|
||||
"password": docker_hub_password,
|
||||
"username": "pulumibot",
|
||||
}],
|
||||
tags=["docker.io/pulumi/pulumi:3.107.0"])
|
||||
pulumi.export("ref", my_image["ref"])
|
||||
```
|
||||
@@ -594,7 +594,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
.build())
|
||||
@@ -642,20 +642,20 @@ 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",
|
||||
),
|
||||
cache_from=[{
|
||||
"local": {
|
||||
"src": "tmp/cache",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"local": {
|
||||
"dest": "tmp/cache",
|
||||
"mode": docker_build.CacheMode.MAX,
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -782,7 +782,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.cacheFrom(CacheFromArgs.builder()
|
||||
.local(CacheFromLocalArgs.builder()
|
||||
.src("tmp/cache")
|
||||
@@ -827,12 +827,12 @@ 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",
|
||||
),
|
||||
builder={
|
||||
"name": "cloud-builder-name",
|
||||
},
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exec_=True,
|
||||
push=False)
|
||||
```
|
||||
@@ -926,7 +926,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.builder(BuilderConfigArgs.builder()
|
||||
.name("cloud-builder-name")
|
||||
.build())
|
||||
@@ -966,9 +966,9 @@ image = docker_build.Image("image",
|
||||
build_args={
|
||||
"SET_ME_TO_TRUE": "true",
|
||||
},
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1057,7 +1057,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.buildArgs(Map.of("SET_ME_TO_TRUE", "true"))
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
@@ -1089,9 +1089,9 @@ import pulumi
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False,
|
||||
target="build-me")
|
||||
```
|
||||
@@ -1175,7 +1175,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
.build())
|
||||
@@ -1211,14 +1211,14 @@ 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",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
"named": {
|
||||
"golang_latest": {
|
||||
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
|
||||
},
|
||||
},
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1313,7 +1313,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
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")))
|
||||
@@ -1344,9 +1344,9 @@ 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",
|
||||
),
|
||||
context={
|
||||
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1426,7 +1426,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile")
|
||||
.build())
|
||||
@@ -1461,14 +1461,14 @@ 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
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
dockerfile={
|
||||
"inline": """FROM busybox
|
||||
COPY hello.c ./
|
||||
""",
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1562,7 +1562,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
.build())
|
||||
@@ -1601,12 +1601,12 @@ 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",
|
||||
),
|
||||
context={
|
||||
"location": "https://github.com/docker-library/hello-world.git",
|
||||
},
|
||||
dockerfile={
|
||||
"location": "app/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1696,7 +1696,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("https://github.com/docker-library/hello-world.git")
|
||||
.build())
|
||||
@@ -1734,14 +1734,14 @@ 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,
|
||||
),
|
||||
)],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exports=[{
|
||||
"docker": {
|
||||
"tar": True,
|
||||
},
|
||||
}],
|
||||
push=False)
|
||||
```
|
||||
```csharp
|
||||
@@ -1843,7 +1843,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
var image = new Image("image", ImageArgs.builder()
|
||||
.context(BuildContextArgs.builder()
|
||||
.location("app")
|
||||
.build())
|
||||
|
||||
@@ -57,37 +57,37 @@ 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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-amd64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-arm64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
index = docker_build.Index("index",
|
||||
@@ -355,7 +355,7 @@ public class App {
|
||||
}
|
||||
|
||||
public static void stack(Context ctx) {
|
||||
var amd64 = new Image("amd64", ImageArgs.builder()
|
||||
var amd64 = new Image("amd64", ImageArgs.builder()
|
||||
.cacheFrom(CacheFromArgs.builder()
|
||||
.registry(CacheFromRegistryArgs.builder()
|
||||
.ref("docker.io/pulumi/pulumi:cache-amd64")
|
||||
@@ -374,7 +374,7 @@ public class App {
|
||||
.tags("docker.io/pulumi/pulumi:3.107.0-amd64")
|
||||
.build());
|
||||
|
||||
var arm64 = new Image("arm64", ImageArgs.builder()
|
||||
var arm64 = new Image("arm64", ImageArgs.builder()
|
||||
.cacheFrom(CacheFromArgs.builder()
|
||||
.registry(CacheFromRegistryArgs.builder()
|
||||
.ref("docker.io/pulumi/pulumi:cache-arm64")
|
||||
@@ -393,7 +393,7 @@ public class App {
|
||||
.tags("docker.io/pulumi/pulumi:3.107.0-arm64")
|
||||
.build());
|
||||
|
||||
var index = new Index("index", IndexArgs.builder()
|
||||
var index = new Index("index", IndexArgs.builder()
|
||||
.sources(
|
||||
amd64.ref(),
|
||||
arm64.ref())
|
||||
|
||||
@@ -17,6 +17,7 @@ package internal
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
@@ -353,6 +354,19 @@ func (e *ExportLocal) Annotate(a infer.Annotator) {
|
||||
a.Describe(&e.Dest, "Output path.")
|
||||
}
|
||||
|
||||
// Exists returns true if the exported directory exists and is populated with
|
||||
// some files.
|
||||
func (e *ExportLocal) Exists() bool {
|
||||
if e == nil {
|
||||
return true // Degenerate case.
|
||||
}
|
||||
files, err := os.ReadDir(e.Dest)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return len(files) > 0
|
||||
}
|
||||
|
||||
// ExportTar is an export that uses the tar format for exporting.
|
||||
type ExportTar struct {
|
||||
ExportLocal
|
||||
@@ -365,6 +379,15 @@ func (e *ExportTar) String() string {
|
||||
return "type=tar,dest=" + e.Dest
|
||||
}
|
||||
|
||||
// Exists returns true if a file exists at the expected path.
|
||||
func (e *ExportTar) Exists() bool {
|
||||
if e == nil {
|
||||
return true // Degenerate case.
|
||||
}
|
||||
_, err := os.Stat(e.Dest)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// ExportWithOCI is an export that support OCI media types.
|
||||
type ExportWithOCI struct {
|
||||
OCI *bool `pulumi:"ociMediaTypes,optional"`
|
||||
|
||||
@@ -802,6 +802,7 @@ func (i *Image) Read(
|
||||
continue
|
||||
}
|
||||
|
||||
//nolint:gocritic // Bytes aren't copied in a hot path.
|
||||
for _, d := range descriptors {
|
||||
if d.Platform != nil && d.Platform.Architecture == "unknown" {
|
||||
// Ignore cache manifests.
|
||||
@@ -912,6 +913,12 @@ func (*Image) Diff(
|
||||
if fmt.Sprint(olds.Exports) != fmt.Sprint(news.Exports) {
|
||||
diff["exports"] = update
|
||||
}
|
||||
// Confirm local exports exist.
|
||||
for idx, e := range news.Exports {
|
||||
if !e.Local.Exists() || !e.Tar.Exists() {
|
||||
diff[fmt.Sprintf("exports[%d]", idx)] = update
|
||||
}
|
||||
}
|
||||
if !reflect.DeepEqual(olds.Labels, news.Labels) {
|
||||
diff["labels"] = update
|
||||
}
|
||||
|
||||
@@ -757,6 +757,38 @@ func TestImageDiff(t *testing.T) {
|
||||
},
|
||||
wantChanges: true,
|
||||
},
|
||||
{
|
||||
name: "diff if local export doesn't exist",
|
||||
olds: func(t *testing.T, state ImageState) ImageState {
|
||||
state.Exports = []Export{
|
||||
{Local: &ExportLocal{Dest: "not-real"}},
|
||||
}
|
||||
return state
|
||||
},
|
||||
news: func(_ *testing.T, args ImageArgs) ImageArgs {
|
||||
args.Exports = []Export{
|
||||
{Local: &ExportLocal{Dest: "not-real"}},
|
||||
}
|
||||
return args
|
||||
},
|
||||
wantChanges: true,
|
||||
},
|
||||
{
|
||||
name: "diff if tar export doesn't exist",
|
||||
olds: func(t *testing.T, state ImageState) ImageState {
|
||||
state.Exports = []Export{
|
||||
{Tar: &ExportTar{ExportLocal: ExportLocal{Dest: "not-real"}}},
|
||||
}
|
||||
return state
|
||||
},
|
||||
news: func(_ *testing.T, args ImageArgs) ImageArgs {
|
||||
args.Exports = []Export{
|
||||
{Tar: &ExportTar{ExportLocal: ExportLocal{Dest: "not-real"}}},
|
||||
}
|
||||
return args
|
||||
},
|
||||
wantChanges: true,
|
||||
},
|
||||
}
|
||||
|
||||
s := newServer(nil)
|
||||
|
||||
@@ -16,6 +16,7 @@ package internal
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
@@ -23,6 +24,8 @@ import (
|
||||
// For examples/docs.
|
||||
_ "embed"
|
||||
|
||||
"github.com/regclient/regclient/types/errs"
|
||||
|
||||
provider "github.com/pulumi/pulumi-go-provider"
|
||||
"github.com/pulumi/pulumi-go-provider/infer"
|
||||
"github.com/pulumi/pulumi/sdk/v3/go/common/resource"
|
||||
@@ -194,12 +197,12 @@ func (i *Index) Read(
|
||||
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() {
|
||||
if errors.Is(err, errs.ErrNotFound) {
|
||||
// A remote tag was expected but isn't there -- delete the resource.
|
||||
return "", input, state, err
|
||||
return "", input, state, nil
|
||||
}
|
||||
if err != nil && strings.Contains(err.Error(), "No such manifest:") && !input.isPushed() {
|
||||
// Nothing was pushed, so just use the tag without digest..
|
||||
if errors.Is(err, errs.ErrHTTPUnauthorized) {
|
||||
provider.GetLogger(ctx).Warning("invalid credentials, skipping")
|
||||
return name, input, state, nil
|
||||
}
|
||||
if err != nil {
|
||||
|
||||
@@ -18,8 +18,10 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/regclient/regclient/types/errs"
|
||||
"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"
|
||||
@@ -84,6 +86,40 @@ func TestIndexLifecycle(t *testing.T) {
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "expired credentials",
|
||||
client: func(t *testing.T) Client {
|
||||
ctrl := gomock.NewController(t)
|
||||
c := NewMockClient(ctrl)
|
||||
c.EXPECT().ManifestCreate(gomock.Any(), true, gomock.Any(), gomock.Any())
|
||||
c.EXPECT().ManifestInspect(gomock.Any(), gomock.Any()).Return("", errs.ErrHTTPUnauthorized)
|
||||
c.EXPECT().ManifestDelete(gomock.Any(), gomock.Any()).Return(nil)
|
||||
return c
|
||||
},
|
||||
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 {
|
||||
|
||||
@@ -46,7 +46,7 @@ type Config struct {
|
||||
}
|
||||
|
||||
// _mockClientKey is used by tests to inject a mock Docker client.
|
||||
var _mockClientKey struct{}
|
||||
var _mockClientKey any = "mock-client"
|
||||
|
||||
// Annotate provides user-facing descriptions and defaults for Config's fields.
|
||||
func (c *Config) Annotate(a infer.Annotator) {
|
||||
|
||||
6
renovate.json
Normal file
6
renovate.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"postUpgradeTasks": {
|
||||
"executionMode": "branch",
|
||||
"commands": ["mise trust", "mise install --yes", "mise run sdk"]
|
||||
}
|
||||
}
|
||||
2
sdk/go/dockerbuild/go.mod
generated
2
sdk/go/dockerbuild/go.mod
generated
@@ -88,7 +88,7 @@ require (
|
||||
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.22.0 // indirect
|
||||
golang.org/x/sys v0.24.0 // indirect
|
||||
golang.org/x/term v0.22.0 // indirect
|
||||
golang.org/x/text v0.16.0 // indirect
|
||||
golang.org/x/tools v0.22.0 // indirect
|
||||
|
||||
4
sdk/go/dockerbuild/go.sum
generated
4
sdk/go/dockerbuild/go.sum
generated
@@ -273,8 +273,8 @@ 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.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
|
||||
golang.org/x/sys v0.24.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=
|
||||
|
||||
@@ -167,7 +167,7 @@ import javax.annotation.Nullable;
|
||||
* .registryId(ecrRepository.registryId())
|
||||
* .build());
|
||||
*
|
||||
* var myImage = new Image("myImage", ImageArgs.builder()
|
||||
* var myImage = new Image("myImage", ImageArgs.builder()
|
||||
* .cacheFrom(CacheFromArgs.builder()
|
||||
* .registry(CacheFromRegistryArgs.builder()
|
||||
* .ref(ecrRepository.repositoryUrl().applyValue(repositoryUrl -> String.format("%s:cache", repositoryUrl)))
|
||||
@@ -221,7 +221,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
* .build())
|
||||
@@ -260,7 +260,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
* .build())
|
||||
@@ -306,7 +306,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .cacheFrom(CacheFromArgs.builder()
|
||||
* .local(CacheFromLocalArgs.builder()
|
||||
* .src("tmp/cache")
|
||||
@@ -353,7 +353,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .builder(BuilderConfigArgs.builder()
|
||||
* .name("cloud-builder-name")
|
||||
* .build())
|
||||
@@ -392,7 +392,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .buildArgs(Map.of("SET_ME_TO_TRUE", "true"))
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
@@ -428,7 +428,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
* .build())
|
||||
@@ -464,7 +464,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* 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")))
|
||||
@@ -500,7 +500,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile")
|
||||
* .build())
|
||||
@@ -536,7 +536,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
* .build())
|
||||
@@ -578,7 +578,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("https://github.com/docker-library/hello-world.git")
|
||||
* .build())
|
||||
@@ -618,7 +618,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* var image = new Image("image", ImageArgs.builder()
|
||||
* .context(BuildContextArgs.builder()
|
||||
* .location("app")
|
||||
* .build())
|
||||
@@ -1253,20 +1253,13 @@ public class Image extends com.pulumi.resources.CustomResource {
|
||||
* @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, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()));
|
||||
super("docker-build:index:Image", name, args == null ? ImageArgs.Empty : args, makeResourceOptions(options, Codegen.empty()));
|
||||
}
|
||||
|
||||
private Image(String name, Output<String> id, @Nullable com.pulumi.resources.CustomResourceOptions options) {
|
||||
super("docker-build:index:Image", name, null, makeResourceOptions(options, id));
|
||||
}
|
||||
|
||||
private static ImageArgs makeArgs(ImageArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
|
||||
if (options != null && options.getUrn().isPresent()) {
|
||||
return null;
|
||||
}
|
||||
return args == null ? ImageArgs.Empty : args;
|
||||
}
|
||||
|
||||
private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output<String> id) {
|
||||
var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder()
|
||||
.version(Utilities.getVersion())
|
||||
|
||||
@@ -68,7 +68,7 @@ import javax.annotation.Nullable;
|
||||
* }
|
||||
*
|
||||
* public static void stack(Context ctx) {
|
||||
* var amd64 = new Image("amd64", ImageArgs.builder()
|
||||
* var amd64 = new Image("amd64", ImageArgs.builder()
|
||||
* .cacheFrom(CacheFromArgs.builder()
|
||||
* .registry(CacheFromRegistryArgs.builder()
|
||||
* .ref("docker.io/pulumi/pulumi:cache-amd64")
|
||||
@@ -87,7 +87,7 @@ import javax.annotation.Nullable;
|
||||
* .tags("docker.io/pulumi/pulumi:3.107.0-amd64")
|
||||
* .build());
|
||||
*
|
||||
* var arm64 = new Image("arm64", ImageArgs.builder()
|
||||
* var arm64 = new Image("arm64", ImageArgs.builder()
|
||||
* .cacheFrom(CacheFromArgs.builder()
|
||||
* .registry(CacheFromRegistryArgs.builder()
|
||||
* .ref("docker.io/pulumi/pulumi:cache-arm64")
|
||||
@@ -106,7 +106,7 @@ import javax.annotation.Nullable;
|
||||
* .tags("docker.io/pulumi/pulumi:3.107.0-arm64")
|
||||
* .build());
|
||||
*
|
||||
* var index = new Index("index", IndexArgs.builder()
|
||||
* var index = new Index("index", IndexArgs.builder()
|
||||
* .sources(
|
||||
* amd64.ref(),
|
||||
* arm64.ref())
|
||||
@@ -227,20 +227,13 @@ public class Index extends com.pulumi.resources.CustomResource {
|
||||
* @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, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()));
|
||||
super("docker-build:index:Index", name, args == null ? IndexArgs.Empty : args, makeResourceOptions(options, Codegen.empty()));
|
||||
}
|
||||
|
||||
private Index(String name, Output<String> id, @Nullable com.pulumi.resources.CustomResourceOptions options) {
|
||||
super("docker-build:index:Index", name, null, makeResourceOptions(options, id));
|
||||
}
|
||||
|
||||
private static IndexArgs makeArgs(IndexArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
|
||||
if (options != null && options.getUrn().isPresent()) {
|
||||
return null;
|
||||
}
|
||||
return args == null ? IndexArgs.Empty : args;
|
||||
}
|
||||
|
||||
private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output<String> id) {
|
||||
var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder()
|
||||
.version(Utilities.getVersion())
|
||||
|
||||
@@ -52,14 +52,7 @@ public class Provider extends com.pulumi.resources.ProviderResource {
|
||||
* @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, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()));
|
||||
}
|
||||
|
||||
private static ProviderArgs makeArgs(@Nullable ProviderArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
|
||||
if (options != null && options.getUrn().isPresent()) {
|
||||
return null;
|
||||
}
|
||||
return args == null ? ProviderArgs.Empty : args;
|
||||
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<String> id) {
|
||||
|
||||
348
sdk/python/pulumi_docker_build/image.py
generated
348
sdk/python/pulumi_docker_build/image.py
generated
@@ -718,27 +718,27 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"registry": {
|
||||
"image_manifest": True,
|
||||
"oci_media_types": True,
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "./app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address=ecr_repository.repository_url,
|
||||
password=auth_token.password,
|
||||
username=auth_token.user_name,
|
||||
)],
|
||||
registries=[{
|
||||
"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)
|
||||
```
|
||||
@@ -748,9 +748,9 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
platforms=[
|
||||
docker_build.Platform.PLAN9_AMD64,
|
||||
docker_build.Platform.PLAN9_386,
|
||||
@@ -763,15 +763,15 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address="docker.io",
|
||||
password=docker_hub_password,
|
||||
username="pulumibot",
|
||||
)],
|
||||
registries=[{
|
||||
"address": "docker.io",
|
||||
"password": docker_hub_password,
|
||||
"username": "pulumibot",
|
||||
}],
|
||||
tags=["docker.io/pulumi/pulumi:3.107.0"])
|
||||
pulumi.export("ref", my_image["ref"])
|
||||
```
|
||||
@@ -781,20 +781,20 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"local": {
|
||||
"src": "tmp/cache",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"local": {
|
||||
"dest": "tmp/cache",
|
||||
"mode": docker_build.CacheMode.MAX,
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Docker Build Cloud
|
||||
@@ -803,12 +803,12 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
builder={
|
||||
"name": "cloud-builder-name",
|
||||
},
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exec_=True,
|
||||
push=False)
|
||||
```
|
||||
@@ -821,9 +821,9 @@ class Image(pulumi.CustomResource):
|
||||
build_args={
|
||||
"SET_ME_TO_TRUE": "true",
|
||||
},
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Build target
|
||||
@@ -832,9 +832,9 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False,
|
||||
target="build-me")
|
||||
```
|
||||
@@ -844,14 +844,14 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
"named": {
|
||||
"golang_latest": {
|
||||
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
|
||||
},
|
||||
},
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Remote context
|
||||
@@ -860,9 +860,9 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Inline Dockerfile
|
||||
@@ -871,14 +871,14 @@ class Image(pulumi.CustomResource):
|
||||
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
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
dockerfile={
|
||||
"inline": \"\"\"FROM busybox
|
||||
COPY hello.c ./
|
||||
\"\"\",
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Remote context
|
||||
@@ -887,12 +887,12 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "https://github.com/docker-library/hello-world.git",
|
||||
},
|
||||
dockerfile={
|
||||
"location": "app/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Local export
|
||||
@@ -901,14 +901,14 @@ class Image(pulumi.CustomResource):
|
||||
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,
|
||||
),
|
||||
)],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exports=[{
|
||||
"docker": {
|
||||
"tar": True,
|
||||
},
|
||||
}],
|
||||
push=False)
|
||||
```
|
||||
|
||||
@@ -1156,27 +1156,27 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"registry": {
|
||||
"image_manifest": True,
|
||||
"oci_media_types": True,
|
||||
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "./app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address=ecr_repository.repository_url,
|
||||
password=auth_token.password,
|
||||
username=auth_token.user_name,
|
||||
)],
|
||||
registries=[{
|
||||
"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)
|
||||
```
|
||||
@@ -1186,9 +1186,9 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
platforms=[
|
||||
docker_build.Platform.PLAN9_AMD64,
|
||||
docker_build.Platform.PLAN9_386,
|
||||
@@ -1201,15 +1201,15 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=True,
|
||||
registries=[docker_build.RegistryArgs(
|
||||
address="docker.io",
|
||||
password=docker_hub_password,
|
||||
username="pulumibot",
|
||||
)],
|
||||
registries=[{
|
||||
"address": "docker.io",
|
||||
"password": docker_hub_password,
|
||||
"username": "pulumibot",
|
||||
}],
|
||||
tags=["docker.io/pulumi/pulumi:3.107.0"])
|
||||
pulumi.export("ref", my_image["ref"])
|
||||
```
|
||||
@@ -1219,20 +1219,20 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"local": {
|
||||
"src": "tmp/cache",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"local": {
|
||||
"dest": "tmp/cache",
|
||||
"mode": docker_build.CacheMode.MAX,
|
||||
},
|
||||
}],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Docker Build Cloud
|
||||
@@ -1241,12 +1241,12 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
builder={
|
||||
"name": "cloud-builder-name",
|
||||
},
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exec_=True,
|
||||
push=False)
|
||||
```
|
||||
@@ -1259,9 +1259,9 @@ class Image(pulumi.CustomResource):
|
||||
build_args={
|
||||
"SET_ME_TO_TRUE": "true",
|
||||
},
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Build target
|
||||
@@ -1270,9 +1270,9 @@ class Image(pulumi.CustomResource):
|
||||
import pulumi_docker_build as docker_build
|
||||
|
||||
image = docker_build.Image("image",
|
||||
context=docker_build.BuildContextArgs(
|
||||
location="app",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
push=False,
|
||||
target="build-me")
|
||||
```
|
||||
@@ -1282,14 +1282,14 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "app",
|
||||
"named": {
|
||||
"golang_latest": {
|
||||
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
|
||||
},
|
||||
},
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Remote context
|
||||
@@ -1298,9 +1298,9 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Inline Dockerfile
|
||||
@@ -1309,14 +1309,14 @@ class Image(pulumi.CustomResource):
|
||||
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
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
dockerfile={
|
||||
"inline": \"\"\"FROM busybox
|
||||
COPY hello.c ./
|
||||
\"\"\",
|
||||
),
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Remote context
|
||||
@@ -1325,12 +1325,12 @@ class Image(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
context={
|
||||
"location": "https://github.com/docker-library/hello-world.git",
|
||||
},
|
||||
dockerfile={
|
||||
"location": "app/Dockerfile",
|
||||
},
|
||||
push=False)
|
||||
```
|
||||
### Local export
|
||||
@@ -1339,14 +1339,14 @@ class Image(pulumi.CustomResource):
|
||||
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,
|
||||
),
|
||||
)],
|
||||
context={
|
||||
"location": "app",
|
||||
},
|
||||
exports=[{
|
||||
"docker": {
|
||||
"tar": True,
|
||||
},
|
||||
}],
|
||||
push=False)
|
||||
```
|
||||
|
||||
|
||||
112
sdk/python/pulumi_docker_build/index.py
generated
112
sdk/python/pulumi_docker_build/index.py
generated
@@ -131,37 +131,37 @@ class Index(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-amd64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-arm64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
index = docker_build.Index("index",
|
||||
@@ -218,37 +218,37 @@ class Index(pulumi.CustomResource):
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-amd64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
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",
|
||||
),
|
||||
cache_from=[{
|
||||
"registry": {
|
||||
"ref": "docker.io/pulumi/pulumi:cache-arm64",
|
||||
},
|
||||
}],
|
||||
cache_to=[{
|
||||
"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"])
|
||||
index = docker_build.Index("index",
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
Reference in New Issue
Block a user