From 20b863a2d34392dd3c877933e72a2a511e54910d Mon Sep 17 00:00:00 2001 From: Aiman Zafar Date: Tue, 26 Nov 2024 14:42:18 +0500 Subject: [PATCH] Update maven-build.yml --- .github/workflows/maven-build.yml | 110 ++++++++++++++++-------------- 1 file changed, 58 insertions(+), 52 deletions(-) diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 681d36308..ed66ebd67 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -1,10 +1,14 @@ -name: CI/CD Pipelineson: +name: CI/CD Pipeline + +on: push: branches: - main pull_request: branches: - - mainjobs: + - main + +jobs: setup: runs-on: self-hosted steps: @@ -13,8 +17,8 @@ name: CI/CD Pipelineson: if ! command -v git &> /dev/null then echo "Git not found, installing..." - sudo apt-get update - sudo apt-get install -y git + sudo yum update -y + sudo yum install -y git else echo "Git is already installed." fi @@ -23,37 +27,20 @@ name: CI/CD Pipelineson: if ! command -v docker &> /dev/null then echo "Docker not found, installing..." - sudo apt-get update - sudo apt-get install -y \ - apt-transport-https \ - ca-certificates \ - curl \ - gnupg-agent \ - software-properties-common && \ - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \ - sudo apt-get update && \ - sudo apt-get install -y docker-ce docker-ce-cli containerd.io + sudo yum update -y + sudo yum install -y docker + sudo systemctl start docker + sudo systemctl enable docker else echo "Docker is already installed." fi - - name: Check for Docker Compose - run: | - if ! command -v docker-compose &> /dev/null - then - echo "Docker Compose not found, installing..." - sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - else - echo "Docker Compose is already installed." - fi - name: Check for Maven run: | if ! command -v mvn &> /dev/null then echo "Maven not found, installing..." - sudo apt-get update - sudo apt-get install -y maven + sudo yum update -y + sudo yum install -y maven else echo "Maven is already installed." fi @@ -62,57 +49,76 @@ name: CI/CD Pipelineson: echo "Validating installation..." command -v git command -v docker - command -v docker-compose - command -v mvn build: + command -v mvn + + build: runs-on: self-hosted needs: setup steps: - name: Checkout code - uses: actions/checkout@v3 - name: Build with Maven - run: ./mvnw -B package test: + uses: actions/checkout@v3 + - name: Build with Maven + run: ./mvnw -B package + + test: runs-on: self-hosted needs: build steps: - name: Checkout code - uses: actions/checkout@v3 - name: Run tests - run: ./mvnw test deploy: - runs-on: self-hosted - needs: test - steps: - - name: Checkout code - uses: actions/checkout@v3 - name: Verify JAR file - run: | - echo "Verifying JAR file presence..." - ls -al /home/aiman/spring-petclinic/target/ - if [ -z "$(find /home/aiman/spring-petclinic/target/ -name 'spring-petclinic-3.3.0-SNAPSHOT.jar')" ]; then - echo "JAR file not found in target directory!" - exit 1 - fi - name: Setup SSH + uses: actions/checkout@v3 + - name: Run tests + run: ./mvnw test + + deploy: + runs-on: self-hosted + needs: test + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Verify JAR file + run: | + echo "Verifying JAR file presence..." + # List the files in the target directory + ls -al /home/aiman/Documents/CI-CD/spring-petclinic/actions-runner/_work/spring-petclinic/spring-petclinic/target/ + + # Check if the JAR file exists and display a message if not + JAR_PATH="/home/aiman/Documents/CI-CD/spring-petclinic/actions-runner/_work/spring-petclinic/spring-petclinic/target/spring-petclinic-3.3.0-SNAPSHOT.jar" + if [ ! -f "$JAR_PATH" ]; then + echo "JAR file not found at $JAR_PATH" + exit 1 + else + echo "JAR file found at $JAR_PATH" + fi + + - name: Setup SSH run: | echo "Setting up SSH..." mkdir -p ~/.ssh chmod 700 ~/.ssh echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts || true - name: Deploy application + ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts || true + - name: Deploy application env: - DEPLOY_SERVER: '103.151.111.242' + DEPLOY_SERVER: '192.168.1.199' DEPLOY_PORT: '8080' DEPLOY_USER: 'aiman' SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | echo "Deploying application to $DEPLOY_SERVER" - scp -i ~/.ssh/id_rsa /home/aiman/spring-petclinic/target/spring-petclinic-3.3.0-SNAPSHOT.jar $DEPLOY_USER@$DEPLOY_SERVER:/home/aiman/spring-petclinic/ - ssh -i ~/.ssh/id_rsa $DEPLOY_USER@$DEPLOY_SERVER "nohup java -jar /home/aiman/spring-petclinic/spring-petclinic-3.3.0-SNAPSHOT.jar > /dev/null 2>&1 &" - rm -f ~/.ssh/id_rsa - name: Wait for application to start + scp -i ~/.ssh/id_rsa /home/aiman/Documents/CI-CD/spring-petclinic/actions-runner/_work/spring-petclinic/spring-petclinic/target/spring-petclinic-3.3.0-SNAPSHOT.jar $DEPLOY_USER@$DEPLOY_SERVER:/home/aiman/deployments/ + ssh -i ~/.ssh/id_rsa $DEPLOY_USER@$DEPLOY_SERVER "nohup java -jar /home/aiman/deployments/spring-petclinic-3.3.0-SNAPSHOT.jar > /dev/null 2>&1 &" + rm -f ~/.ssh/id_rsa + - name: Wait for application to start run: | echo "Waiting for application to start..." for i in {1..30}; do - if curl -s http://103.151.111.242:8080 > /dev/null; then + if curl -s http://192.168.1.199:8080 > /dev/null; then echo "Application is up!" break else echo "Application is not up yet, retrying in 10 seconds..." sleep 10 fi - done \ No newline at end of file + done