diff --git a/.github/workflows/CITest.yml b/.github/workflows/CITest.yml new file mode 100644 index 000000000..0885752ac --- /dev/null +++ b/.github/workflows/CITest.yml @@ -0,0 +1,67 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# 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/automating-builds-and-tests/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. + # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md + - name: Setup Gradle + uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 + + - name: Build with Gradle Wrapper + run: ./gradlew build + + # NOTE: The Gradle Wrapper is the default and recommended way to run Gradle (https://docs.gradle.org/current/userguide/gradle_wrapper.html). + # If your project does not have the Gradle Wrapper configured, you can use the following configuration to run Gradle with a specified version. + # + # - name: Setup Gradle + # uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 + # with: + # gradle-version: '8.9' + # + # - name: Build with Gradle 8.9 + # run: gradle build + + dependency-submission: + + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies. + # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md + - name: Generate and submit dependency graph + uses: gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index a429a2a98..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,38 +0,0 @@ -# This workflow will build a Java project with Gradle -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle - -name: Java CI with Gradle - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build-java: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew build - - - name: Build and Push Docker Image - uses: mr-smithers-excellent/docker-build-push@v4 - with: - image: nanajanashia/demo-app - registry: docker.io - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - diff --git a/Dockerfile b/Dockerfile index d2b1dc574..c462eff19 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,23 @@ -FROM openjdk:8-jre-alpine +# ===== Stage 1: Build ===== +FROM eclipse-temurin:8-jdk AS builder -EXPOSE 8080 +WORKDIR /app + +# Copy only necessary files first (better caching) +COPY gradlew . +COPY gradle gradle +COPY build.gradle . +COPY settings.gradle . +COPY src src + +RUN chmod +x gradlew +RUN ./gradlew clean build -x test --no-daemon -COPY ./build/libs/my-app-1.0-SNAPSHOT.jar /usr/app/ -WORKDIR /usr/app +# ===== Stage 2: Final small image ===== +FROM eclipse-temurin:8-jre-alpine -ENTRYPOINT ["java", "-jar", "my-app-1.0-SNAPSHOT.jar"] +WORKDIR /app +COPY --from=builder /app/build/libs/java-app-1.0-SNAPSHOT.jar app.jar + +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..0dfa6981b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,29 @@ +pipeline { + agent any + + environment { + IMAGE_NAME = "sherry31/my-project" + } + + stages { + stage('Checkout') { + steps { + checkout scm + } + } + + stage('Build & Push Docker Image') { + steps { + script { + def dockerImage = docker.build("${IMAGE_NAME}:${env.BUILD_NUMBER}", "--no-cache .") + dockerImage.tag("latest") + + docker.withRegistry('https://index.docker.io/v1/', 'dockerhub-credentials') { + dockerImage.push("${env.BUILD_NUMBER}") + dockerImage.push("latest") + } + } + } + } + } +} diff --git a/README.md b/README.md index 6a6245acc..4188733be 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,10 @@ ##### push image to repo docker tag java-app demo-app:java-1.0 + +###### Testing jenkins + jenkins testtt + +##### Testing WebHooks auto push +test test test hooks