diff --git a/spinup-destroy.yml b/spinup-destroy.yml new file mode 100644 index 0000000..2ba520a --- /dev/null +++ b/spinup-destroy.yml @@ -0,0 +1,67 @@ +name: Configure Azure environment + +on: + pull_request: + types: [labeled] + +env: + IMAGE_REGISTRY_URL: ghcr.io + AZURE_RESOURCE_GROUP: cd-with-actions + AZURE_APP_PLAN: actions-ttt-deployment + AZURE_LOCATION: '"East US"' + ############################################### + ### Replace with GitHub username ### + ############################################### + AZURE_WEBAPP_NAME: -ttt-app + +jobs: + setup-up-azure-resources: + runs-on: ubuntu-latest + if: contains(github.event.pull_request.labels.*.name, 'spin up environment') + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Azure login + uses: azure/login@v2 + with: + creds: ${{ secrets.AZURE_CREDENTIALS_MSA741 }} + + - name: Create Azure resource group + if: success() + run: | + az group create --location ${{env.AZURE_LOCATION}} --name ${{env.AZURE_RESOURCE_GROUP}} --subscription ${{secrets.AZURE_SUBSCRIPTION_ID}} + + - name: Create Azure app service plan + if: success() + run: | + az appservice plan create --resource-group ${{env.AZURE_RESOURCE_GROUP}} --name ${{env.AZURE_APP_PLAN}} --is-linux --sku F1 --subscription ${{secrets.AZURE_SUBSCRIPTION_ID}} + + - name: Create webapp resource + if: success() + run: | + az webapp create --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --plan ${{ env.AZURE_APP_PLAN }} --name ${{ env.AZURE_WEBAPP_NAME }} --deployment-container-image-name nginx --subscription ${{secrets.AZURE_SUBSCRIPTION_ID}} + + - name: Configure webapp to use GHCR + if: success() + run: | + az webapp config container set --docker-custom-image-name nginx --docker-registry-server-password ${{secrets.CR_PAT}} --docker-registry-server-url https://${{env.IMAGE_REGISTRY_URL}} --docker-registry-server-user ${{github.actor}} --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.AZURE_RESOURCE_GROUP }} --subscription ${{secrets.AZURE_SUBSCRIPTION_ID}} + + destroy-azure-resources: + runs-on: ubuntu-latest + + if: contains(github.event.pull_request.labels.*.name, 'destroy environment') + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Azure login + uses: azure/login@v2 + with: + creds: ${{ secrets.AZURE_CREDENTIALS_MSA741 }} + + - name: Destroy Azure environment + if: success() + run: | + az group delete --name ${{env.AZURE_RESOURCE_GROUP}} --subscription ${{secrets.AZURE_SUBSCRIPTION_ID}} --yes