Skip to content

Commit 2940f00

Browse files
Add build_docker_image parameter to deployment workflow and update image handling logic
1 parent 1c00d6f commit 2940f00

1 file changed

Lines changed: 45 additions & 16 deletions

File tree

.github/workflows/deploy-unified.yml

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ on:
3232
required: false
3333
default: ''
3434
type: string
35+
build_docker_image:
36+
description: 'Build and push new Docker image'
37+
required: false
38+
default: true
39+
type: boolean
3540

3641

3742

@@ -43,6 +48,7 @@ env:
4348
EXP: ${{ github.event.inputs.EXP || false }}
4449
CLEANUP_RESOURCES: ${{ github.event.inputs.cleanup_resources || true }}
4550
RUN_E2E_TESTS: ${{ github.event.inputs.run_e2e_tests || true }}
51+
BUILD_DOCKER_IMAGE: ${{ github.event.inputs.build_docker_image || false }}
4652

4753
jobs:
4854
deploy:
@@ -194,28 +200,39 @@ jobs:
194200
- name: Generate Unique Docker Image Tag
195201
id: generate_docker_tag
196202
run: |
197-
# Generate unique tag for manual deployment runs
198-
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
199-
RUN_ID="${{ github.run_id }}"
200-
BRANCH_NAME="${{ env.BRANCH_NAME }}"
201-
# Sanitize branch name for Docker tag (replace invalid characters with hyphens)
202-
CLEAN_BRANCH_NAME=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9._-]/-/g' | sed 's/--*/-/g' | sed 's/^-\|-$//g')
203-
UNIQUE_TAG="${CLEAN_BRANCH_NAME}-${TIMESTAMP}-${RUN_ID}"
204-
echo "IMAGE_TAG=$UNIQUE_TAG" >> $GITHUB_ENV
205-
echo "IMAGE_TAG=$UNIQUE_TAG" >> $GITHUB_OUTPUT
206-
echo "Generated unique Docker tag: $UNIQUE_TAG"
203+
if [[ "${{ env.BUILD_DOCKER_IMAGE }}" == "true" ]]; then
204+
echo "🔨 Building new Docker image - generating unique tag..."
205+
# Generate unique tag for manual deployment runs
206+
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
207+
RUN_ID="${{ github.run_id }}"
208+
BRANCH_NAME="${{ env.BRANCH_NAME }}"
209+
# Sanitize branch name for Docker tag (replace invalid characters with hyphens)
210+
CLEAN_BRANCH_NAME=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9._-]/-/g' | sed 's/--*/-/g' | sed 's/^-\|-$//g')
211+
UNIQUE_TAG="${CLEAN_BRANCH_NAME}-${TIMESTAMP}-${RUN_ID}"
212+
echo "IMAGE_TAG=$UNIQUE_TAG" >> $GITHUB_ENV
213+
echo "IMAGE_TAG=$UNIQUE_TAG" >> $GITHUB_OUTPUT
214+
echo "Generated unique Docker tag: $UNIQUE_TAG"
215+
else
216+
echo "🏷️ Using existing Docker image with tag: latest_waf"
217+
echo "IMAGE_TAG=latest_waf" >> $GITHUB_ENV
218+
echo "IMAGE_TAG=latest_waf" >> $GITHUB_OUTPUT
219+
echo "Using existing Docker image tag: latest_waf"
220+
fi
207221
208222
- name: Set up Docker Buildx
223+
if: env.BUILD_DOCKER_IMAGE == true
209224
uses: docker/setup-buildx-action@v3
210225

211226
- name: Log in to Azure Container Registry
227+
if: env.BUILD_DOCKER_IMAGE == true
212228
uses: azure/docker-login@v2
213229
with:
214230
login-server: ${{ secrets.ACR_DEV_LOGIN_SERVER }}
215231
username: ${{ secrets.ACR_DEV_USERNAME }}
216232
password: ${{ secrets.ACR_DEV_PASSWORD }}
217233

218234
- name: Build and Push Docker Image
235+
if: env.BUILD_DOCKER_IMAGE == true
219236
id: build_push_image
220237
uses: docker/build-push-action@v6
221238
with:
@@ -227,11 +244,18 @@ jobs:
227244
${{ secrets.ACR_DEV_LOGIN_SERVER }}/webapp:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}_${{ github.run_number }}
228245
229246
- name: Verify Docker Image Build
247+
if: env.BUILD_DOCKER_IMAGE == true
230248
run: |
231249
echo "✅ Docker image successfully built and pushed"
232250
echo "Image tag: ${{ env.IMAGE_TAG }}"
233251
echo "Run number: ${{ github.run_number }}"
234252
253+
- name: Verify Docker Image Selection
254+
if: env.BUILD_DOCKER_IMAGE == false
255+
run: |
256+
echo "✅ Using existing Docker image: latest_waf"
257+
echo "Image tag: ${{ env.IMAGE_TAG }}"
258+
235259
- name: Generate Unique Environment Name
236260
id: generate_env_name
237261
run: |
@@ -294,10 +318,15 @@ jobs:
294318
azd env set AZURE_RESOURCE_GROUP="$RESOURCE_GROUP_NAME"
295319
azd env set AZURE_ENV_IMAGETAG="${{ env.IMAGE_TAG }}"
296320
297-
# Extract ACR name from login server and set as environment variable
298-
ACR_NAME=$(echo "${{ secrets.ACR_DEV_LOGIN_SERVER }}" | cut -d'.' -f1)
299-
azd env set AZURE_ENV_ACR_NAME="$ACR_NAME"
300-
echo "Set ACR name to: $ACR_NAME"
321+
# Set ACR name only when building Docker image
322+
if [[ "${{ env.BUILD_DOCKER_IMAGE }}" == "true" ]]; then
323+
# Extract ACR name from login server and set as environment variable
324+
ACR_NAME=$(echo "${{ secrets.ACR_DEV_LOGIN_SERVER }}" | cut -d'.' -f1)
325+
azd env set AZURE_ENV_ACR_NAME="$ACR_NAME"
326+
echo "Set ACR name to: $ACR_NAME"
327+
else
328+
echo "Skipping ACR name configuration (using existing image)"
329+
fi
301330
302331
if [[ "${{ env.EXP }}" == "true" ]]; then
303332
echo "✅ EXP ENABLED - Setting EXP parameters..."
@@ -450,7 +479,7 @@ jobs:
450479
set -e
451480
echo "🗑️ Cleaning up Docker images from Azure Container Registry..."
452481
453-
if [[ -n "${{ env.IMAGE_TAG }}" ]]; then
482+
if [[ -n "${{ env.IMAGE_TAG }}" && "${{ env.IMAGE_TAG }}" != "latest_waf" ]]; then
454483
echo "Deleting Docker images with tag: ${{ env.IMAGE_TAG }}"
455484
456485
# Delete the main image
@@ -465,7 +494,7 @@ jobs:
465494
466495
echo "✅ Docker images cleanup completed"
467496
else
468-
echo "⚠️ No IMAGE_TAG found, skipping Docker image cleanup"
497+
echo "⚠️ Skipping Docker image cleanup (using latest_waf or no custom image tag)"
469498
fi
470499
471500
- name: Select Environment

0 commit comments

Comments
 (0)