3
3
push :
4
4
branches :
5
5
- main
6
+ workflow_dispatch :
7
+ inputs :
8
+ build_number :
9
+ description : ' Build number to deploy (optional)'
10
+ required : false
11
+ type : string
12
+
6
13
jobs :
7
14
build-and-deploy :
8
15
runs-on : ubuntu-latest
@@ -15,25 +22,54 @@ jobs:
15
22
EC2_PUBLIC_IP_ADDRESS : ${{ secrets.EC2_PUBLIC_IP_ADDRESS }}
16
23
17
24
steps :
18
- - name : Checkout
25
+ - name : Checkout (only if no build number provided)
26
+ if : ${{ github.event.inputs.build_number == '' }}
19
27
uses : actions/checkout@v4
20
- - name : JDK
28
+
29
+ - name : JDK (only if no build number provided)
30
+ if : ${{ github.event.inputs.build_number == '' }}
21
31
uses : actions/setup-java@v4
22
32
with :
23
33
distribution : ' temurin'
24
34
java-version : ' 21'
35
+
25
36
- name : Generate Build Number
37
+ id : build_number
26
38
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
28
46
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
29
- echo "Generated Build Number: $BUILD_NUMBER"
47
+ echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
48
+
30
49
- name : Login to Docker Hub
31
50
uses : docker/login-action@v3
32
51
with :
33
52
username : ${{ env.DOCKER_USERNAME }}
34
53
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
+
37
73
- name : Setup SSH Agent
38
74
uses :
webfactory/[email protected]
39
75
with :
0 commit comments