Skip to content

Slots Cleanup - Adding new check #148

Slots Cleanup - Adding new check

Slots Cleanup - Adding new check #148

name: Check Active PRs and Slots
on:
schedule:
# Monday at 12 PM UTC - https://cron.help/#0_12_*_*_MON
- cron: "0 12 * * MON"
workflow_dispatch:
pull_request:
branches:
- main
defaults:
run:
shell: pwsh
permissions:
id-token: write
contents: read
jobs:
check-pr-slots:
runs-on: ubuntu-latest
outputs:
slotIDs: ${{ steps.listOfSlots.outputs.slotIDs }}
slotsExistThatRequireDeletion: ${{steps.comparision.outputs.slotsExistThatRequireDeletion }}
steps:
- name: Checking out
uses: actions/checkout@v2
- name: Load .env file
uses: xom9ikk/dotenv@v2
with:
path: ./.github
- name: Azure CLI - Login
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Get list of deployed Slots
id: slotList
run: |
$slots = $(az webapp deployment slot list `
--name ${{ env.APP_SERVICE_NAME }} `
--resource-group ${{env.AZURE_RESOURCE_GROUP }} `
--query '[].name' `
--output tsv | `
sed 's/pr-//g')
echo "slots=$slots" >> $env:GITHUB_OUTPUT
- name: Get list of active PRs
id: prList
run: |
$active_prs=$(curl -s "https://api.github.com/repos/SSWConsulting/SSW.Website/pulls?state=open" | jq -r '.[].number')
echo "active_prs=$active_prs" >> $env:GITHUB_OUTPUT
- name: Compare PRs with Slots
id: comparision
run: |
# Comparing the number of Slots and PRs
$PRList = "${{ steps.PRList.outputs.active_prs }}" -split ' '
$SlotList = "${{ steps.slotList.outputs.slots }}" -split ' '
$slotsExistThatRequireDeletion = $SlotList | Where-Object { $_ -notin $PRList }
$slotsExistThatRequireDeletion ='111 112'
$slotsNeedDeletion = $slotsExistThatRequireDeletion.Length -gt 0
if ( ! $slotsNeedDeletion ) {
echo "✅ - Number of slots are equal to number of active PRs - 🏃 Skipping next step"
}
else {
echo "❌ - Number of slots are not equal to number of active PRs"
}
echo "slotsExistThatRequireDeletion='$slotsExistThatRequireDeletion'" >> $env:GITHUB_OUTPUT
echo "slotsNeedDeletion=$slotsNeedDeletion" >> $env:GITHUB_OUTPUT
- name: Slots
run: |
echo ${{ steps.comparision.outputs.slotsExistThatRequireDeletion }}
- name: List of slots that need to be deleted
if: ${{ steps.comparision.outputs.slotsNeedDeletion == 'True' }}
id: listOfSlots
run: |
# Slots that need to be deleted
$slotsExistThatRequireDeletion = ${{steps.comparision.outputs.slotsExistThatRequireDeletion }}
Write-Host "⚡- These slots need to be deleted : $slotsExistThatRequireDeletion"
echo "slotIDs=$slotsExistThatRequireDeletion" >> $env:GITHUB_OUTPUT
invokeDeleteSlot:
name: Invoking PR Close/Delete
needs:
- check-pr-slots #Adding second check to avoid running this flow for the second time when slotID is already in the memory
if: needs.check-pr-slots.outputs.SlotIDs != '' && needs.check-pr-slots.outputs.slotsExistThatRequireDeletion.Length > 0
uses: ./.github/workflows/pr-close-delete-env.yml
with:
slotIDs: ${{ needs.check-pr-slots.outputs.slotIDs }}
permissions:
id-token: write
contents: read
secrets: inherit