Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
cd12136
perf: replace LinkedList with ArrayList for O(1) access performance (…
Feb 21, 2026
05d6f8c
build: standardize artifact IDs and align cross-module dependencies
chethann007 Feb 16, 2026
3632b3a
build: centralize dependency management and add project documentation
chethann007 Feb 16, 2026
48477c8
feat(lern-service): initialize unified lern-service-impl module
chethann007 Feb 16, 2026
f4f8e34
build(lern-service): add build scripts and Dockerfile for unified ser…
chethann007 Feb 16, 2026
964f154
ci: add GitHub Actions workflow for conditional service builds
chethann007 Feb 16, 2026
3280727
ci: update image tagging to use organization-level hierarchy
chethann007 Feb 16, 2026
4d39c66
ci: revert workflow trigger to tags only
chethann007 Feb 16, 2026
d7f4279
feat(cassandra-utils): add support for map column updates with putAll
chethann007 Feb 17, 2026
771c8b3
feat(aggregator): enhance activity tracking and fix assessment aggreg…
chethann007 Feb 17, 2026
143d878
ci: add parallel build workflow and coverage aggregation
chethann007 Feb 18, 2026
d2b25f0
fix(ci): use shell check for SONAR_TOKEN to avoid context issues
chethann007 Feb 18, 2026
a152f77
ci: update github actions to v4
chethann007 Feb 18, 2026
a7e0d77
ci: simplify build commands in workflow
chethann007 Feb 18, 2026
e029d34
ci: add Redis service container to GitHub Actions workflow
chethann007 Feb 18, 2026
5f7b4b3
ci: optimize workflow with Redis services and skip redundant core builds
chethann007 Feb 18, 2026
0c0a3b1
refactor: fix notification dispatchers and improve request context ha…
chethann007 Feb 20, 2026
1869925
ci: activate lern profile for sonarqube analysis and update project key
chethann007 Feb 20, 2026
7de6fd6
ci: fix dependency resolution in sonar-analysis
chethann007 Feb 20, 2026
c51c170
ci: fix artifact mapping and force skip compilation in sonar-analysis…
chethann007 Feb 20, 2026
4d59e83
security: remediate vulnerabilities by upgrading core dependencies
chethann007 Feb 22, 2026
6b6e19b
refactor: migrate userorg module from Jackson 1 to Jackson 2
chethann007 Feb 22, 2026
4c02937
test: add unit tests for authentication verifiers and utilities
chethann007 Feb 22, 2026
fce1527
test: add unit tests for common utility and cache classes
chethann007 Feb 22, 2026
f282f3e
test: add unit tests for custom exception hierarchy and handlers
chethann007 Feb 22, 2026
da4526c
test: add unit tests for telemetry, kafka, and http modules
chethann007 Feb 22, 2026
2a72e1c
test: add unit tests for actor operations across LMS and UserOrg modules
chethann007 Feb 22, 2026
a45b360
test: add unit tests for Request and RequestContext
chethann007 Feb 22, 2026
f967950
test: add comprehensive unit tests for request and email validators
chethann007 Feb 22, 2026
31ee3d6
test: enhance telemetry verification and validator coverage
chethann007 Feb 22, 2026
c824457
test: expand Cassandra operation test coverage with extended scenarios
chethann007 Feb 22, 2026
7d10791
feat(lern-service): implement modular component-level health checks i…
chethann007 Feb 22, 2026
c5a120e
build: fix lz4 vulnerabilities and upgrade velocity to 2.x
chethann007 Feb 23, 2026
e72a64b
ci: update sonar project key in pr-checks workflow
chethann007 Feb 23, 2026
365baed
test: fix health check name mismatch in HealthActorTest
chethann007 Feb 23, 2026
9cb5a11
ci: fix SonarQube analysis by ensuring recursive artifact restoration
chethann007 Feb 23, 2026
3ea3e40
fix: OTP utility and SonarQube CI configuration
chethann007 Feb 23, 2026
e856fd1
ci: fix GHCR permissions and optimize dependency resolution
chethann007 Feb 23, 2026
81e8f2c
ci: fix 0% SonarQube coverage and standardize Jacoco reporting
chethann007 Feb 23, 2026
600e500
refactor: rename report modules to lern-jacoco-report and update CI
chethann007 Feb 24, 2026
efdc00e
build: unify SLF4J version to 2.0.13, add maven-enforcer-plugin, and …
chethann007 Feb 24, 2026
92fa22c
ci: restrict pr-checks workflow to trigger only on pull requests
chethann007 Feb 24, 2026
8f3393c
fix: Resolve critical OS and Java vulnerabilities by upgrading Docker…
chethann007 Feb 24, 2026
23c55c2
ci: update trigger on push for testing
chethann007 Feb 24, 2026
1fd4620
ci: fix duplicate keys and redundant steps in pr-checks workflow
chethann007 Feb 25, 2026
e3440e0
ci: allow concurrent builds for all services in deploy workflow
chethann007 Feb 25, 2026
a039437
fix(security): remediate lz4-java and snappy-java vulnerabilities
chethann007 Feb 25, 2026
51fed50
ci: restrict pr-checks workflow to trigger only on pull requests
chethann007 Feb 24, 2026
d668648
chore(security): remediate protobuf and commons-io vulnerabilities
chethann007 Feb 25, 2026
4913ce3
chore(security): upgrade velocity-engine-core to 2.4.1 to exclude bun…
chethann007 Feb 25, 2026
cd187f3
test: Introduce comprehensive unit tests for actor core utilities and…
chethann007 Feb 25, 2026
655a11f
refactor: replace LinkedList with ArrayList in UserSelfDeclarationMan…
chethann007 Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Build and Deploy

# Trigger this workflow whenever there is a new tag push
on:
push:
tags:
- '*'

jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

env:
REGISTRY: ghcr.io

steps:
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'

- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set Service Variables
id: vars
run: |
echo "LERN_ENABLE=${{ vars.LERN_SERVICE_BUILD == 'true' }}" >> $GITHUB_ENV
echo "USERORG_ENABLE=${{ vars.USERORG_SERVICE_BUILD == 'true' }}" >> $GITHUB_ENV
echo "LMS_ENABLE=${{ vars.LMS_SERVICE_BUILD == 'true' }}" >> $GITHUB_ENV
echo "NOTIFICATION_ENABLE=${{ vars.NOTIFICATION_SERVICE_BUILD == 'true' }}" >> $GITHUB_ENV

# Prepare Image Meta
REPO_LOWER=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
SHORT_SHA=$(git rev-parse HEAD | cut -c1-7)
TAG_LOWER=$(echo "${GITHUB_REF_NAME}" | tr '[:upper:]' '[:lower:]' | tr '/' '-')

REPO_FULL=${{ env.REGISTRY }}/${REPO_LOWER}
ORG_BASE=$(dirname ${REPO_FULL})

echo "REPO_BASE=${REPO_FULL}" >> $GITHUB_ENV
echo "ORG_BASE=${ORG_BASE}" >> $GITHUB_ENV
echo "IMAGE_TAG=${TAG_LOWER}_${SHORT_SHA}_${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV

# ----------------------------------------------------------------
# LERN SERVICE (Merged)
# ----------------------------------------------------------------
- name: Build Lern Service
if: env.LERN_ENABLE == 'true'
run: ./scripts/lern/build.sh

- name: Push Lern Service Docker
if: env.LERN_ENABLE == 'true'
uses: docker/build-push-action@v4
with:
context: .
file: build/lern/Dockerfile
push: true
tags: ${{ env.ORG_BASE }}/lern-service:${{ env.IMAGE_TAG }}

# ----------------------------------------------------------------
# USERORG SERVICE
# ----------------------------------------------------------------
- name: Build UserOrg Service
if: env.USERORG_ENABLE == 'true'
run: ./scripts/userorg/build.sh

- name: Push UserOrg Service Docker
if: env.USERORG_ENABLE == 'true'
uses: docker/build-push-action@v4
with:
context: .
file: build/userorg/Dockerfile
push: true
tags: ${{ env.ORG_BASE }}/lern-userorg-service:${{ env.IMAGE_TAG }}

# ----------------------------------------------------------------
# LMS SERVICE
# ----------------------------------------------------------------
- name: Build LMS Service
if: env.LMS_ENABLE == 'true'
run: ./scripts/lms/build.sh

- name: Push LMS Service Docker
if: env.LMS_ENABLE == 'true'
uses: docker/build-push-action@v4
with:
context: .
file: build/lms/Dockerfile
push: true
tags: ${{ env.ORG_BASE }}/lern-lms-service:${{ env.IMAGE_TAG }}

# ----------------------------------------------------------------
# NOTIFICATION SERVICE
# ----------------------------------------------------------------
- name: Build Notification Service
if: env.NOTIFICATION_ENABLE == 'true'
run: ./scripts/notification/build.sh

- name: Push Notification Service Docker
if: env.NOTIFICATION_ENABLE == 'true'
uses: docker/build-push-action@v4
with:
context: .
file: build/notification/Dockerfile
push: true
tags: ${{ env.ORG_BASE }}/lern-notification-service:${{ env.IMAGE_TAG }}
246 changes: 246 additions & 0 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
name: PR Code Coverage and SonarQube Analysis

on:
pull_request:
branches: ['**']

jobs:
build-core:
runs-on: ubuntu-latest

services:
redis:
image: redis:4.0.0
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- uses: actions/checkout@v4

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'

- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-maven-

- name: Build Core
run: |
mvn clean install

- name: Upload Core Artifacts
uses: actions/upload-artifact@v4
with:
name: core-artifacts
path: core/**/target/**

userorg-build:
needs: build-core
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'

- name: Restore Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}

- name: Build and Generate Coverage Report (UserOrg)
run: |
mvn verify -P userorg -rf :userorg-service

- name: Upload UserOrg Artifacts
uses: actions/upload-artifact@v4
with:
name: userorg-artifacts
path: modules/userorg/**/target/**

lms-build:
needs: build-core
runs-on: ubuntu-latest

services:
redis:
image: redis:4.0.0
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- uses: actions/checkout@v4

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'

- name: Restore Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}

- name: Build and Generate Coverage Report (LMS)
run: |
mvn verify -P lms -rf :lms-service

- name: Upload LMS Artifacts
uses: actions/upload-artifact@v4
with:
name: lms-artifacts
path: modules/lms/**/target/**

notification-build:
needs: build-core
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'

- name: Restore Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}

- name: Build and Generate Coverage Report (Notification)
run: |
mvn verify -P notification -rf :notification-service

- name: Upload Notification Artifacts
uses: actions/upload-artifact@v4
with:
name: notification-artifacts
path: modules/notification/**/target/**

lern-build:
needs: build-core
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'

- name: Restore Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}

- name: Build and Generate Coverage Report (Lern Service Impl)
run: |
# Install dependencies into local repo skipped to ensure resolution
mvn install -P lern -pl modules/lern/service -am -DskipTests -Dcheckstyle.skip
# Run verification/tests for the target module
mvn verify -P lern -pl modules/lern/service

- name: Upload Lern Artifacts
uses: actions/upload-artifact@v4
with:
name: lern-artifacts
path: modules/lern/service/**/target/**

sonar-analysis:
needs: [userorg-build, lms-build, notification-build, lern-build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Download Core Artifacts
uses: actions/download-artifact@v4
with:
name: core-artifacts
path: .
merge-multiple: true

- name: Download UserOrg Artifacts
uses: actions/download-artifact@v4
with:
name: userorg-artifacts
path: .
merge-multiple: true

- name: Download LMS Artifacts
uses: actions/download-artifact@v4
with:
name: lms-artifacts
path: .
merge-multiple: true

- name: Download Notification Artifacts
uses: actions/download-artifact@v4
with:
name: notification-artifacts
path: .
merge-multiple: true

- name: Download Lern Artifacts
uses: actions/download-artifact@v4
with:
name: lern-artifacts
path: .
merge-multiple: true

- name: Run Aggregated SonarQube Analysis
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ -n "$SONAR_TOKEN" ]; then
# 1. Ensure reactor is healthy and all modules are available in local repo
mvn install -P lern -DskipTests -Dcheckstyle.skip -Dmaven.main.compile.skip=true

# 2. Aggregate coverage reports
mvn -P lern -pl lern-jacoco-report -am jacoco:report-aggregate \
-DskipTests -Dcheckstyle.skip

# 3. Run Sonar analysis on the entire project
# Note: We now have all binaries (downloaded) and the reactor is healthy (pre-installed)
mvn -P lern sonar:sonar \
-Dsonar.projectKey=Sunbird-Lern_lern-service \
-Dsonar.organization=sunbird-lern \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.coverage.jacoco.xmlReportPaths=lern-jacoco-report/target/site/jacoco-aggregate/jacoco.xml \
-DskipTests -Dcheckstyle.skip
else
echo "Skipping SonarQube analysis: SONAR_TOKEN is missing"
fi
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,6 @@ Thumbs.db
*.swp
*.swo
local.properties

# Ignore sample public key
!modules/userorg/controller/test/resources/samplepublic.pem
Loading