diff --git a/.config/mise.lock b/.config/mise.lock new file mode 100644 index 000000000..ac0523a70 --- /dev/null +++ b/.config/mise.lock @@ -0,0 +1,87 @@ +[[tools.dotnet]] +version = "8.0.414" +backend = "asdf:dotnet" + +[[tools."github:pulumi/pulumictl"]] +version = "0.0.50" +backend = "github:pulumi/pulumictl" + +[tools."github:pulumi/pulumictl".platforms.linux-x64] +checksum = "sha256:a988418240d3a985bdcb9753b7c65ba4b06608deb359dc2942cb8c9374abc164" +name = "pulumictl-v0.0.50-linux-amd64.tar.gz" +size = 27744219 +url = "https://github.com/pulumi/pulumictl/releases/download/v0.0.50/pulumictl-v0.0.50-linux-amd64.tar.gz" +url_api = "https://api.github.com/repos/pulumi/pulumictl/releases/assets/278054496" + +[[tools."github:pulumi/schema-tools"]] +version = "0.6.0" +backend = "github:pulumi/schema-tools" + +[tools."github:pulumi/schema-tools".platforms.linux-x64] +checksum = "blake3:82dfe616fee18b4258f6e3d2dc3c4e9f14afd43a0a4cc33eff2d2a04088d6ca3" +name = "schema-tools-v0.6.0-linux-amd64.tar.gz" +size = 14282746 +url = "https://github.com/pulumi/schema-tools/releases/download/v0.6.0/schema-tools-v0.6.0-linux-amd64.tar.gz" +url_api = "https://api.github.com/repos/pulumi/schema-tools/releases/assets/118725905" + +[[tools.go]] +version = "1.24.2" +backend = "core:go" + +[tools.go.platforms.linux-x64] +checksum = "sha256:68097bd680839cbc9d464a0edce4f7c333975e27a90246890e9f1078c7e702ad" +size = 78516109 +url = "https://dl.google.com/go/go1.24.2.linux-amd64.tar.gz" + +[[tools.golangci-lint]] +version = "1.64.8" +backend = "aqua:golangci/golangci-lint" + +[tools.golangci-lint.platforms.linux-x64] +checksum = "sha256:b6270687afb143d019f387c791cd2a6f1cb383be9b3124d241ca11bd3ce2e54e" +size = 12364828 +url = "https://github.com/golangci/golangci-lint/releases/download/v1.64.8/golangci-lint-1.64.8-linux-amd64.tar.gz" + +[[tools.gradle]] +version = "7.6.6" +backend = "aqua:gradle/gradle" + +[tools.gradle.platforms.linux-x64] +checksum = "sha256:673d9776f303bc7048fc3329d232d6ebf1051b07893bd9d11616fad9a8673be0" +size = 128439774 +url = "https://github.com/gradle/gradle-distributions/releases/download/v7.6.6/gradle-7.6.6-bin.zip" + +[[tools.java]] +version = "corretto-11.0.29.7.1" +backend = "core:java" + +[tools.java.platforms.linux-x64] +checksum = "sha256:279c6d3124f8b0251b16297b16687fe8b3946410b05ed27de1259b5e5cea02ba" +size = 195379320 +url = "https://corretto.aws/downloads/resources/11.0.29.7.1/amazon-corretto-11.0.29.7.1-linux-x64.tar.gz" + +[[tools.node]] +version = "20.19.5" +backend = "core:node" + +[tools.node.platforms.linux-x64] +checksum = "sha256:4eba5fbe1fb10753bc06e42f001a91c5cec16798b7764a3e9257adc59af47fe1" +size = 47041607 +url = "https://nodejs.org/dist/v20.19.5/node-v20.19.5-linux-x64.tar.gz" + +[[tools."npm:yarn"]] +version = "1.22.22" +backend = "npm:yarn" + +[[tools.pulumi]] +version = "3.173.0" +backend = "aqua:pulumi/pulumi" + +[tools.pulumi.platforms.linux-x64] +checksum = "sha512:b129c4f4f36ec8f3e1b970f9bac6a82cd8ff6f9b1b9e923a1cc2955ccb19f286cdcdb7f76f4112e5a7249f063fd2c56022cbe0171e0ddc96dcbf2b00a0a55a82" +size = 91300165 +url = "https://github.com/pulumi/pulumi/releases/download/v3.173.0/pulumi-v3.173.0-linux-x64.tar.gz" + +[[tools.python]] +version = "3.11.8" +backend = "core:python" diff --git a/.config/mise.test.toml b/.config/mise.test.toml new file mode 100644 index 000000000..3ab74020a --- /dev/null +++ b/.config/mise.test.toml @@ -0,0 +1,11 @@ +# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt + +# Overrides for test workflows + +[env] +# Acceptance (specifically providertest) tests require that PULUMI_HOME be the default +PULUMI_HOME = "{{ env.HOME }}/.pulumi" + +[tools] +# always use pulumi latest for tests +pulumi = "latest" diff --git a/.config/mise.toml b/.config/mise.toml new file mode 100644 index 000000000..f52e9c42f --- /dev/null +++ b/.config/mise.toml @@ -0,0 +1,29 @@ +# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt +# You can create your own root-level mise.toml file to override/augment this. See https://mise.jdx.dev/configuration.html + +[env] +_.source = "{{config_root}}/scripts/get-versions.sh" +PULUMI_HOME = "{{config_root}}/.pulumi" + +[tools] + +# Runtimes +# TODO: we may not need 'get_env' once https://github.com/jdx/mise/discussions/6339 is fixed +go = "{{ get_env(name='GO_VERSION_MISE', default='latest') }}" +node = '20.19.5' +python = '3.11.8' +dotnet = '8.0.414' +# Corretto version used as Java SE/OpenJDK version no longer offered +java = 'corretto-11' + +# Executable tools +pulumi = "{{ get_env(name='PULUMI_VERSION_MISE', default='latest') }}" +"github:pulumi/pulumictl" = 'latest' +"github:pulumi/schema-tools" = "latest" +gradle = '7.6' +golangci-lint = "1.64.8" # See note about about overrides if you need to customize this. +"npm:yarn" = "1.22.22" + +[settings] +experimental = true # Required for Go binaries (e.g. pulumictl). +lockfile = true diff --git a/.github/actions/download-prerequisites/action.yml b/.github/actions/download-prerequisites/action.yml index 41fbdb3e7..bba19cea1 100644 --- a/.github/actions/download-prerequisites/action.yml +++ b/.github/actions/download-prerequisites/action.yml @@ -5,7 +5,7 @@ runs: using: "composite" steps: - name: Download the prerequisites bin - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: prerequisites-bin path: bin @@ -19,7 +19,7 @@ runs: run: rm bin/executables.txt - name: Download schema-embed.json - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: # Use a pattern to avoid failing if the artifact doesn't exist pattern: schema-embed.* diff --git a/.github/actions/download-provider/action.yml b/.github/actions/download-provider/action.yml index 4957685e9..6faa72209 100644 --- a/.github/actions/download-provider/action.yml +++ b/.github/actions/download-provider/action.yml @@ -6,7 +6,7 @@ runs: steps: - name: Download pulumi-resource-eks - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: pattern: pulumi-resource-eks-*-linux-amd64.tar.gz path: ${{ github.workspace }}/bin diff --git a/.github/actions/download-sdk/action.yml b/.github/actions/download-sdk/action.yml index c241e3c71..f25ad6fe6 100644 --- a/.github/actions/download-sdk/action.yml +++ b/.github/actions/download-sdk/action.yml @@ -10,7 +10,7 @@ runs: using: "composite" steps: - name: Download ${{ inputs.language }} SDK - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: ${{ inputs.language }}-sdk.tar.gz path: ${{ github.workspace}}/sdk/ diff --git a/.github/actions/setup-tools/action.yml b/.github/actions/setup-tools/action.yml deleted file mode 100644 index 39148f222..000000000 --- a/.github/actions/setup-tools/action.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: Setup tools -description: Installs Go, Pulumi, pulumictl, schema-tools, Node.JS, Python, dotnet and Java. - -inputs: - tools: - description: | - Comma separated list of tools to install. The default of "all" installs all tools. Available tools are: - go - pulumicli - pulumictl - schema-tools - nodejs - python - dotnet - java - default: all - cache-go: - description: | - Whether to enable the GitHub cache for Go. Appropriate for disabling in - smaller jobs that typically completely before the "real" job has an - opportunity to populate the cache. - default: "true" - -runs: - using: "composite" - steps: - - name: Install Go - if: inputs.tools == 'all' || contains(inputs.tools, 'go') - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5 - with: - go-version: "1.21.x" - cache-dependency-path: | - provider/*.sum - upstream/*.sum - sdk/go/*.sum - sdk/*.sum - *.sum - # TODO(https://github.com/actions/setup-go/issues/316): Restore but don't save the cache. - cache: ${{ inputs.cache-go }} - - - name: Install pulumictl - if: inputs.tools == 'all' || contains(inputs.tools, 'pulumictl') - uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0 - with: - tag: v0.0.46 - repo: pulumi/pulumictl - - - name: Install Pulumi CLI - if: inputs.tools == 'all' || contains(inputs.tools, 'pulumicli') - uses: pulumi/actions@cc7494be991dba0978f7ffafaf995b0449a0998e # v6 - with: - pulumi-version: "dev" - - - name: Install Schema Tools - if: inputs.tools == 'all' || contains(inputs.tools, 'schema-tools') - uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0 - with: - repo: pulumi/schema-tools - - - name: Install kubectl - uses: azure/setup-kubectl@v4 - with: - version: 'latest' - id: install - - - name: Setup Node - if: inputs.tools == 'all' || contains(inputs.tools, 'nodejs') - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5 - with: - node-version: 20.x - registry-url: https://registry.npmjs.org - - - name: Setup DotNet - if: inputs.tools == 'all' || contains(inputs.tools, 'dotnet') - uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 - with: - dotnet-version: 8.0.x - - - name: Setup Python - if: inputs.tools == 'all' || contains(inputs.tools, 'python') - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 - with: - python-version: 3.11.8 - - - name: Setup Java - if: inputs.tools == 'all' || contains(inputs.tools, 'java') - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 - with: - cache: gradle - distribution: temurin - java-version: 11 - - - name: Setup Gradle - if: inputs.tools == 'all' || contains(inputs.tools, 'java') - uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 - with: - gradle-version: 7.6 diff --git a/.github/actions/upload-prerequisites/action.yml b/.github/actions/upload-prerequisites/action.yml index a865b38d8..7f573bfae 100644 --- a/.github/actions/upload-prerequisites/action.yml +++ b/.github/actions/upload-prerequisites/action.yml @@ -9,14 +9,14 @@ runs: run: find bin -type f -executable > bin/executables.txt - name: Upload prerequisites bin - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: prerequisites-bin path: bin/* retention-days: 30 - name: Upload schema-embed.json - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: schema-embed.json path: provider/cmd/pulumi-resource-eks/schema-embed.json diff --git a/.github/actions/upload-sdk/action.yml b/.github/actions/upload-sdk/action.yml index 75e262da8..e941a3170 100644 --- a/.github/actions/upload-sdk/action.yml +++ b/.github/actions/upload-sdk/action.yml @@ -13,7 +13,7 @@ runs: shell: bash run: tar -zcf sdk/${{ inputs.language }}.tar.gz -C sdk/${{ inputs.language }} . - name: Upload artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: ${{ inputs.language }}-sdk.tar.gz path: ${{ github.workspace}}/sdk/${{ inputs.language }}.tar.gz diff --git a/.github/workflows/build_provider.yml b/.github/workflows/build_provider.yml index a2ffb072d..42ca688af 100644 --- a/.github/workflows/build_provider.yml +++ b/.github/workflows/build_provider.yml @@ -56,12 +56,15 @@ jobs: - uses: MOZGIII/install-ldid-action@v1 with: tag: v2.1.5-procursus2 - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: pulumictl, go - # use per-platform/arch caches instead since we are doing cross-builds - cache-go: false + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # only saving the cache in the prerequisites job + cache_save: false # Based on https://github.com/actions/cache/blob/main/examples.md#go---modules - name: Get GOCACHE id: gocache @@ -105,7 +108,7 @@ jobs: run: make provider_dist-${{ matrix.platform.os }}-${{ matrix.platform.arch }} - name: Upload artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: pulumi-resource-eks-v${{ inputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz path: bin/pulumi-resource-eks-v${{ inputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz diff --git a/.github/workflows/build_sdk.yml b/.github/workflows/build_sdk.yml index 831d539cf..4ef940bf4 100644 --- a/.github/workflows/build_sdk.yml +++ b/.github/workflows/build_sdk.yml @@ -58,15 +58,30 @@ jobs: name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - name: Cache examples generation - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: | .pulumi/examples-cache key: ${{ runner.os }}-${{ hashFiles('provider/go.sum') }} - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: pulumictl, pulumicli, ${{ matrix.language }} + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # only saving the cache in the prerequisites job + cache_save: false + - name: Setup Go Cache + if: matrix.language == 'go' || contains(matrix.language, 'go') + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5 + with: + cache-dependency-path: | + provider/*.sum + upstream/*.sum + sdk/go/*.sum + sdk/*.sum + *.sum - name: Prepare local workspace run: make prepare_local_workspace env: @@ -79,6 +94,7 @@ jobs: run: make --touch provider schema - name: Build SDK run: make build_${{ matrix.language }} + - name: Check worktree clean id: worktreeClean uses: pulumi/git-status-check-action@v1 @@ -90,6 +106,11 @@ jobs: sdk/go/**/pulumiUtilities.go sdk/nodejs/package.json sdk/python/pyproject.toml + sdk/java/build.gradle + **/mise.lock + **/.config/mise.lock + **/mise.*.lock + **/.config/mise.*.lock - name: Commit ${{ matrix.language }} SDK changes for Renovate # If the worktree is dirty and this is a Renovate PR to bump # dependencies, commit the updated SDK and push it back to the PR. The diff --git a/.github/workflows/comment-on-stale-issues.yml b/.github/workflows/comment-on-stale-issues.yml index 79be47c19..e3ec80ee5 100644 --- a/.github/workflows/comment-on-stale-issues.yml +++ b/.github/workflows/comment-on-stale-issues.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest name: Stale issue job steps: - - uses: aws-actions/stale-issue-cleanup@5650b49bcd757a078f6ca06c373d7807b773f9bc #v7.1.0 + - uses: aws-actions/stale-issue-cleanup@5650b49bcd757a078f6ca06c373d7807b773f9bc # v7.1.0 with: issue-types: issues # only look at issues (ignore pull-requests) diff --git a/.github/workflows/license.yml b/.github/workflows/license.yml index 0a797aa3a..5de369e32 100644 --- a/.github/workflows/license.yml +++ b/.github/workflows/license.yml @@ -30,11 +30,15 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: go - cache-go: false + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # only saving the cache in the prerequisites job + cache_save: false - run: make prepare_local_workspace continue-on-error: true env: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ab2d3d4b8..d08d9dced 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,13 +30,13 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - name: Install go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5 + - name: Setup mise + uses: jdx/mise-action@v3 with: - # The versions of golangci-lint and setup-go here cross-depend and need to update together. - go-version: 1.23 - # Either this action or golangci-lint needs to disable the cache - cache: false + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_save: false # A different job handles caching our tools. - name: disarm go:embed directives to enable lint continue-on-error: true # this fails if there are no go:embed directives run: | @@ -49,5 +49,5 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6 with: - version: v1.64.6 + install-mode: none # Handled by mise. working-directory: provider diff --git a/.github/workflows/prerequisites.yml b/.github/workflows/prerequisites.yml index f901a8611..019bedd5c 100644 --- a/.github/workflows/prerequisites.yml +++ b/.github/workflows/prerequisites.yml @@ -64,15 +64,29 @@ jobs: major-version: 4 set-env: 'PROVIDER_VERSION' - name: Cache examples generation - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: | .pulumi/examples-cache key: ${{ runner.os }}-${{ hashFiles('provider/go.sum') }} - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: go, pulumictl, pulumicli, schema-tools + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # only saving the cache in the prerequisites job + cache_save: true + - name: Setup Go Cache + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5 + with: + cache-dependency-path: | + provider/*.sum + upstream/*.sum + sdk/go/*.sum + sdk/*.sum + *.sum - name: Prepare local workspace before restoring previously built files run: make prepare_local_workspace env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4cd825f42..7358b4842 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -59,13 +59,16 @@ jobs: id: esc-secrets name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: pulumictl, pulumicli, go, schema-tools - cache-go: false + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-${{ hashFiles('mise.lock') }}" + cache_save: false - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@a03048d87541d1d9fcf2ecf528a4a65ba9bd7838 # v5.0.0 + uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 # v5.1.0 with: aws-access-key-id: ${{ steps.esc-secrets.outputs.AWS_ACCESS_KEY_ID }} aws-region: us-east-2 @@ -77,14 +80,14 @@ jobs: - name: Create dist directory run: mkdir -p dist - name: Download provider assets - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: pattern: pulumi-resource-eks-v${{ inputs.version }}-* path: dist # Don't create a directory for each artifact merge-multiple: true - name: Download schema - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: # Use a pattern to avoid failing if the artifact doesn't exist pattern: schema-embed.* @@ -110,7 +113,7 @@ jobs: - name: Upload Provider Binaries run: aws s3 cp dist s3://get.pulumi.com/releases/plugins/ --recursive - name: Create GH Release - uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2 + uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2 if: inputs.isPrerelease == false with: tag_name: v${{ inputs.version }} @@ -144,11 +147,21 @@ jobs: id: esc-secrets name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 with: - tools: pulumictl, pulumicli, nodejs, python, dotnet, go, java - cache-go: false + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # only saving the cache in the prerequisites job + cache_save: false + - name: Setup Node + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 + with: + # we don't set node-version because we install with mise. + # this step is needed to setup npm auth + registry-url: https://registry.npmjs.org - name: Publish SDKs if: inputs.skipJavaSdk == false uses: pulumi/pulumi-package-publisher@c1672c7928591d563dccb12729e05e315c21f8c2 # v0.0.22 @@ -225,7 +238,7 @@ jobs: name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - name: Dispatch Metadata build - uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3 + uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4 with: token: ${{ steps.esc-secrets.outputs.PULUMI_BOT_TOKEN }} repository: pulumi/registry diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 0d7ac2211..9102e289d 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -15,25 +15,18 @@ env: PYTHON_VERSION: "3.9" TF_APPEND_USER_AGENT: pulumi +name: Comment on community PRs +on: + pull_request_target: {} + jobs: comment-on-pr: if: github.event.pull_request.head.repo.full_name != github.repository name: comment-on-pr runs-on: ubuntu-latest + permissions: + pull-requests: write steps: - - name: Checkout Repo - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - persist-credentials: false - - env: - ESC_ACTION_ENVIRONMENT: github-secrets/${{ github.repository_owner }}-${{ github.event.repository.name }} - ESC_ACTION_EXPORT_ENVIRONMENT_VARIABLES: "false" - ESC_ACTION_OIDC_AUTH: "true" - ESC_ACTION_OIDC_ORGANIZATION: pulumi - ESC_ACTION_OIDC_REQUESTED_TOKEN_TYPE: urn:pulumi:token-type:access_token:organization - id: esc-secrets - name: Fetch secrets from ESC - uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - name: Comment PR uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1 with: @@ -42,6 +35,3 @@ jobs: PR is now waiting for a maintainer to run the acceptance tests. **Note for the maintainer:** To run the acceptance tests, please comment */run-acceptance-tests* on the PR -name: pull-request -on: - pull_request_target: {} diff --git a/.github/workflows/release_command.yml b/.github/workflows/release_command.yml index f70c3ac4f..443b8cb99 100644 --- a/.github/workflows/release_command.yml +++ b/.github/workflows/release_command.yml @@ -37,7 +37,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() name: Notify failure - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.event.client_payload.github.payload.repository.full_name }} @@ -46,7 +46,7 @@ jobs: "release command failed: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - if: success() name: Notify success - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.event.client_payload.github.payload.repository.full_name }} diff --git a/.github/workflows/run-acceptance-tests.yml b/.github/workflows/run-acceptance-tests.yml index 6b9f43316..ba5e5dc4c 100644 --- a/.github/workflows/run-acceptance-tests.yml +++ b/.github/workflows/run-acceptance-tests.yml @@ -91,7 +91,7 @@ jobs: name: Create URL to the run output 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@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 with: body: "Please view the PR build: ${{ steps.run-url.outputs.run-url }}" issue-number: ${{ github.event.client_payload.github.payload.issue.number }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e3918f4e..34a787cb2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,8 @@ on: env: PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }} + MISE_ENV: test + AWS_REGION: us-west-2 DOTNET_VERSION: 6.x GO_VERSION: 1.21.x @@ -54,8 +56,17 @@ jobs: with: repository: pulumi/examples path: p-examples - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup mise + uses: jdx/mise-action@v3 + env: + MISE_ENV: test + with: + # Latest working version. See https://github.com/jdx/mise/discussions/6781 + version: 2025.10.16 + github_token: ${{ secrets.GITHUB_TOKEN }} + cache_key: "mise-{{platform}}-{{file_hash}}" + # also save this cache since we are using a different mise env. + cache_save: true - name: Prepare local workspace run: make prepare_local_workspace env: diff --git a/.github/workflows/verify-release.yml b/.github/workflows/verify-release.yml index 8137589b1..cf2fdff43 100644 --- a/.github/workflows/verify-release.yml +++ b/.github/workflows/verify-release.yml @@ -77,10 +77,44 @@ jobs: id: esc-secrets name: Fetch secrets from ESC uses: pulumi/esc-action@9eb774255b1a4afb7855678ae8d4a77359da0d9b - - name: Setup tools - uses: ./.github/actions/setup-tools + - name: Setup Python + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: - tools: pulumicli, nodejs, python, dotnet, go, java + python-version: 3.11.8 + - name: Setup Java + uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 + with: + cache: gradle + distribution: temurin + java-version: 11 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 + with: + gradle-version: 7.6 + - name: Setup DotNet + uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 + with: + dotnet-version: 8.0.x + - name: Setup Node + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org + - name: Install Go + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5 + with: + go-version: "1.21.x" + cache-dependency-path: | + provider/*.sum + upstream/*.sum + sdk/go/*.sum + sdk/*.sum + *.sum + cache: true + - name: Install Pulumi CLI + uses: pulumi/actions@d7ceb0215da5a14ec84f50b703365ddf0194a9c8 # v6 + with: + pulumi-version: "dev" - name: Generate Pulumi Access Token id: generate_pulumi_token uses: pulumi/auth-actions@1c89817aab0c66407723cdef72b05266e7376640 # v1.0.1 @@ -120,6 +154,16 @@ jobs: providerVersion: ${{ inputs.providerVersion }} env: NODE_AUTH_TOKEN: ${{ steps.esc-secrets.outputs.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ steps.esc-secrets.outputs.NPM_TOKEN }} + NPM_TOKEN: ${{ steps.esc-secrets.outputs.NPM_TOKEN }} + PUBLISH_REPO_PASSWORD: ${{ steps.esc-secrets.outputs.OSSRH_PASSWORD }} + PUBLISH_REPO_USERNAME: ${{ steps.esc-secrets.outputs.OSSRH_USERNAME }} + PULUMI_ACCESS_TOKEN: ${{ steps.esc-secrets.outputs.PULUMI_ACCESS_TOKEN }} + SIGNING_KEY: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_KEY }} + SIGNING_KEY_ID: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_PASSWORD }} + SLACK_WEBHOOK_URL: ${{ steps.esc-secrets.outputs.SLACK_WEBHOOK_URL }} - name: Verify dotnet release uses: pulumi/verify-provider-release@679d5e6838ac4f68696bfa1bf9e2c5da94509dd6 # v1.3.1 with: @@ -127,3 +171,14 @@ jobs: directory: examples/cluster-cs provider: eks providerVersion: ${{ inputs.providerVersion }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ steps.esc-secrets.outputs.NPM_TOKEN }} + NPM_TOKEN: ${{ steps.esc-secrets.outputs.NPM_TOKEN }} + PUBLISH_REPO_PASSWORD: ${{ steps.esc-secrets.outputs.OSSRH_PASSWORD }} + PUBLISH_REPO_USERNAME: ${{ steps.esc-secrets.outputs.OSSRH_USERNAME }} + PULUMI_ACCESS_TOKEN: ${{ steps.esc-secrets.outputs.PULUMI_ACCESS_TOKEN }} + SIGNING_KEY: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_KEY }} + SIGNING_KEY_ID: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ steps.esc-secrets.outputs.JAVA_SIGNING_PASSWORD }} + SLACK_WEBHOOK_URL: ${{ steps.esc-secrets.outputs.SLACK_WEBHOOK_URL }} diff --git a/Makefile b/Makefile index 6a685a312..19af11bfa 100644 --- a/Makefile +++ b/Makefile @@ -40,20 +40,36 @@ LDFLAGS=$(LDFLAGS_PROJ_VERSION) $(LDFLAGS_UPSTREAM_VERSION) $(LDFLAGS_EXTRAS) $( # Ensure all directories exist before evaluating targets to avoid issues with `touch` creating directories. _ := $(shell mkdir -p .make bin .pulumi/bin) +# Installs all necessary tools with mise and records completion in a sentinel +# file so dependent targets can participate in make's caching behaviour. The +# environment is refreshed via an order-only prerequisite so it still runs on +# every invocation without invalidating the sentinel. +mise_install: .make/mise_install | mise_env + +.PHONY: mise_env +mise_env: + @mise env -q > /dev/null + +.make/mise_install: + @mise install -q + @touch $@ + # Build the provider and all SDKs and install ready for testing -build: install_plugins provider build_sdks install_sdks +build: .make/mise_install provider build_sdks install_sdks +build: | mise_env # Keep aliases for old targets to ensure backwards compatibility development: build only_build: build # Prepare the workspace for building the provider and SDKs # Importantly this is run by CI ahead of restoring the bin directory and resuming SDK builds -prepare_local_workspace: install_plugins upstream +prepare_local_workspace: .make/mise_install upstream +prepare_local_workspace: | mise_env # Creates all generated files which need to be committed generate: generate_sdks schema generate_sdks: generate_nodejs generate_python generate_dotnet generate_go generate_java build_sdks: build_nodejs build_python build_dotnet build_go build_java install_sdks: install_nodejs_sdk install_python_sdk install_dotnet_sdk install_go_sdk install_java_sdk -.PHONY: development only_build build generate generate_sdks build_sdks install_sdks +.PHONY: development only_build build generate generate_sdks build_sdks install_sdks mise_install mise_env help: @echo "Usage: make [target]" @@ -80,7 +96,7 @@ help: @echo "" @echo "Internal Targets (automatically run as dependencies of other targets)" @echo " prepare_local_workspace Prepare for building" - @echo " install_plugins Install plugin dependencies" + @echo " mise_install Install tools with mise" @echo " upstream Initialize the upstream submodule, if present" @echo "" @echo "Language-Specific Targets" @@ -98,8 +114,8 @@ GEN_ENVS := PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(G generate_dotnet: .make/generate_dotnet build_dotnet: .make/build_dotnet -.make/generate_dotnet: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) -.make/generate_dotnet: .make/install_plugins bin/$(CODEGEN) +.make/generate_dotnet: .make/mise_install bin/$(CODEGEN) +.make/generate_dotnet: | mise_env $(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) dotnet --out sdk/dotnet/ cd sdk/dotnet/ && \ printf "module fake_dotnet_module // Exclude this directory from Go tools\n\ngo 1.17\n" > go.mod && \ @@ -112,8 +128,8 @@ build_dotnet: .make/build_dotnet generate_go: .make/generate_go build_go: .make/build_go -.make/generate_go: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) -.make/generate_go: .make/install_plugins bin/$(CODEGEN) +.make/generate_go: .make/mise_install bin/$(CODEGEN) +.make/generate_go: | mise_env $(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) go --out sdk/go/ @touch $@ .make/build_go: .make/generate_go @@ -125,8 +141,9 @@ generate_java: .make/generate_java build_java: .make/build_java .make/generate_java: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) .make/generate_java: PACKAGE_VERSION := $(PROVIDER_VERSION) -.make/generate_java: .make/install_plugins bin/pulumi-java-gen .make/schema - PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR) bin/$(JAVA_GEN) generate --schema provider/cmd/$(PROVIDER)/schema.json --out sdk/java --build gradle-nexus +.make/generate_java: .make/mise_install bin/pulumi-java-gen .make/schema +.make/generate_java: | mise_env + PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR) bin/$(JAVA_GEN) generate --schema provider/cmd/$(PROVIDER)/schema.json --out sdk/java --build gradle-nexus printf "module fake_java_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/java/go.mod @touch $@ .make/build_java: PACKAGE_VERSION := $(PROVIDER_VERSION) @@ -139,8 +156,8 @@ build_java: .make/build_java generate_nodejs: .make/generate_nodejs build_nodejs: .make/build_nodejs -.make/generate_nodejs: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) -.make/generate_nodejs: .make/install_plugins bin/$(CODEGEN) +.make/generate_nodejs: .make/mise_install bin/$(CODEGEN) +.make/generate_nodejs: | mise_env $(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) nodejs --out sdk/nodejs/ printf "module fake_nodejs_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/nodejs/go.mod @touch $@ @@ -154,8 +171,8 @@ build_nodejs: .make/build_nodejs generate_python: .make/generate_python build_python: .make/build_python -.make/generate_python: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) -.make/generate_python: .make/install_plugins bin/$(CODEGEN) +.make/generate_python: .make/mise_install bin/$(CODEGEN) +.make/generate_python: | mise_env $(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) python --out sdk/python/ printf "module fake_python_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/python/go.mod cp README.md sdk/python/ @@ -175,6 +192,7 @@ clean: rm -rf sdk/{dotnet,nodejs,go,python} rm -rf bin/* rm -rf .make/* + rm -rf "$(GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR)" if dotnet nuget list source | grep "$(WORKING_DIR)/nuget"; then \ dotnet nuget remove source "$(WORKING_DIR)/nuget" \ ; fi @@ -235,12 +253,12 @@ schema: .make/schema # This does actually have dependencies, but we're keeping it around for backwards compatibility for now tfgen_no_deps: .make/schema .make/schema: export PULUMI_HOME := $(WORKING_DIR)/.pulumi -.make/schema: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) .make/schema: export PULUMI_CONVERT := $(PULUMI_CONVERT) .make/schema: export PULUMI_CONVERT_EXAMPLES_CACHE_DIR := $(WORKING_DIR)/.pulumi/examples-cache .make/schema: export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION := $(PULUMI_CONVERT) .make/schema: export PULUMI_MISSING_DOCS_ERROR := $(PULUMI_MISSING_DOCS_ERROR) -.make/schema: bin/$(CODEGEN) .make/install_plugins .make/upstream +.make/schema: bin/$(CODEGEN) .make/mise_install .make/upstream +.make/schema: | mise_env $(WORKING_DIR)/bin/$(CODEGEN) schema --out provider/cmd/$(PROVIDER) (cd provider && VERSION=$(PROVIDER_VERSION) go generate cmd/$(PROVIDER)/main.go) @touch $@ @@ -256,7 +274,6 @@ upstream: .make/upstream ./scripts/upstream.sh init @touch $@ .PHONY: upstream - bin/pulumi-java-gen: PULUMI_JAVA_VERSION := $(shell cat .pulumi-java-gen.version) bin/pulumi-java-gen: PLAT := $(shell go version | sed -En "s/go version go.* (.*)\/(.*)/\1-\2/p") bin/pulumi-java-gen: PULUMI_JAVA_URL := "https://github.com/pulumi/pulumi-java/releases/download/v$(PULUMI_JAVA_VERSION)/pulumi-language-java-v$(PULUMI_JAVA_VERSION)-$(PLAT).tar.gz" @@ -282,7 +299,6 @@ renovate: $(call renovate_cmd) .PHONY: renovate -include scripts/plugins.mk include scripts/crossbuild.mk # Permit providers to extend the Makefile with provider-specific Make includes. diff --git a/mise.toml b/mise.toml deleted file mode 100644 index 630a59304..000000000 --- a/mise.toml +++ /dev/null @@ -1,19 +0,0 @@ -# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt - -[tools] - -# Runtimes -go = '1.21' -node = '20' -python = '3.11.8' -dotnet = '8.0' -# Corretto version used as Java SE/OpenJDK version no longer offered -java = 'corretto-11' - -# Executable tools -pulumi = 'latest' -"go:github.com/pulumi/pulumictl/cmd/pulumictl" = 'latest' -gradle = '7.6' - -[settings] -experimental = true # Required for Go binaries (e.g. pulumictl). diff --git a/scripts/get-versions.sh b/scripts/get-versions.sh new file mode 100755 index 000000000..bc92573bf --- /dev/null +++ b/scripts/get-versions.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -euo pipefail + +# This script can be simplified to use go when https://github.com/jdx/mise/discussions/6374 is fixed +# e.g. go list -m -f '{{.GoVersion}}' + +module_path="github.com/pulumi/pulumi/pkg/v3" +go_mod_path="provider" +gomod="go.mod" + +if [[ "$go_mod_path" != "" && "$go_mod_path" != "." ]]; then + gomod="$go_mod_path/$gomod" +fi + +if [[ ! -f "$gomod" ]]; then + echo "missing $gomod" >&2 + exit 1 +fi + +raw_version=$(awk -v module="$module_path" ' + $1 == module || $2 == module { + for (i = 1; i <= NF; i++) { + if ($i ~ /^v[0-9]/) { + sub(/^v/, "", $i) + print $i + exit + } + } + } +' "$gomod") + +if [[ -z "${raw_version:-}" ]]; then + echo "failed to determine Pulumi version from $gomod" >&2 + exit 1 +fi + +echo "PULUMI_VERSION_MISE=$raw_version" +export PULUMI_VERSION_MISE=$raw_version + +# Prefer the toolchain directive if present, otherwise fall back to the `go` version line +go_toolchain=$(awk '/^toolchain[[:space:]]+go[0-9]/{ print $2; exit }' "$gomod") + +if [[ -n "${go_toolchain:-}" ]]; then + go_version=${go_toolchain#go} +else + go_version=$(awk '/^go[[:space:]]+[0-9]/{ print $2; exit }' "$gomod") +fi + +if [[ -z "${go_version:-}" ]]; then + echo "failed to determine Go version from $gomod" >&2 + exit 1 +fi + +echo "GO_VERSION_MISE=$go_version" +export GO_VERSION_MISE=$go_version diff --git a/scripts/plugins.mk b/scripts/plugins.mk deleted file mode 100644 index c06d1d977..000000000 --- a/scripts/plugins.mk +++ /dev/null @@ -1,26 +0,0 @@ -# Install Pulumi and plugins required at build time. -install_plugins: .make/install_plugins -.make/install_plugins: export PULUMI_HOME := $(WORKING_DIR)/.pulumi -.make/install_plugins: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH) -.make/install_plugins: .pulumi/bin/pulumi - @touch $@ -.PHONY: install_plugins - -# Because some codegen depends on the version of the CLI used, we install a local CLI -# version pinned to the same version as the provider `go.mod`. -# -# This logic compares the version of .pulumi/bin/pulumi already installed. If it matches -# the desired version, we just print. Otherwise we (re)install pulumi at the desired -# version. -.pulumi/bin/pulumi: .pulumi/version - @if [ -x .pulumi/bin/pulumi ] && [ "v$$(cat .pulumi/version)" = "$$(.pulumi/bin/pulumi version)" ]; then \ - echo "pulumi/bin/pulumi version: v$$(cat .pulumi/version)"; \ - touch $@; \ - else \ - curl -fsSL https://get.pulumi.com | \ - HOME=$(WORKING_DIR) sh -s -- --version "$$(cat .pulumi/version)"; \ - fi - -# Compute the version of Pulumi to use by inspecting the Go dependencies of the provider. -.pulumi/version: provider/go.mod - (cd provider && go list -f "{{slice .Version 1}}" -m github.com/pulumi/pulumi/pkg/v3) | tee $@