diff --git a/.github/workflows/multi-job.yaml b/.github/workflows/multi-job.yaml new file mode 100644 index 000000000..c078c1952 --- /dev/null +++ b/.github/workflows/multi-job.yaml @@ -0,0 +1,62 @@ +name: Multi-Job CI/CD Pipeline + +on: [push, pull_request] + +jobs: + test: + name: Run Tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 17 + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Run Tests + run: ./gradlew test + + build: + name: Build App + runs-on: ubuntu-latest + needs: test + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 17 + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Build App + run: ./gradlew build + + docker_push: + name: Push to Docker Hub + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Docker Hub Login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and Push Docker Image + run: | + docker build -t ${{ secrets.DOCKER_USERNAME }}/spring-petclinic:latest . + docker push ${{ secrets.DOCKER_USERNAME }}/spring-petclinic:latest