Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Deploy Workflow
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_IMAGE_NAME: product-service
DOCKER_COMPOSE_APP_SERVICE_NAME: product-service
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
EC2_SSH_PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
EC2_PUBLIC_IP_ADDRESS: ${{ secrets.EC2_PUBLIC_IP_ADDRESS }}

steps:
- name: Checkout
uses: actions/checkout@v4
- name: JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Generate Build Number
run: |
BUILD_NUMBER=$(date +'%d%m%Y%H%M%S')
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
echo "Generated Build Number: $BUILD_NUMBER"
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_PASSWORD }}
- name: Maven Clean Verify
run: mvn -B -ntp clean verify jib:build -Ddocker.image.tag=$BUILD_NUMBER
- name: Setup SSH Agent
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ env.EC2_SSH_PRIVATE_KEY }}
- name: SSH To EC2 and Deploy
run: |
ssh -o StrictHostKeyChecking=no ec2-user@$EC2_PUBLIC_IP_ADDRESS << EOF
cd ~
sed -i 's|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':.*$|image: '"$DOCKER_USERNAME"'/'"$DOCKER_IMAGE_NAME"':'"$BUILD_NUMBER"'|' docker-compose.yml
docker-compose pull
docker-compose up -d '$DOCKER_COMPOSE_APP_SERVICE_NAME'
docker image prune -f
docker ps
echo "$BUILD_NUMBER" > build-number.txt
EOF