33 push :
44 branches :
55 - main
6+ workflow_dispatch :
7+ inputs :
8+ build_number :
9+ description : ' Build number to deploy (optional)'
10+ required : false
11+ type : string
12+
613jobs :
714 build-and-deploy :
815 runs-on : ubuntu-latest
@@ -15,25 +22,54 @@ jobs:
1522 EC2_PUBLIC_IP_ADDRESS : ${{ secrets.EC2_PUBLIC_IP_ADDRESS }}
1623
1724 steps :
18- - name : Checkout
25+ - name : Checkout (only if no build number provided)
26+ if : ${{ github.event.inputs.build_number == '' }}
1927 uses : actions/checkout@v4
20- - name : JDK
28+
29+ - name : JDK (only if no build number provided)
30+ if : ${{ github.event.inputs.build_number == '' }}
2131 uses : actions/setup-java@v4
2232 with :
2333 distribution : ' temurin'
2434 java-version : ' 21'
35+
2536 - name : Generate Build Number
37+ id : build_number
2638 run : |
27- BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
39+ if [ -n "${{ github.event.inputs.build_number }}" ]; then
40+ BUILD_NUMBER="${{ github.event.inputs.build_number }}"
41+ echo "Using provided build number: $BUILD_NUMBER"
42+ else
43+ BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
44+ echo "Generated Build Number: $BUILD_NUMBER"
45+ fi
2846 echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
29- echo "Generated Build Number: $BUILD_NUMBER"
47+ echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
48+
3049 - name : Login to Docker Hub
3150 uses : docker/login-action@v3
3251 with :
3352 username : ${{ env.DOCKER_USERNAME }}
3453 password : ${{ env.DOCKER_PASSWORD }}
35- - name : Maven Clean Verify
36- run : mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
54+
55+ - name : Check if Docker image exists
56+ id : check_image
57+ run : |
58+ IMAGE_NAME="${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE_NAME }}:${{ steps.build_number.outputs.build_number }}"
59+ echo "Checking if image exists: $IMAGE_NAME"
60+
61+ if docker manifest inspect "$IMAGE_NAME" >/dev/null 2>&1; then
62+ echo "Image exists: $IMAGE_NAME"
63+ echo "image_exists=true" >> $GITHUB_OUTPUT
64+ else
65+ echo "Image does not exist: $IMAGE_NAME"
66+ echo "image_exists=false" >> $GITHUB_OUTPUT
67+ fi
68+
69+ - name : Maven Clean Verify (only if no build number provided and image doesn't exist)
70+ if : ${{ github.event.inputs.build_number == '' && steps.check_image.outputs.image_exists == 'false' }}
71+ run : mvn -B -ntp clean verify jib:build -Ddocker.image.tag=${{ steps.build_number.outputs.build_number }}
72+
3773 - name : Setup SSH Agent
3874 uses :
webfactory/[email protected] 3975 with :
0 commit comments