From ff4ff27852c85c4cc7bf34418e5104c3dac70cc9 Mon Sep 17 00:00:00 2001 From: lukaDjordjevic01 <96748944+lukaDjordjevic01@users.noreply.github.com> Date: Mon, 26 Jan 2026 21:06:07 +0100 Subject: [PATCH 1/5] Minor fix. --- .../com/devoops/backend_poc/BackendPocApplicationTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/devoops/backend_poc/BackendPocApplicationTests.java b/src/test/java/com/devoops/backend_poc/BackendPocApplicationTests.java index 9e31ffd..60be07f 100644 --- a/src/test/java/com/devoops/backend_poc/BackendPocApplicationTests.java +++ b/src/test/java/com/devoops/backend_poc/BackendPocApplicationTests.java @@ -12,7 +12,7 @@ void contextLoads() { @Test void notFailingTest() { - System.out.println( "Not failing test"); + System.out.println( "Not failing test for sure, (Misa Rus)"); } } From 4cff148bb4dc42b18d1a13b1be3f937eb5636924 Mon Sep 17 00:00:00 2001 From: lukaDjordjevic01 <96748944+lukaDjordjevic01@users.noreply.github.com> Date: Sat, 31 Jan 2026 16:13:46 +0100 Subject: [PATCH 2/5] fix: Remove local environment variables from gitignore. --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index eac1f4d..070c2bf 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,3 @@ out/ ### Mac ### .DS_Store - -### Environment variables ### -*.env \ No newline at end of file From bc312533e55f7a1b5a6eaa97aff65ee03b70aafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Ro=C5=BEi=C4=87?= <96205750+rozicd@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:35:15 +0100 Subject: [PATCH 3/5] feat: Added SonarQube code analysis into pipeline * feat: Added SonarQube code analysis into pipeline * fix: sonarqube pipeline fix * fix: sonarqube job * fix: SonarQube job * fix: remove test coverages * fix: value for java binaries * fix: remove double java setup and double build * fix: build path * fix: add missing upload artifacts step * fix: add build artifacts to correct path for SonarCloud analysis * fix: download artifact path for sonar analysis * fix: use commit SHA has for third party dependancy --- .github/workflows/pr-check.yml | 52 ++++++++++++++++++- .../controller/TestController.java | 1 + 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index e6f3777..8ff5094 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -21,7 +21,55 @@ jobs: java-version: '25' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@0b6dd653ba04f4f93bf581ec31e66cbd7dcb644d - name: Build with Gradle - run: ./gradlew clean build \ No newline at end of file + run: ./gradlew clean build + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: build-artifact + path: | + build/classes + build/libs + build/test-results + retention-days: 1 + + sonarcloud: + name: SonarCloud Analysis + needs: build-and-test + runs-on: ubuntu-latest + + steps: + - name: Checkout code (full history for PR analysis) + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up JDK 25 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '25' + + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: build-artifact + path: build + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@e44258b109568baa0df60ed515909fc6c72cba92 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: > + -Dsonar.host.url=https://sonarcloud.io + -Dsonar.organization=${{ secrets.SONAR_ORGANIZATION }} + -Dsonar.projectKey=${{ secrets.SONAR_PROJECT_KEY }} + -Dsonar.sources=. + -Dsonar.java.binaries=build/classes/java/main + -Dsonar.java.test.binaries=build/classes/java/test + -Dsonar.junit.reportPaths=build/test-results/test \ No newline at end of file diff --git a/src/main/java/com/devoops/backend_poc/controller/TestController.java b/src/main/java/com/devoops/backend_poc/controller/TestController.java index be5de38..4c973cc 100644 --- a/src/main/java/com/devoops/backend_poc/controller/TestController.java +++ b/src/main/java/com/devoops/backend_poc/controller/TestController.java @@ -33,4 +33,5 @@ public String test() { MDC.remove("requestId"); } } + } \ No newline at end of file From 203fa777336a7898b311909a08a457fa83f287c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Ro=C5=BEi=C4=87?= <96205750+rozicd@users.noreply.github.com> Date: Tue, 24 Feb 2026 20:02:17 +0100 Subject: [PATCH 4/5] feat: kaniko image building and dependacy caching (#5) --- .github/workflows/ci.yml | 59 ++++++++++++++++++++-------------- .github/workflows/pr-check.yml | 10 ++++++ 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 147f19b..68fe941 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,16 @@ jobs: distribution: 'temurin' java-version: '25' + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-${{ runner.os }}- + - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -45,6 +55,9 @@ jobs: publish: needs: build runs-on: ubuntu-latest + container: + image: gcr.io/kaniko-project/executor:debug + options: --entrypoint "" steps: - name: Checkout code @@ -56,37 +69,33 @@ jobs: name: build-artifact path: build/libs - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ env.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Generate version tag id: version run: | - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION_TAG=${GITHUB_REF#refs/tags/v} - elif [[ $GITHUB_REF == refs/heads/main ]]; then - SHORT_SHA=$(git rev-parse --short HEAD) + if [ "${GITHUB_REF#refs/tags/}" != "$GITHUB_REF" ]; then + VERSION_TAG=$(echo "$GITHUB_REF" | sed 's|refs/tags/v||') + elif [ "$GITHUB_REF" = "refs/heads/main" ]; then + SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7) VERSION_TAG="main-${SHORT_SHA}" else - SHORT_SHA=$(git rev-parse --short HEAD) + SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7) VERSION_TAG="develop-${SHORT_SHA}" fi echo "tag=$VERSION_TAG" >> $GITHUB_OUTPUT - echo "Generated version tag: $VERSION_TAG" - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: | - ${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:${{ steps.version.outputs.tag }} - ${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:latest - cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file + - name: Set up Kaniko Docker config + run: | + mkdir -p /kaniko/.docker + echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"$(echo -n $DOCKERHUB_USERNAME:$DOCKERHUB_TOKEN | base64)\"}}}" > /kaniko/.docker/config.json + env: + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push Docker image with Kaniko + run: | + /kaniko/executor \ + --context=$GITHUB_WORKSPACE \ + --dockerfile=$GITHUB_WORKSPACE/Dockerfile \ + --destination=${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:${{ steps.version.outputs.tag }} \ + --destination=${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:latest \ + --cache=true \ + --cache-repo=${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc-cache \ No newline at end of file diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 8ff5094..51ed626 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -20,6 +20,16 @@ jobs: distribution: 'temurin' java-version: '25' + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-${{ runner.os }}- + - name: Setup Gradle uses: gradle/actions/setup-gradle@0b6dd653ba04f4f93bf581ec31e66cbd7dcb644d From ef256fa75241d87290fb1c20d406b5d886fa17e0 Mon Sep 17 00:00:00 2001 From: Dusan Date: Tue, 24 Feb 2026 19:15:42 +0100 Subject: [PATCH 5/5] fix: return to runs-on ubuntu latest --- .github/workflows/ci.yml | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68fe941..38a3c75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: gradle-${{ runner.os }}- - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@0b6dd653ba04f4f93bf581ec31e66cbd7dcb644d - name: Build with Gradle run: ./gradlew clean build @@ -55,9 +55,6 @@ jobs: publish: needs: build runs-on: ubuntu-latest - container: - image: gcr.io/kaniko-project/executor:debug - options: --entrypoint "" steps: - name: Checkout code @@ -72,29 +69,28 @@ jobs: - name: Generate version tag id: version run: | - if [ "${GITHUB_REF#refs/tags/}" != "$GITHUB_REF" ]; then - VERSION_TAG=$(echo "$GITHUB_REF" | sed 's|refs/tags/v||') - elif [ "$GITHUB_REF" = "refs/heads/main" ]; then - SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7) + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION_TAG=${GITHUB_REF#refs/tags/v} + elif [[ $GITHUB_REF == refs/heads/main ]]; then + SHORT_SHA=$(git rev-parse --short HEAD) VERSION_TAG="main-${SHORT_SHA}" else - SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-7) + SHORT_SHA=$(git rev-parse --short HEAD) VERSION_TAG="develop-${SHORT_SHA}" fi echo "tag=$VERSION_TAG" >> $GITHUB_OUTPUT - - - name: Set up Kaniko Docker config - run: | - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"$(echo -n $DOCKERHUB_USERNAME:$DOCKERHUB_TOKEN | base64)\"}}}" > /kaniko/.docker/config.json - env: - DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + echo "Generated version tag: $VERSION_TAG" - name: Build and push Docker image with Kaniko run: | - /kaniko/executor \ - --context=$GITHUB_WORKSPACE \ - --dockerfile=$GITHUB_WORKSPACE/Dockerfile \ + mkdir -p /tmp/kaniko/.docker + echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"$(echo -n ${{ env.DOCKERHUB_USERNAME }}:${{ secrets.DOCKERHUB_TOKEN }} | base64)\"}}}" > /tmp/kaniko/.docker/config.json + docker run \ + -v ${{ github.workspace }}:/workspace \ + -v /tmp/kaniko/.docker:/kaniko/.docker \ + gcr.io/kaniko-project/executor:latest \ + --context=/workspace \ + --dockerfile=/workspace/Dockerfile \ --destination=${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:${{ steps.version.outputs.tag }} \ --destination=${{ env.DOCKERHUB_USERNAME }}/devoops-backend-poc:latest \ --cache=true \