Test templates #240
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test templates | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
schedule: | |
- cron: '0 8 * * *' | |
repository_dispatch: | |
types: | |
- trigger-cron | |
- run-templates-command | |
workflow_dispatch: {} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PULUMI_TEST_OWNER: "moolumi" | |
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} | |
AWS_REGION: "us-west-2" | |
GOOGLE_CI_SERVICE_ACCOUNT_EMAIL: [email protected] | |
GOOGLE_CI_WORKLOAD_IDENTITY_POOL: pulumi-ci | |
GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER: pulumi-ci | |
GOOGLE_PROJECT: pulumi-ci-gcp-provider | |
GOOGLE_PROJECT_NUMBER: 895284651812 | |
LINODE_TOKEN: ${{ secrets.LINODE_TOKEN }} | |
SKIPPED_TESTS: "alicloud,digitalocean,kubernetes,openstack,equinix-metal,civo,aiven,auth0,github,oci,java-jbang,java-gradle,azuredevops,vm-azure" | |
PULUMI_API: https://api.pulumi-staging.io | |
PULUMI_VERSION: ${{ github.event.client_payload.ref }} | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} | |
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} | |
ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} | |
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} | |
AZURE_LOCATION: westus | |
TESTPARALLELISM: 10 | |
PULUMI_TEMPLATE_LOCATION: ${{ github.workspace}} | |
jobs: | |
test: | |
name: Test templates | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- ubuntu-latest | |
- macOS-latest | |
- windows-16core-2022 | |
go-version: | |
- 1.21.x | |
node-version: | |
- 18.x | |
python-version: | |
- 3.8 | |
dotnet-version: | |
- 6.0.x | |
java-version: | |
- 11 | |
java-distribution: | |
- temurin | |
runs-on: ${{ matrix.platform }} | |
permissions: | |
contents: read | |
id-token: write | |
steps: | |
- if: contains(matrix.platform, 'ubuntu') | |
name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: false | |
swap-storage: false | |
- name: Install ${{ matrix.java-version }} (${{ matrix.java-distribution }}) | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ matrix.java-distribution }} | |
java-version: ${{ matrix.java-version }} | |
- if: contains(matrix.platform, 'macOS') | |
name: Install Scala | |
run: | | |
brew install sbt | |
- name: Install .NET ${{ matrix.dotnet-version }} | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ matrix.dotnet-version }} | |
- if: contains(matrix.platform, 'ubuntu') || contains(matrix.platform, 'windows') | |
name: Run 'dotnet clean' on Windows and Ubuntu | |
run: | | |
dotnet nuget locals all --clear | |
- name: Install Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Install Pulumi | |
uses: pulumi/actions@v5 | |
with: | |
pulumi-version: ${{ env.PULUMI_VERSION != '' && format('v{0}', env.PULUMI_VERSION) || 'dev' }} | |
- run: echo "$(pulumi version)" | |
- name: Install Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python deps | |
run: | | |
pip3 install pyenv-win | |
pip3 install pipenv | |
- name: Check out the code | |
uses: actions/checkout@v4 | |
- name: Unshallow clone for tags | |
run: git fetch --prune --unshallow --tags | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ env.AWS_REGION }} | |
role-duration-seconds: 14400 # 4 hours | |
role-session-name: templates@githubActions | |
role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }} | |
- name: Authenticate to Google Cloud | |
uses: google-github-actions/auth@v2 | |
with: | |
workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER }}/locations/global/workloadIdentityPools/${{ env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} | |
- name: Set up gcloud auth | |
uses: google-github-actions/setup-gcloud@v2 | |
with: | |
install_components: gke-gcloud-auth-plugin | |
- name: Install gotestfmt | |
uses: jaxxstorm/[email protected] | |
with: | |
repo: gotesttools/gotestfmt | |
- name: Install dependencies | |
run: make ensure | |
- if: contains(matrix.platform, 'windows') | |
name: Run Windows tests | |
shell: bash | |
run: | | |
set -euo pipefail | |
cd tests && go test -v -json -count=1 -cover -timeout 6h -parallel ${{ env.TESTPARALLELISM }} . 2>&1 | gotestfmt | |
env: | |
PULUMI_PYTHON_CMD: python | |
TESTPARALLELISM: 3 | |
SKIPPED_TESTS: "alicloud,digitalocean,kubernetes,openstack,equinix-metal,civo,aiven,auth0,github,oci,java-jbang,java-gradle,azuredevops,container,vm-azure,fsharp,gcp-visualbasic,azure-classic-visualbasic" | |
- if: contains(matrix.platform, 'ubuntu') | |
name: Run Linux tests | |
run: | | |
set -euo pipefail | |
cd tests && go test -v -json -count=1 -cover -timeout 6h -parallel ${{ env.TESTPARALLELISM }} . 2>&1 | gotestfmt | |
- if: contains(matrix.platform, 'macOS') | |
name: Run macOS tests | |
run: | | |
set -euo pipefail | |
cd tests && go test -v -json -count=1 -cover -timeout 6h -parallel ${{ env.TESTPARALLELISM }} . 2>&1 | gotestfmt | |
env: | |
TESTPARALLELISM: 6 | |
- if: 'failure()' | |
name: Notify Slack | |
uses: 8398a7/action-slack@v3 | |
with: | |
author_name: Failure in ${{ matrix.platform }} template Tests | |
fields: repo,commit,author,action | |
status: ${{ job.status }} |