From 7316eaebae2212ceddfe304637ab01fc193c8186 Mon Sep 17 00:00:00 2001 From: Ash Davies <3853061+DrizzlyOwl@users.noreply.github.com> Date: Wed, 18 Dec 2024 13:46:29 +0000 Subject: [PATCH] Build and deploy a Container Image to Azure Container Apps --- .github/workflows/build-and-push-image.yml | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/build-and-push-image.yml diff --git a/.github/workflows/build-and-push-image.yml b/.github/workflows/build-and-push-image.yml new file mode 100644 index 0000000..042a159 --- /dev/null +++ b/.github/workflows/build-and-push-image.yml @@ -0,0 +1,90 @@ +name: Deploy + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + environment: + type: environment + description: "Choose an environment to deploy to" + required: true + +concurrency: + group: ${{ github.workflow }}-${{ github.event.inputs.environment }} + +jobs: + set-env: + name: Determine environment + runs-on: ubuntu-latest + outputs: + environment: ${{ steps.var.outputs.environment }} + release: ${{ steps.var.outputs.release }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - id: var + run: | + INPUT=${{ github.event.inputs.environment }} + ENVIRONMENT=${INPUT:-"development"} + RELEASE=${ENVIRONMENT,,}-`date +%Y-%m-%d`.${{ github.run_number }} + echo "environment=${ENVIRONMENT,,}" >> $GITHUB_OUTPUT + echo "release=${RELEASE}" >> $GITHUB_OUTPUT + + deploy-image: + permissions: + id-token: write + contents: read + packages: write + name: Deploy Container + needs: [ set-env ] + uses: DFE-Digital/deploy-azure-container-apps-action/.github/workflows/build-push-deploy.yml@v3.1.0 + with: + docker-tag-prefix: dotnet + docker-image-name: 'complete-app' + docker-build-file-name: './Dockerfile' + environment: ${{ needs.set-env.outputs.environment }} + annotate-release: false + secrets: + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + azure-acr-client-id: ${{ secrets.ACR_CLIENT_ID }} + azure-acr-name: ${{ secrets.ACR_NAME }} + azure-aca-client-id: ${{ secrets.ACA_CLIENT_ID }} + azure-aca-name: ${{ secrets.ACA_CONTAINERAPP_NAME }} + azure-aca-resource-group: ${{ secrets.ACA_RESOURCE_GROUP }} + + create-tag: + name: Tag and release + needs: [ set-env, deploy-image ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Create tag + run: | + git tag ${{ needs.set-env.outputs.release }} + git push origin ${{ needs.set-env.outputs.release }} + + - name: Create release + uses: "actions/github-script@v7" + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + script: | + try { + await github.rest.repos.createRelease({ + draft: false, + generate_release_notes: true, + name: "${{ needs.set-env.outputs.release }}", + owner: context.repo.owner, + prerelease: false, + repo: context.repo.repo, + tag_name: "${{ needs.set-env.outputs.release }}", + }); + } catch (error) { + core.setFailed(error.message); + }