Run Examples Cron Job #1256
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 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@v4 | |
- 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@v4 | |
- 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.19.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@v4 | |
- 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.19.x | |
nodeversion: | |
- 16.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: | |
- 16.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 Latest Stable Pulumi CLI | |
uses: pulumi/actions@v4 | |
- 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 | |
examples-test-matrix: | |
- default | |
goversion: | |
- 1.19.x | |
languages: | |
- Cs | |
- Js | |
- Ts | |
- Py | |
- Fs | |
nodeversion: | |
- 16.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@v4 | |
- 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@v4 | |
- 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.19.x | |
nodeversion: | |
- 16.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@v4 | |
- 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.19.x | |
nodeversion: | |
- 16.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@v3 | |
- name: Setup Node | |
uses: actions/setup-node@v2 | |
with: | |
node-version: ${{matrix.nodeversion}} | |
registry-url: https://registry.npmjs.org | |
- name: Install Pulumi CLI | |
uses: pulumi/actions@v4 | |
- name: Print CLI version | |
run: echo "Currently Pulumi $(pulumi version) is installed" | |
- run: |- | |
npm install | |
npm install --global mocha | |
npm install --global ts-node | |
mocha -r ts-node/register ec2tests.ts | |
mocha -r ts-node/register bucket_pair_test.ts | |
working-directory: ${{ matrix.source-dir }}/mocha | |
strategy: | |
fail-fast: false | |
matrix: | |
nodeversion: | |
- 16.x | |
platform: | |
- ubuntu-latest | |
source-dir: | |
- testing-unit-ts |