diff --git a/.github/dco.yml b/.github/dco.yml deleted file mode 100644 index 37e411e1b..000000000 --- a/.github/dco.yml +++ /dev/null @@ -1,2 +0,0 @@ -require: - members: false \ No newline at end of file diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 000000000..443baaf92 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,33 @@ +name: CI/CD - Docker Build & Push + +on: + push: + branches: + - main # or change to your main branch name + pull_request: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: vinayasuresh + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: vinayasuresh/spring-petclinic:latest diff --git a/.github/workflows/deploy-and-test-cluster.yml b/.github/workflows/deploy-and-test-cluster.yml deleted file mode 100644 index 7353a604b..000000000 --- a/.github/workflows/deploy-and-test-cluster.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Deploy and Test Cluster - -on: - push: - branches: [main] - paths: - - 'k8s/**' - pull_request: - branches: [main] - paths: - - 'k8s/**' - -jobs: - deploy-and-test-cluster: - runs-on: ubuntu-latest - steps: - - name: Check out the repository - uses: actions/checkout@v2 - - - name: Create k8s Kind Cluster - uses: helm/kind-action@v1 - - - name: Deploy application - run: | - kubectl apply -f k8s/ - - - name: Wait for Pods to be ready - run: | - kubectl wait --for=condition=ready pod -l app=demo-db --timeout=180s - kubectl wait --for=condition=ready pod -l app=petclinic --timeout=180s - diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml deleted file mode 100644 index c24c121b1..000000000 --- a/.github/workflows/gradle-build.yml +++ /dev/null @@ -1,31 +0,0 @@ -# This workflow will build a Java project with Gradle, and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle - -name: Java CI with Gradle - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - java: [ '17' ] - - steps: - - uses: actions/checkout@v4 - - name: Set up JDK ${{matrix.java}} - uses: actions/setup-java@v4 - with: - java-version: ${{matrix.java}} - distribution: 'adopt' - cache: maven - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - name: Build with Gradle - run: ./gradlew build diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml deleted file mode 100644 index a1ec4dab7..000000000 --- a/.github/workflows/maven-build.yml +++ /dev/null @@ -1,29 +0,0 @@ -# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - java: [ '17' ] - - steps: - - uses: actions/checkout@v4 - - name: Set up JDK ${{matrix.java}} - uses: actions/setup-java@v4 - with: - java-version: ${{matrix.java}} - distribution: 'adopt' - cache: maven - - name: Build with Maven Wrapper - run: ./mvnw -B verify diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..eefe5fcff --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM anapsix/alpine-java +LABEL maintainer="shanem@liatrio.com" +COPY /target/spring-petclinic-1.5.1.jar /home/spring-petclinic-1.5.1.jar +CMD ["java","-jar","/home/spring-petclinic-1.5.1.jar"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..96ef7b69b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,43 @@ +pipeline { + agent { + docker { + image 'maven:3.9.6-eclipse-temurin-17' + } + } + + environment { + IMAGE_NAME = "local-app:latest" + CONTAINER_NAME = "local-app-container" + } + + stages { + stage('Build App') { + steps { + sh 'mvn clean package -DskipTests' + } + } + + stage('Build Docker Image') { + steps { + sh 'docker build -t $IMAGE_NAME .' + } + } + + stage('Stop Existing Container') { + steps { + sh ''' + docker stop $CONTAINER_NAME || true + docker rm $CONTAINER_NAME || true + ''' + } + } + + stage('Run Docker Container') { + steps { + sh ''' + docker run -d --name $CONTAINER_NAME -p 8080:8080 $IMAGE_NAME + ''' + } + } + } +}