Skip to content

Docker-WebApp

Docker-WebApp #8

name: Docker-WebApp
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to run tests against'
type: environment
required: true
env:
DOCKER_FILE: "./src/docker/web-app/Dockerfile"
DOCKER_IMAGE_NAME: "relecloud-web-app"
DOCKER_WORKING_DIRECTORY: "./src/dotnet"
TERRAFORM_VERSION: '1.5.7'
jobs:
build:
runs-on: ubuntu-latest
environment:
name: ${{ github.event.inputs.environment }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- id: setup
name: Setup `terraform`
uses: hashicorp/setup-terraform@v2
with:
terraform_version: ${{ env.TERRAFORM_VERSION }}
terraform_wrapper: false
- id: terraform
name: Terraform Output
env:
ARM_SUBSCRIPTION_ID: ${{ vars.ARM_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ vars.ARM_TENANT_ID }}
ARM_CLIENT_ID: ${{ vars.TERRAFORM_ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.TERRAFORM_ARM_CLIENT_SECRET }}
TF_VAR_application_name: ${{ vars.APPLICATION_NAME }}
TF_VAR_environment_name: ${{ vars.ENVIRONMENT_NAME }}
working-directory: ${{ vars.TERRAFORM_WORKING_DIRECTORY }}
run: |
terraform init \
-backend-config="resource_group_name=${{ vars.BACKEND_RESOURCE_GROUP_NAME }}" \
-backend-config="storage_account_name=${{ vars.BACKEND_STORAGE_ACCOUNT_NAME }}" \
-backend-config="container_name=${{ vars.BACKEND_STORAGE_CONTAINER_NAME }}" \
-backend-config="key=${{ vars.APPLICATION_NAME }}-${{ vars.ENVIRONMENT_NAME }}"
terraform apply -refresh-only
registry_endpoint=$(terraform output -raw registry_endpoint)
echo $registry_endpoint
echo "registry_endpoint=$registry_endpoint" >> "$GITHUB_OUTPUT"
- name: Copy file from DOCKER_FILE to WORKING_DIRECTORY
run: cp $DOCKER_FILE $DOCKER_WORKING_DIRECTORY
- id: image-version
name: Generate Version Number
run: |
echo "version=$(date +'%Y.%m').${{ github.run_number }}" >> "$GITHUB_OUTPUT"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Azure Container Registry
uses: docker/login-action@v3
with:
registry: ${{ steps.terraform.outputs.registry_endpoint }}
username: ${{ vars.AZURE_REGISTRY_USERNAME }}
password: ${{ secrets.AZURE_REGISTRY_PASSWORD }}
- name: Build and push Docker image to ACR
uses: docker/build-push-action@v5
with:
context: ${{ env.DOCKER_WORKING_DIRECTORY }}
push: true
tags: ${{ steps.terraform.outputs.registry_endpoint }}/${{ env.DOCKER_IMAGE_NAME }}:${{ steps.image-version.outputs.version }}