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
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
4753jobs :
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