Skip to content

ping pong controller (#4) #41

ping pong controller (#4)

ping pong controller (#4) #41

Workflow file for this run

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/[email protected]
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