Run Template Tests Against Pulumi CLI #1192
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: Run Template Tests Against Pulumi CLI | |
on: | |
schedule: | |
- cron: '0 8 * * *' | |
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 | |
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: | |
build: | |
name: Build | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-latest, macOS-latest, windows-8core-2022] | |
go-version: [1.21.x] | |
node-version: [18.x] | |
python-version: [3.8] | |
dotnet: [6.0.x] | |
pulumi-version: | |
- dev | |
runs-on: ${{ matrix.platform }} | |
permissions: | |
contents: read | |
id-token: write | |
steps: | |
- name: Install Java 11 (temurin) | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Install DotNet ${{ matrix.dotnet }} | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: ${{ matrix.dotnet }} | |
- if: contains(matrix.platform, 'ubuntu') || contains(matrix.platform, 'windows') | |
name: DotNet clean on windows and ubuntu | |
run: | | |
dotnet nuget locals all --clear | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Set up Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Install Pulumi CLI | |
uses: pulumi/actions@v5 | |
with: | |
pulumi-version: ${{ matrix.pulumi-version }} | |
- run: echo "Currently Pulumi $(pulumi version) is installed" | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python Deps | |
run: | | |
pip3 install pyenv-win | |
pip3 install pipenv | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v3 | |
- name: Unshallow clone for tags | |
run: git fetch --prune --unshallow --tags | |
- 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: 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@v0 | |
with: | |
workload_identity_provider: projects/${{ env.GOOGLE_PROJECT_NUMBER }}/locations/global/workloadIdentityPools/${{ env.GOOGLE_CI_WORKLOAD_IDENTITY_POOL }}/providers/${{ env.GOOGLE_CI_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ env.GOOGLE_CI_SERVICE_ACCOUNT_EMAIL }} | |
- name: Setup gcloud auth | |
uses: google-github-actions/setup-gcloud@v0 | |
with: | |
install_components: gke-gcloud-auth-plugin | |
- name: Install gotestfmt | |
uses: jaxxstorm/[email protected] | |
with: | |
repo: gotesttools/gotestfmt | |
- name: Get dependencies | |
run: make ensure | |
- if: contains(matrix.platform, 'windows') | |
name: Running 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, 'macOS') || contains(matrix.platform, 'ubuntu') | |
name: Running non-Windows tests | |
run: | | |
set -euo pipefail | |
cd tests && go test -v -json -count=1 -cover -timeout 6h -parallel ${{ env.TESTPARALLELISM }} . 2>&1 | gotestfmt | |
- 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 }} |