28
28
- name : Send slack message with github commit url
29
29
run : >
30
30
curl -X POST -H 'Content-type: application/json'
31
- --data '{"text":"${{ github.event.head_commit.message }} - https://${{ github.repository }}/commit/${{ github.sha }}"}'
31
+ --data '{"text":":rocket: Deployment started for commit: ${{ github.event.head_commit.message }} - https://github.com /${{ github.repository }}/commit/${{ github.sha }}"}'
32
32
${{ env.SLACK_WEBHOOK_URL }}
33
33
- name : JDK
34
34
if : ${{ github.event.inputs.build_number == '' }}
41
41
if [ -n "${{ github.event.inputs.build_number }}" ]; then
42
42
BUILD_NUMBER=${{ github.event.inputs.build_number }}
43
43
echo "using provided build number: $BUILD_NUMBER"
44
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":package: Using provided build number: $BUILD_NUMBER\"}" ${{ env.SLACK_WEBHOOK_URL }}
44
45
else
45
46
BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
46
47
echo "using generated build number: $BUILD_NUMBER"
48
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":gear: Generated new build number: $BUILD_NUMBER\"}" ${{ env.SLACK_WEBHOOK_URL }}
47
49
fi
48
50
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
49
51
- name : Login to Docker Hub
@@ -54,22 +56,30 @@ jobs:
54
56
- name : Check if provided docker image exists
55
57
if : ${{ github.event.inputs.build_number != '' }}
56
58
run : |
57
- IMAGE_NAME="${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE_NAME }}:$BUILD_NUMBER"
58
- echo "checking if $IMAGE_NAME exists"
59
- if ! docker manifest inspect "$IMAGE_NAME" > /dev/null 2>&1; then
60
- echo "provided image $IMAGE_NAME does not exits. exiting..."
59
+ IMAGE="${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE_NAME }}:$BUILD_NUMBER"
60
+ echo "checking if $IMAGE exists"
61
+ if ! docker manifest inspect "$IMAGE" > /dev/null 2>&1; then
62
+ echo "provided image $IMAGE does not exist. exiting..."
63
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":x: :warning: Provided image $IMAGE does not exist! Exiting deployment...\"}" ${{ env.SLACK_WEBHOOK_URL }}
61
64
exit 1
62
65
fi
63
- echo "provided image $IMAGE_NAME exits ✅"
66
+ echo "provided image $IMAGE exists ✅"
67
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":white_check_mark: Image $IMAGE exists and ready for deployment\"}" ${{ env.SLACK_WEBHOOK_URL }}
68
+ echo "IMAGE=$IMAGE" >> $GITHUB_ENV
69
+
64
70
- name : Maven Clean Verify
65
71
if : ${{ github.event.inputs.build_number == '' }}
66
- run : mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
72
+ run : |
73
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":hammer_and_wrench: Building and deploying to Docker Hub...\"}" ${{ env.SLACK_WEBHOOK_URL }}
74
+ mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
75
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":white_check_mark: Successfully built and pushed to Docker Hub\"}" ${{ env.SLACK_WEBHOOK_URL }}
67
76
- name : Setup SSH Agent
68
77
uses :
webfactory/[email protected]
69
78
with :
70
79
ssh-private-key : ${{ env.EC2_SSH_PRIVATE_KEY }}
71
80
- name : SSH To EC2 and Deploy
72
81
run : |
82
+ curl -X POST -H 'Content-type: application/json' --data '{"text":":cloud: Deploying to AWS EC2..."}' ${{ env.SLACK_WEBHOOK_URL }}
73
83
ssh -o StrictHostKeyChecking=no ec2-user@$EC2_PUBLIC_IP_ADDRESS << EOF
74
84
cd ~
75
85
sed -i 's|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':.*$|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':'"$BUILD_NUMBER"'|' docker-compose.yml
79
89
docker ps
80
90
echo "$BUILD_NUMBER" > build-number.txt
81
91
EOF
92
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\":tada: Successfully deployed to AWS EC2\"}" ${{ env.SLACK_WEBHOOK_URL }}
82
93
- name : Send slack message with status
83
94
if : always()
84
- run : >
85
- curl -X POST -H 'Content-type: application/json'
86
- --data '{"text":"Job status ${{ job.status }}"}'
87
- ${{ env.SLACK_WEBHOOK_URL }}
95
+ run : |
96
+ if [ "${{ job.status }}" == "success" ]; then
97
+ EMOJI=":tada:"
98
+ MESSAGE="Deployment completed successfully!"
99
+ else
100
+ EMOJI=":x:"
101
+ MESSAGE="Deployment failed!"
102
+ fi
103
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$EMOJI $MESSAGE - Job status: ${{ job.status }}\"}" ${{ env.SLACK_WEBHOOK_URL }}
0 commit comments