Add grept-cronjob.yml
#172
Workflow file for this run
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: e2e test | |
on: | |
pull_request: | |
types: ['opened', 'reopened', 'synchronize'] | |
merge_group: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
id-token: write | |
jobs: | |
getexamples: | |
if: github.event.repository.name != 'terraform-azurerm-avm-template' | |
runs-on: ubuntu-latest | |
outputs: | |
examples: ${{ steps.getexamples.outputs.examples }} | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 | |
- name: get examples | |
id: getexamples | |
uses: Azure/terraform-azurerm-avm-template/.github/actions/e2e-getexamples@main | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
testexamples: | |
if: github.event.repository.name != 'terraform-azurerm-avm-template' | |
runs-on: [ self-hosted, 1ES.Pool=terraform-azurerm-avm-template ] | |
needs: getexamples | |
environment: test | |
env: | |
TF_IN_AUTOMATION: 1 | |
TF_VAR_enable_telemetry: false | |
strategy: | |
matrix: | |
example: ${{ fromJson(needs.getexamples.outputs.examples) }} | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 | |
- name: Test example | |
shell: bash | |
env: | |
SECRETS_CONTEXT: ${{ toJson(secrets) }} | |
VARS_CONTEXT: ${{ toJson(vars) }} | |
run: | | |
set -e | |
MAX_RETRIES=10 | |
RETRY_COUNT=0 | |
until [ $RETRY_COUNT -ge $MAX_RETRIES ] | |
do | |
az login --identity --username $MSI_ID > /dev/null && break | |
RETRY_COUNT=$[$RETRY_COUNT+1] | |
sleep 10 | |
done | |
if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then | |
echo "Failed to login after $MAX_RETRIES attempts." | |
exit 1 | |
fi | |
declare -A secrets | |
eval "$(echo $SECRETS_CONTEXT | jq -r 'to_entries[] | @sh "secrets[\(.key|tostring)]=\(.value|tostring)"')" | |
declare -A variables | |
eval "$(echo $VARS_CONTEXT | jq -r 'to_entries[] | @sh "variables[\(.key|tostring)]=\(.value|tostring)"')" | |
for key in "${!secrets[@]}"; do | |
if [[ $key = \TF_VAR_* ]]; then | |
lowerKey=$(echo "$key" | tr '[:upper:]' '[:lower:]') | |
finalKey=${lowerKey/tf_var_/TF_VAR_} | |
export "$finalKey"="${secrets[$key]}" | |
fi | |
done | |
for key in "${!variables[@]}"; do | |
if [[ $key = \TF_VAR_* ]]; then | |
lowerKey=$(echo "$key" | tr '[:upper:]' '[:lower:]') | |
finalKey=${lowerKey/tf_var_/TF_VAR_} | |
export "$finalKey"="${variables[$key]}" | |
fi | |
done | |
echo -e "Custom environment variables:\n$(env | grep TF_VAR_ | grep -v ' "TF_VAR_')" | |
export ARM_SUBSCRIPTION_ID=$(az login --identity --username $MSI_ID | jq -r '.[0] | .id') | |
export ARM_TENANT_ID=$(az login --identity --username $MSI_ID | jq -r '.[0] | .tenantId') | |
export ARM_CLIENT_ID=$(az identity list | jq -r --arg MSI_ID "$MSI_ID" '.[] | select(.principalId == $MSI_ID) | .clientId') | |
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/src -w /src --network=host -e TF_IN_AUTOMATION -e TF_VAR_enable_telemetry -e AVM_MOD_PATH=/src -e AVM_EXAMPLE=${{ matrix.example }} -e MSI_ID -e ARM_SUBSCRIPTION_ID -e ARM_TENANT_ID -e ARM_CLIENT_ID -e ARM_USE_MSI=true --env-file <(env | grep TF_VAR_ | grep -v ' "TF_VAR_') mcr.microsoft.com/azterraform:latest make test-example | |
# This job is only run when all the previous jobs are successful. | |
# We can use it for PR validation to ensure all examples have completed. | |
testexamplescomplete: | |
if: github.event.repository.name != 'terraform-azurerm-avm-template' | |
runs-on: ubuntu-latest | |
needs: testexamples | |
steps: | |
- run: echo "All tests passed" |