diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 000000000..010794c17 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,164 @@ +name: Setup +description: Sets up the environment for CI runs. + +inputs: + aws-access-key-id: + required: true + + aws-secret-access-key: + required: true + + aws-role-to-assume: + required: true + + github-token: + required: true + + node-version: + default: 18 + + python-version: + default: 3.8 + + go-version: + default: 1.21 + + dotnet-version: + default: 6 + + gotestfmt-version: + default: v2.5.0 + + pulumi-version: + default: dev + + google-service-account-email: + default: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com + + google-project-number: + default: 895284651812 + + google-workload-identity-pool: + default: pulumi-ci + + google-workload-identity-provider: + default: pulumi-ci + + aws-region: + default: us-west-2 + + aws-role-duration-seconds: + default: 7200 + + aws-role-session-name: + default: examples@github-actions + +outputs: + aws-access-key-id: + value: ${{ steps.aws-auth.outputs.aws-access-key-id }} + + aws-secret-access-key: + value: ${{ steps.aws-auth.outputs.aws-secret-access-key }} + + aws-session-token: + value: ${{ steps.aws-auth.outputs.aws-session-token }} + + aws-region: + value: ${{ inputs.aws-region }} + +runs: + using: composite + steps: + + - name: Install .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{inputs.dotnet-version}} + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{inputs.node-version}} + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: ${{inputs.python-version}} + + - name: Install Python deps + run: | + # pip3 install virtualenv==20.0.23 + pip3 install pipenv + shell: bash + + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: ${{inputs.go-version}} + + - name: Install aws-iam-authenticator + run: | + curl https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator -o aws-iam-authenticator + chmod +x ./aws-iam-authenticator + sudo mv aws-iam-authenticator /usr/local/bin + shell: bash + + - name: Install Kubectl + run: | + curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl + chmod +x ./kubectl + sudo mv kubectl /usr/local/bin + shell: bash + + - name: Install and configure Helm + run: | + curl -o- -L https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash + helm init -c + helm repo add bitnami https://charts.bitnami.com/bitnami + shell: bash + + - name: Install gcloud auth + uses: google-github-actions/setup-gcloud@v2 + with: + install_components: gke-gcloud-auth-plugin + + - name: Install testing dependencies + run: make ensure + shell: bash + + - name: Install gotestfmt + uses: GoTestTools/gotestfmt-action@v2 + with: + version: ${{ inputs.gotestfmt-version }} + token: ${{ inputs.github-token }} + + - name: Install Pulumi + uses: pulumi/actions@v5 + with: + pulumi-version: ${{ inputs.pulumi-version }} + + - run: echo "Pulumi $(pulumi version) is installed" + shell: bash + + - name: Authenticate with AWS + id: aws-auth + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ inputs.aws-access-key-id }} + aws-secret-access-key: ${{ inputs.aws-secret-access-key }} + aws-region: ${{ inputs.aws-region }} + role-to-assume: ${{ inputs.aws-role-to-assume }} + role-duration-seconds: ${{ inputs.role-duration-seconds }} + role-session-name: ${{ inputs.role-session-name }} + unset-current-credentials: true + output-credentials: true + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v2 + with: + service_account: ${{ inputs.google-service-account-email }} + workload_identity_provider: projects/${{ inputs.google-project-number }}/locations/global/workloadIdentityPools/${{ inputs.google-workload-identity-pool }}/providers/${{ inputs.google-workload-identity-provider }} + + - name: Authenticate with Google Cloud Registry + run: gcloud --quiet auth configure-docker + shell: bash diff --git a/.github/workflows/README.md b/.github/workflows/README.md deleted file mode 100644 index ea5ac432a..000000000 --- a/.github/workflows/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## Please Note - -The GitHub Actions that are present in this repository are scaffolded from a central generator -therefore, any manual changes will be overwritten on the next codegen diff --git a/.github/workflows/command_dispatch.yml b/.github/workflows/command-dispatch.yml similarity index 86% rename from .github/workflows/command_dispatch.yml rename to .github/workflows/command-dispatch.yml index 123a5108b..96463702c 100644 --- a/.github/workflows/command_dispatch.yml +++ b/.github/workflows/command-dispatch.yml @@ -1,4 +1,4 @@ -name: Command Dispatch for testing +name: Command dispatch for testing on: issue_comment: types: @@ -13,7 +13,7 @@ jobs: - name: Run Build uses: peter-evans/slash-command-dispatch@v2 with: - commands: run-example-tests + commands: run-tests issue-type: pull-request permission: write reaction-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml deleted file mode 100644 index 785b21f29..000000000 --- a/.github/workflows/cron.yml +++ /dev/null @@ -1,641 +0,0 @@ -name: Run Examples Cron Job -on: - schedule: - - cron: 0 9 * * * - repository_dispatch: - types: - - trigger-cron - workflow_dispatch: {} -env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - ARM_ENVIRONMENT: public - ARM_LOCATION: westus - ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} - ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} - AWS_ACCESS_KEY_ID: " ${{ secrets.AWS_ACCESS_KEY_ID }}" - AWS_REGION: us-west-2 - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - CLOUDSDK_CORE_DISABLE_PROMPTS: 1 - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: "895284651812" - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - PACKET_AUTH_TOKEN: ${{ secrets.PACKET_AUTH_TOKEN }} - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_API: https://api.pulumi-staging.io - PULUMI_ENABLE_RESOURCE_REFERENCES: "1" - PULUMI_TEST_OWNER: moolumi - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} -jobs: - dotnet-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: dotnet test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - platform: - - ubuntu-latest - source-dir: - - testing-unit-cs - - testing-unit-cs-mocks - - testing-unit-fs-mocks - go-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: go test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - goversion: - - 1.21.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-go - kubernetes: - name: kubernetes - needs: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Go Dependencies - run: make ensure - - name: Setup Config - run: >- - mkdir -p "$HOME/.kube/" - - pulumi stack -s "${{ github.sha }}-${{ github.run_number }}" -C misc/scripts/testinfra/ output --show-secrets kubeconfig >~/.kube/config - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run ${{ matrix.tests-set }} Tests - run: make specific_test_set TestSet=Kubernetes - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - linting: - name: lint - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Yarn - run: curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version ${{ - matrix.yarn-version }} - - name: Update PATH for Yarn - run: |- - echo "$HOME/.yarn/bin" >> $GITHUB_PATH - echo "$HOME/.config/yarn/global/node_modules/.bin" >> $GITHUB_PATH - - name: Setup linting tool - run: make install - - name: Lint typescript files - run: make lint - strategy: - fail-fast: false - matrix: - nodeversion: - - 18.x - platform: - - ubuntu-latest - yarn-version: - - 1.13.0 - providers: - name: providers - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Testing Dependencies - run: make ensure - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Running ${{ matrix.clouds }}${{ matrix.languages }} Tests - run: make specific_test_set TestSet=${{ matrix.clouds }}${{ matrix.languages }} - strategy: - fail-fast: false - matrix: - clouds: - - DigitalOcean - - Aws - - Azure - - Gcp - - Packet - - EquinixMetal - - Cloud - dotnetversion: - - 6.0.114 - examples-test-matrix: - - default - goversion: - - 1.21.x - languages: - - Cs - - Js - - Ts - - Py - - Fs - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - python-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - python3 -m venv venv - source venv/bin/activate - pip3 install -r requirements.txt - python -m unittest - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - platform: - - ubuntu-latest - pythonversion: - - 3.9 - source-dir: - - testing-unit-py - test-infra-destroy: - name: test-infra-destroy - needs: kubernetes - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Destroy test infra - run: make destroy_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - test-infra-setup: - name: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Create Test Infrastructure - run: make setup_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - ts-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - npm install - npx mocha -r ts-node/register ec2tests.ts - npx mocha -r ts-node/register bucket_pair_test.ts - working-directory: ${{ matrix.source-dir }}/mocha - strategy: - fail-fast: false - matrix: - nodeversion: - - 20.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-ts diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f048f9bed..4341e17fd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1,4 +1,4 @@ -name: New Pull request Open +name: New pull request on: pull_request_target: {} jobs: diff --git a/.github/workflows/run-tests-command.yml b/.github/workflows/run-tests-command.yml deleted file mode 100644 index 7b8a64d66..000000000 --- a/.github/workflows/run-tests-command.yml +++ /dev/null @@ -1,696 +0,0 @@ -name: Run Examples Tests From PR -on: - pull_request: - branches: - - master - repository_dispatch: - types: - - run-example-tests-command -env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - ARM_ENVIRONMENT: public - ARM_LOCATION: westus - ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} - ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} - AWS_ACCESS_KEY_ID: " ${{ secrets.AWS_ACCESS_KEY_ID }}" - AWS_REGION: us-west-2 - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - CLOUDSDK_CORE_DISABLE_PROMPTS: 1 - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: "895284651812" - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - PACKET_AUTH_TOKEN: ${{ secrets.PACKET_AUTH_TOKEN }} - PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }} - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_API: https://api.pulumi-staging.io - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} -jobs: - comment-notification: - if: github.event_name == 'repository_dispatch' - name: comment-notification - runs-on: pulumi-ubuntu-8core - steps: - - id: vars - name: Create URL to the run output - run: echo ::set-output - name=run-url::https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID - - name: Update with Result - uses: peter-evans/create-or-update-comment@v4 - with: - body: |- - Please view the results of the PR Build [Here][1] - - [1]: ${{ steps.vars.outputs.run-url }} - issue-number: ${{ github.event.client_payload.github.payload.issue.number }} - repository: ${{ github.event.client_payload.github.payload.repository.full_name }} - token: ${{ secrets.GITHUB_TOKEN }} - dotnet-unit-testing: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: dotnet test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - platform: - - pulumi-ubuntu-8core - source-dir: - - testing-unit-cs - - testing-unit-cs-mocks - - testing-unit-fs-mocks - go-unit-testing: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{matrix.goversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: go test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - goversion: - - 1.21.x - platform: - - pulumi-ubuntu-8core - source-dir: - - testing-unit-go - kubernetes: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: kubernetes - needs: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Go Dependencies - run: make ensure - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup Config - run: >- - mkdir -p "$HOME/.kube/" - - pulumi stack -s "${{ github.sha }}-${{ github.run_number }}" -C misc/scripts/testinfra/ output --show-secrets kubeconfig >~/.kube/config - - name: Run ${{ matrix.tests-set }} Tests - run: make specific_test_set TestSet=Kubernetes - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - pulumi-ubuntu-8core - pythonversion: - - 3.9 - linting: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: lint - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Yarn - run: curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version ${{ - matrix.yarn-version }} - - name: Update PATH for Yarn - run: |- - echo "$HOME/.yarn/bin" >> $GITHUB_PATH - echo "$HOME/.config/yarn/global/node_modules/.bin" >> $GITHUB_PATH - - name: Setup linting tool - run: make install - - name: Lint typescript files - run: make lint - strategy: - fail-fast: false - matrix: - nodeversion: - - 18.x - platform: - - pulumi-ubuntu-8core - yarn-version: - - 1.13.0 - providers: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: run-provider-tests - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Testing Dependencies - run: make ensure - - name: Install gotestfmt - uses: GoTestTools/gotestfmt-action@v2 - with: - version: v2.5.0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Running ${{ matrix.clouds }}${{ matrix.languages }} Tests - run: make specific_test_set TestSet=${{ matrix.clouds }}${{ matrix.languages }} - strategy: - fail-fast: false - matrix: - clouds: - - DigitalOcean - - Aws - - Azure - - Gcp - - Packet - - EquinixMetal - - Cloud - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - languages: - - Cs - - Js - - Ts - - Py - - Fs - nodeversion: - - 18.x - platform: - - pulumi-ubuntu-8core - pythonversion: - - 3.9 - python-unit-testing: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - python3 -m venv venv - source venv/bin/activate - pip3 install -r requirements.txt - python -m unittest - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - platform: - - pulumi-ubuntu-8core - pythonversion: - - 3.9 - source-dir: - - testing-unit-py - status-checks: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name - name: Final Status Check - needs: - - dotnet-unit-testing - - go-unit-testing - - python-unit-testing - - ts-unit-testing - - kubernetes - - linting - - providers - runs-on: pulumi-ubuntu-8core - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - run: echo "Ready for merge" - test-infra-destroy: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: test-infra-destroy - needs: kubernetes - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Destroy test infra - run: make destroy_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - pulumi-ubuntu-8core - pythonversion: - - 3.9 - test-infra-setup: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v4 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v2 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Create Test Infrastructure - run: make setup_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - pulumi-ubuntu-8core - pythonversion: - - 3.9 - ts-unit-testing: - if: github.event_name == 'repository_dispatch' || - github.event.pull_request.head.repo.full_name == github.repository - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - npm install - npx mocha -r ts-node/register ec2tests.ts - npx mocha -r ts-node/register bucket_pair_test.ts - working-directory: ${{ matrix.source-dir }}/mocha - strategy: - fail-fast: false - matrix: - nodeversion: - - 20.x - platform: - - pulumi-ubuntu-8core - source-dir: - - testing-unit-ts diff --git a/.github/workflows/smoke-test-cli-command.yml b/.github/workflows/smoke-test-cli-command.yml deleted file mode 100644 index 58f52b50b..000000000 --- a/.github/workflows/smoke-test-cli-command.yml +++ /dev/null @@ -1,601 +0,0 @@ -name: Smoke Test Specific Version of CLI -on: - repository_dispatch: - types: - - smoke-test-cli -env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - ARM_ENVIRONMENT: public - ARM_LOCATION: westus - ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} - ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} - AWS_ACCESS_KEY_ID: " ${{ secrets.AWS_ACCESS_KEY_ID }}" - AWS_REGION: us-west-2 - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - CLOUDSDK_CORE_DISABLE_PROMPTS: 1 - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: "895284651812" - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - PACKET_AUTH_TOKEN: ${{ secrets.PACKET_AUTH_TOKEN }} - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_API: https://api.pulumi-staging.io - PULUMI_VERSION: ${{ github.event.client_payload.ref }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} -jobs: - dotnet-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: dotnet test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - platform: - - ubuntu-latest - source-dir: - - testing-unit-cs - - testing-unit-cs-mocks - - testing-unit-fs-mocks - go-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: go test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - goversion: - - 1.21.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-go - kubernetes: - name: smoke-test-cli-on-kubernetes - needs: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - with: - pulumi-version: ${{ env.PULUMI_VERSION != '' && format('v{0}', env.PULUMI_VERSION) || null }} - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Go Dependencies - run: make ensure - - name: Setup Config - run: >- - mkdir -p "$HOME/.kube/" - - pulumi stack -s "${{ github.sha }}-${{ github.run_number }}" -C misc/scripts/testinfra/ output --show-secrets kubeconfig >~/.kube/config - - name: Run ${{ matrix.tests-set }} Tests - run: make specific_test_set TestSet=Kubernetes - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - providers: - name: smoke-test-cli-on-providers - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - with: - pulumi-version: ${{ env.PULUMI_VERSION != '' && format('v{0}', env.PULUMI_VERSION) || null }} - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Testing Dependencies - run: make ensure - - name: Running ${{ matrix.clouds }}${{ matrix.languages }} Tests - run: make specific_test_set TestSet=${{ matrix.clouds }}${{ matrix.languages }} - strategy: - fail-fast: false - matrix: - clouds: - - DigitalOcean - - Aws - - Azure - - Gcp - - Packet - - EquinixMetal - - Cloud - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - languages: - - Cs - - Js - - Ts - - Py - - Fs - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - python-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - python3 -m venv venv - source venv/bin/activate - pip3 install -r requirements.txt - python -m unittest - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - platform: - - ubuntu-latest - pythonversion: - - 3.9 - source-dir: - - testing-unit-py - test-infra-destroy: - name: test-infra-destroy - needs: kubernetes - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Destroy test infra - run: make destroy_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - test-infra-setup: - name: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Create Test Infrastructure - run: make setup_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - ts-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - npm install - npx mocha -r ts-node/register ec2tests.ts - npx mocha -r ts-node/register bucket_pair_test.ts - working-directory: ${{ matrix.source-dir }}/mocha - strategy: - fail-fast: false - matrix: - nodeversion: - - 20.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-ts diff --git a/.github/workflows/smoke-test-provider-command.yml b/.github/workflows/smoke-test-provider-command.yml deleted file mode 100644 index 60ecc0331..000000000 --- a/.github/workflows/smoke-test-provider-command.yml +++ /dev/null @@ -1,594 +0,0 @@ -name: Smoke Test Latest Provider Release -on: - repository_dispatch: - types: - - smoke-test-provider -env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - ARM_ENVIRONMENT: public - ARM_LOCATION: westus - ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} - ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} - AWS_ACCESS_KEY_ID: " ${{ secrets.AWS_ACCESS_KEY_ID }}" - AWS_REGION: us-west-2 - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - CLOUDSDK_CORE_DISABLE_PROMPTS: 1 - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com - GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci - GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci - GOOGLE_PROJECT: pulumi-ci-gcp-provider - GOOGLE_PROJECT_NUMBER: "895284651812" - GOOGLE_REGION: us-central1 - GOOGLE_ZONE: us-central1-a - PACKET_AUTH_TOKEN: ${{ secrets.PACKET_AUTH_TOKEN }} - PROVIDER_TESTS_TAG: ${{ github.event.client_payload.ref }} - PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} - PULUMI_API: https://api.pulumi-staging.io - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} -jobs: - dotnet-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: dotnet test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - platform: - - ubuntu-latest - source-dir: - - testing-unit-cs - - testing-unit-cs-mocks - - testing-unit-fs-mocks - go-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: go test - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - goversion: - - 1.21.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-go - kubernetes: - name: smoke-test-kubernetes-provider - needs: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - with: - pulumi-version: ${{ env.PULUMI_VERSION != '' && format('v{0}', env.PULUMI_VERSION) || null }} - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Go Dependencies - run: make ensure - - name: Setup Config - run: >- - mkdir -p "$HOME/.kube/" - - pulumi stack -s "${{ github.sha }}-${{ github.run_number }}" -C misc/scripts/testinfra/ output --show-secrets kubeconfig >~/.kube/config - - name: Run Kubernetes Smoke Tests - run: make specific_tag_set TagSet=Kubernetes - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - providers: - name: smoke-test-providers - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - with: - pulumi-version: ${{ env.PULUMI_VERSION != '' && format('v{0}', env.PULUMI_VERSION) || null }} - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Install Testing Dependencies - run: make ensure - - name: Running ${{ env.PROVIDER_TESTS_TAG }}${{ matrix.languages }} Smoke Tests - run: make specific_tag_set TestSet=${{ matrix.languages }} TagSet=${{ - env.PROVIDER_TESTS_TAG }} - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - languages: - - Cs - - Js - - Ts - - Py - - Fs - nodeversion: - - 168x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - python-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - python3 -m venv venv - source venv/bin/activate - pip3 install -r requirements.txt - python -m unittest - working-directory: ${{ matrix.source-dir }} - strategy: - fail-fast: false - matrix: - platform: - - ubuntu-latest - pythonversion: - - 3.9 - source-dir: - - testing-unit-py - test-infra-destroy: - name: test-infra-destroy - needs: kubernetes - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Destroy test infra - run: make destroy_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - test-infra-setup: - name: test-infra-setup - permissions: - contents: read - id-token: write - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Setup DotNet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{matrix.dotnetversion}} - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.pythonversion}} - - name: Install Python deps - run: |- - pip3 install virtualenv==20.0.23 - pip3 install pipenv - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{matrix.goversion}} - - name: Install aws-iam-authenticator - run: >- - curl -o aws-iam-authenticator - https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator - - chmod +x ./aws-iam-authenticator - - sudo mv aws-iam-authenticator /usr/local/bin - - name: Install Kubectl - run: >- - curl -LO - https://storage.googleapis.com/kubernetes-release/release/$(curl -s - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - - chmod +x ./kubectl - - sudo mv kubectl /usr/local/bin - - name: Install + Configure Helm - run: >- - curl -o- -L - https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | - bash - - helm init -c - - helm repo add bitnami https://charts.bitnami.com/bitnami - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v0 - with: - service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} - workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER - }}/locations/global/workloadIdentityPools/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ - env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} - - name: Setup gcloud auth - uses: google-github-actions/setup-gcloud@v0 - with: - install_components: gke-gcloud-auth-plugin - - name: Login to Google Cloud Registry - run: gcloud --quiet auth configure-docker - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - 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: 7200 - role-session-name: examples@githubActions - role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} - - name: Checkout Scripts Repo - uses: actions/checkout@v3 - with: - path: ci-scripts - repository: pulumi/scripts - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - name: Create Test Infrastructure - run: make setup_test_infra StackName="${{ github.sha }}-${{ github.run_number }}" - strategy: - fail-fast: false - matrix: - dotnetversion: - - 6.0.114 - goversion: - - 1.21.x - nodeversion: - - 18.x - platform: - - ubuntu-latest - pythonversion: - - 3.9 - ts-unit-testing: - name: Running ${{ matrix.source-dir }} test - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: ${{matrix.nodeversion}} - registry-url: https://registry.npmjs.org - - name: Install Pulumi CLI - uses: pulumi/actions@v5 - with: - pulumi-version: dev - - name: Print CLI version - run: echo "Currently Pulumi $(pulumi version) is installed" - - run: |- - npm install - npx mocha -r ts-node/register ec2tests.ts - npx mocha -r ts-node/register bucket_pair_test.ts - working-directory: ${{ matrix.source-dir }}/mocha - strategy: - fail-fast: false - matrix: - nodeversion: - - 20.x - platform: - - ubuntu-latest - source-dir: - - testing-unit-ts diff --git a/.github/workflows/test-examples.yml b/.github/workflows/test-examples.yml new file mode 100644 index 000000000..91bc4b965 --- /dev/null +++ b/.github/workflows/test-examples.yml @@ -0,0 +1,94 @@ +name: Test examples +on: + pull_request: + branches: + - master + schedule: + - cron: 0 9 * * * + repository_dispatch: + types: + - run-tests-command + workflow_dispatch: {} + +env: + ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} + ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_ID }} + ARM_ENVIRONMENT: public + ARM_LOCATION: westus + ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} + ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: us-west-2 + CLOUDSDK_CORE_DISABLE_PROMPTS: 1 + DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} + GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: pulumi-ci@pulumi-ci-gcp-provider.iam.gserviceaccount.com + GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci + GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci + GOOGLE_PROJECT: pulumi-ci-gcp-provider + GOOGLE_PROJECT_NUMBER: "895284651812" + GOOGLE_REGION: us-central1 + GOOGLE_ZONE: us-central1-a + PACKET_AUTH_TOKEN: ${{ secrets.PACKET_AUTH_TOKEN }} + PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }} + PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} + PULUMI_API: https://api.pulumi-staging.io + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + +jobs: + run-provider-tests: + runs-on: ${{ matrix.platform }} + + permissions: + id-token: write + contents: read + + steps: + - name: Check out the code + uses: actions/checkout@v3 + + - name: Install tools and dependencies + uses: ./.github/actions/setup + id: setup + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} + aws-region: ${{ env.AWS_REGION }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Run aws sts get-caller-identity + run: aws sts get-caller-identity + env: + AWS_ACCESS_KEY_ID: ${{ steps.setup.outputs.aws-access-key-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.setup.outputs.aws-secret-access-key }} + AWS_SESSION_TOKEN: ${{ steps.setup.outputs.aws-session-token }} + AWS_REGION: ${{ steps.setup.outputs.aws-region }} + + - name: Run ${{ matrix.clouds }}${{ matrix.languages }} Tests + run: make specific_test_set TestSet=${{ matrix.clouds }}${{ matrix.languages }} + env: + AWS_ACCESS_KEY_ID: ${{ steps.setup.outputs.aws-access-key-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.setup.outputs.aws-secret-access-key }} + AWS_SESSION_TOKEN: ${{ steps.setup.outputs.aws-session-token }} + AWS_REGION: ${{ steps.setup.outputs.aws-session-token }} + + strategy: + fail-fast: false + matrix: + platform: + - pulumi-ubuntu-8core + clouds: + # - DigitalOcean + - Aws + # - Azure + # - Gcp + # - Packet + # - EquinixMetal + # - Cloud + languages: + # - Cs + # - Js + # - Ts + # - Py + - Fs diff --git a/Makefile b/Makefile index 1357fd3ea..8ea1f4cc3 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,11 @@ .PHONY: ensure only_test all -all: install ensure lint only_test - -install: - yarn global add tslint typescript +all: ensure lint only_test ensure: cd misc/test && go mod tidy cd misc/test && go mod download + yarn global add tslint typescript lint: tslint -c tslint.json **/*.ts