Skip to content

Commit 654dddd

Browse files
Add Continuous Deployment with AWS
1 parent 6d3aa90 commit 654dddd

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

.github/workflows/deploy.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Deploy Workflow
2+
on:
3+
push:
4+
branches:
5+
- main
6+
jobs:
7+
build-and-deploy:
8+
runs-on: ubuntu-latest
9+
env:
10+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
11+
DOCKER_IMAGE_NAME: product-service
12+
DOCKER_COMPOSE_APP_SERVICE_NAME: product-service
13+
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
14+
EC2_SSH_PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
15+
EC2_PUBLIC_IP_ADDRESS: ${{ secrets.EC2_PUBLIC_IP_ADDRESS }}
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
- name: JDK
21+
uses: actions/setup-java@v4
22+
with:
23+
distribution: 'temurin'
24+
java-version: '21'
25+
- name: Generate Build Number
26+
run: |
27+
BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
28+
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
29+
echo "Generated Build Number: $BUILD_NUMBER"
30+
- name: Login to Docker Hub
31+
uses: docker/login-action@v3
32+
with:
33+
username: ${{ env.DOCKER_USERNAME }}
34+
password: ${{ env.DOCKER_PASSWORD }}
35+
- name: Maven Clean Verify
36+
run: mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
37+
- name: Setup SSH Agent
38+
uses: webfactory/ssh-agent@v0.9.0
39+
with:
40+
ssh-private-key: ${{ env.EC2_SSH_PRIVATE_KEY }}
41+
- name: SSH To EC2 and Deploy
42+
run: |
43+
ssh -o StrictHostKeyChecking=no ec2-user@$EC2_PUBLIC_IP_ADDRESS << EOF
44+
cd ~
45+
sed -i 's|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':.*$|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':'"$BUILD_NUMBER"'|' docker-compose.yml
46+
docker-compose pull
47+
docker-compose up -d '$DOCKER_COMPOSE_APP_SERVICE_NAME'
48+
docker image prune -f
49+
docker ps
50+
echo "$BUILD_NUMBER" > build-number.txt
51+
EOF

0 commit comments

Comments
 (0)