33 push :
44 branches :
55 - main
6+ workflow_dispatch :
7+ inputs :
8+ build_number :
9+ description : " Docker image tag to be deployed"
10+ required : true
11+ default : " "
612jobs :
713 build-and-deploy :
814 runs-on : ubuntu-latest
@@ -24,28 +30,35 @@ jobs:
2430 java-version : ' 21'
2531 - name : Generate Build Number
2632 run : |
27- BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
33+ if [ -z "${{ github.event.inputs.build_number }}]; then
34+ BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
35+ echo "No build number provided. Using $BUILD_NUMBER"
36+ else
37+ BUILD_NUMBER="${{ github.event.inputs.build_number }}
38+ echo "Using provided build number $BUILD_NUMBER"
39+ fi
2840 echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
29- echo "Generated Build Number: $BUILD_NUMBER"
3041 - name : Login to Docker Hub
42+ if : ${{ github.event.inputs.build_number == '' }}
3143 uses : docker/login-action@v3
3244 with :
3345 username : ${{ env.DOCKER_USERNAME }}
3446 password : ${{ env.DOCKER_PASSWORD }}
3547 - name : Maven Clean Verify
48+ if : ${{ github.event.inputs.build_number == '' }}
3649 run : mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
3750 - name : Setup SSH Agent
3851 uses :
webfactory/[email protected] 3952 with :
4053 ssh-private-key : ${{ env.EC2_SSH_PRIVATE_KEY }}
4154 - name : SSH To EC2 and Deploy
4255 run : |
43- ssh -o StrictHostKeyChecking=no ec2-user@$EC2_PUBLIC_IP_ADDRESS << EOF
56+ ssh -o StrictHostKeyChecking=no ec2-user@$EC2_PUBLIC_IP_ADDRESS << ' EOF'
4457 cd ~
45- sed -i ' s|image: '"$ DOCKER_USERNAME"'/'"$ DOCKER_IMAGE_NAME"' :.*$|image: '"$ DOCKER_USERNAME"'/'"$ DOCKER_IMAGE_NAME"':'" $BUILD_NUMBER"'|' docker-compose.yml
58+ sed -i " s|image: ${ DOCKER_USERNAME}/${ DOCKER_IMAGE_NAME} :.*$|image: ${ DOCKER_USERNAME}/${ DOCKER_IMAGE_NAME}: $BUILD_NUMBER|" docker-compose.yml
4659 docker-compose pull
4760 docker-compose up -d '$DOCKER_COMPOSE_APP_SERVICE_NAME'
4861 docker image prune -f
4962 docker ps
5063 echo "$BUILD_NUMBER" > build-number.txt
51- EOF
64+ EOF
0 commit comments