Purge test resources #587
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: Purge test resources | |
on: | |
schedule: | |
- cron: "30 0,12 * * *" | |
env: | |
AZURE_RG_DELETE_LIST_FILE: "az_rg_list.txt" | |
VALID_RESOURCE_WINDOW: 6*60*60 | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | |
purge_azure_resources: | |
name: Azure resources clean-ups | |
runs-on: [ubuntu-latest] | |
steps: | |
- name: Login to Azure | |
run: | | |
az login --service-principal \ | |
--username ${{ secrets.AZURE_SP_TESTS_APPID }} \ | |
--password ${{ secrets.AZURE_SP_TESTS_PASSWORD }} \ | |
--tenant ${{ secrets.AZURE_SP_TESTS_TENANTID }} | |
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTIONID_TESTS }} | |
- name: List Test Resource Groups | |
run: | | |
echo "## Test resource group list" >> $GITHUB_STEP_SUMMARY | |
az group list --query "[?starts_with(name, 'rg-samplestest-')].{Name:name, creationTime:tags.creationTime}" -o json > resource_groups.json | |
current_time=$(date +%s) | |
hours_ago=$((current_time - ${{ env.VALID_RESOURCE_WINDOW }})) | |
# This jq command processes the data in 'resource_groups.json'. | |
# For each object in the JSON array, it checks if the 'creationTime' property is null or less than the value of 'hours_ago'. | |
# Note that the 'creationTime' is converted to a number for the comparison. | |
# Then the name of the resource group is written to the file specified by the 'AZURE_RG_DELETE_LIST_FILE' environment variable. | |
jq -r '.[] | select(.creationTime == null // (.creationTime | tonumber) < '$hours_ago') | .Name' resource_groups.json > ${{ env.AZURE_RG_DELETE_LIST_FILE}} | |
# This jq command also processes the data in 'resource_groups.json'. | |
# For each object in the JSON array, it outputs a string containing the 'Name' property, and the 'creationTime' property. | |
# If 'creationTime' is null, it outputs the string "None" instead. | |
jq -r '.[] | "\(.Name) \(.creationTime // "None")"' resource_groups.json > $GITHUB_STEP_SUMMARY | |
- name: Delete Azure Resource Groups | |
run: | | |
echo "## Deleting resource group list" >> $GITHUB_STEP_SUMMARY | |
cat ${{ env.AZURE_RG_DELETE_LIST_FILE}} | while read -r line | |
do | |
echo " * $line" >> $GITHUB_STEP_SUMMARY | |
az group delete --resource-group $line --yes --verbose | |
done | |
- name: Create GitHub issue on failure | |
if: failure() | |
run: | | |
gh issue create --title "Samples purge test resources failed" \ | |
--body "Test failed on ${{ github.repository }}. See [workflow logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details." \ | |
--repo ${{ github.repository }} |