From ef2b311d3180b575c5c7b23d2112818c206ae116 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 18 Apr 2026 02:44:30 +0000
Subject: [PATCH 1/5] Upgrade CI workflow: actions v4, Maven caching, JaCoCo
reports, artifact upload
Agent-Logs-Url: https://github.com/WeiXuChong/LibraryMan-API/sessions/8aa7cee4-8b55-4ec9-b75b-e8fc9bf40baa
Co-authored-by: achanhalt <199769577+achanhalt@users.noreply.github.com>
---
.github/workflows/build-test-lint-format.yml | 38 ++++++++++----------
pom.xml | 19 ++++++++++
2 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/.github/workflows/build-test-lint-format.yml b/.github/workflows/build-test-lint-format.yml
index 03f928c..d941091 100644
--- a/.github/workflows/build-test-lint-format.yml
+++ b/.github/workflows/build-test-lint-format.yml
@@ -13,27 +13,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Set up JDK 17
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
-
-# - name: Cache Maven dependencies
-# uses: actions/cache@v3
-# with:
-# path: ~/.m2/repository
-# key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-# restore-keys: |
-# ${{ runner.os }}-maven-
+ cache: 'maven'
- name: Install dependencies
- run: mvn clean install -DskipTests
+ run: chmod +x mvnw && ./mvnw clean install -DskipTests
- name: Run Tests
- run: mvn test
+ run: ./mvnw clean test
env:
ENV: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
@@ -49,27 +42,36 @@ jobs:
MAIL_SERVICE_STARTTLS: ${{ secrets.MAIL_SERVICE_STARTTLS }}
MAIL_SERVICE_DOMAIN_NAME: ${{ secrets.MAIL_SERVICE_DOMAIN_NAME }}
+ - name: Upload test reports
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: test-reports
+ path: |
+ target/surefire-reports/
+ target/site/jacoco/
+
# lint-and-format:
# runs-on: ubuntu-latest
# needs: build-and-test
# steps:
# - name: Checkout code
-# uses: actions/checkout@v3
+# uses: actions/checkout@v4
#
# - name: Set up JDK 17
-# uses: actions/setup-java@v3
+# uses: actions/setup-java@v4
# with:
# java-version: '17'
# distribution: 'temurin'
#
# - name: Run Checkstyle
-# run: mvn checkstyle:check
+# run: ./mvnw checkstyle:check
#
# - name: Run PMD
-# run: mvn pmd:check
+# run: ./mvnw pmd:check
#
# - name: Run SpotBugs
-# run: mvn spotbugs:check
+# run: ./mvnw spotbugs:check
# - name: Verify code formatting with Spotless (excluding Javadocs)
-# run: mvn spotless:check -Dspotless.apply.skip
+# run: ./mvnw spotless:check -Dspotless.apply.skip
diff --git a/pom.xml b/pom.xml
index a48b762..3998097 100644
--- a/pom.xml
+++ b/pom.xml
@@ -129,6 +129,25 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.12
+
+
+
+ prepare-agent
+
+
+
+ report
+ test
+
+ report
+
+
+
+
From 9ca722d81457d28cd9847910a5a2f82f18b62409 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 18 Apr 2026 02:45:08 +0000
Subject: [PATCH 2/5] Remove redundant clean goal from test step to avoid
unnecessary rebuild
Agent-Logs-Url: https://github.com/WeiXuChong/LibraryMan-API/sessions/8aa7cee4-8b55-4ec9-b75b-e8fc9bf40baa
Co-authored-by: achanhalt <199769577+achanhalt@users.noreply.github.com>
---
.github/workflows/build-test-lint-format.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build-test-lint-format.yml b/.github/workflows/build-test-lint-format.yml
index d941091..882d670 100644
--- a/.github/workflows/build-test-lint-format.yml
+++ b/.github/workflows/build-test-lint-format.yml
@@ -26,7 +26,7 @@ jobs:
run: chmod +x mvnw && ./mvnw clean install -DskipTests
- name: Run Tests
- run: ./mvnw clean test
+ run: ./mvnw test
env:
ENV: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
From 356c15bb8952701d111a3436475f9983789018c1 Mon Sep 17 00:00:00 2001
From: Chin Chia Poh
Date: Sat, 18 Apr 2026 10:49:15 +0800
Subject: [PATCH 3/5] Update PR #2 description to include 'Fixes #1'
---
pulls/2/description | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 pulls/2/description
diff --git a/pulls/2/description b/pulls/2/description
new file mode 100644
index 0000000..d761cf5
--- /dev/null
+++ b/pulls/2/description
@@ -0,0 +1,14 @@
+Fixes #1
+
+Modernize the CI pipeline to produce accessible test and coverage reports as downloadable artifacts.
+
+### Workflow (`build-test-lint-format.yml`)
+- Upgrade `actions/checkout`, `actions/setup-java`, to **v4**
+- Replace commented-out `actions/cache@v3` with `setup-java`'s built-in `cache: 'maven'`
+- Switch from `mvn` to `./mvnw` for reproducible builds via the Maven wrapper
+- Add `actions/upload-artifact@v4` (`if: always()`) to archive Surefire + JaCoCo reports
+
+### Build (`pom.xml`)
+- Add `jacoco-maven-plugin` 0.8.12 with `prepare-agent` and `report` goals bound to the `test` phase
+
+After this, every push/PR run will produce a downloadable `test-reports` artifact containing `target/surefire-reports/` and `target/site/jacoco/.
\ No newline at end of file
From 5172a973504d3a2bb5e0fa40efe908542c0caa82 Mon Sep 17 00:00:00 2001
From: Chin Chia Poh
Date: Sat, 18 Apr 2026 11:03:40 +0800
Subject: [PATCH 4/5] Create main.yml
---
.github/workloads/main.yml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 .github/workloads/main.yml
diff --git a/.github/workloads/main.yml b/.github/workloads/main.yml
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.github/workloads/main.yml
@@ -0,0 +1 @@
+
From ae2cfa1f70b8f36f3969435d424babcbfe0ecb05 Mon Sep 17 00:00:00 2001
From: Chin Chia Poh
Date: Sat, 18 Apr 2026 11:04:26 +0800
Subject: [PATCH 5/5] Add CI pipeline configuration for LibraryMan-API
This CI pipeline triggers on pushes and pull requests to specified branches, sets up JDK 17, builds the project, runs tests, generates a coverage report, and archives the reports.
---
.github/workloads/main.yml | 45 ++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/.github/workloads/main.yml b/.github/workloads/main.yml
index 8b13789..ff0a4ed 100644
--- a/.github/workloads/main.yml
+++ b/.github/workloads/main.yml
@@ -1 +1,46 @@
+name: LibraryMan-API CI Pipeline
+# 1. Automated Triggers: Triggers on every push or PR to key branches
+on:
+ push:
+ branches: [ "main", "Build", "Test", "Deploy", "CI" ]
+ pull_request:
+ branches: [ "main" ]
+
+jobs:
+ pipeline:
+ runs-on: ubuntu-latest
+
+ steps:
+ # 2. Setup Phase
+ - name: Checkout Repository Code
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: maven
+
+ # 3. Automation Phase
+ - name: Make Maven Wrapper Executable
+ run: chmod +x mvnw
+
+ - name: Build and Execute 111 Unit Tests
+ # This automates the build and test process within the pipeline
+ run: ./mvnw clean test
+
+ - name: Generate JaCoCo Coverage Report
+ # This generates the report for the "Accessible Reports" requirement
+ run: ./mvnw jacoco:report
+
+ # 4. Reporting Phase (Deliverables)
+ - name: Archive Test & Coverage Reports
+ if: always() # Ensures reports are uploaded even if tests fail
+ uses: actions/upload-artifact@v4
+ with:
+ name: assignment-reports
+ path: |
+ target/surefire-reports/
+ target/site/jacoco/