Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
7db6cc3
Step1
ivanzlenko Mar 4, 2026
dccbcb8
Step2
ivanzlenko Mar 4, 2026
f067d93
Step3
ivanzlenko Mar 4, 2026
748b8f5
Step4
ivanzlenko Mar 4, 2026
a3ecffc
Step5
ivanzlenko Mar 5, 2026
abe4454
Step6
ivanzlenko Mar 5, 2026
23e5a28
Step7
ivanzlenko Mar 5, 2026
8f4f758
Step8
ivanzlenko Mar 5, 2026
4b9a646
Step9
ivanzlenko Mar 5, 2026
c9444ed
Step10a
ivanzlenko Mar 5, 2026
dfa32c5
Step10b
ivanzlenko Mar 5, 2026
47de0d6
Step10с
ivanzlenko Mar 5, 2026
a73f471
Step11
ivanzlenko Mar 5, 2026
0619f68
Step12
ivanzlenko Mar 5, 2026
04c719b
Step13
ivanzlenko Mar 5, 2026
02a2b74
Step14
ivanzlenko Mar 5, 2026
3a4b4b9
Rebase
ivanzlenko Mar 5, 2026
3485995
Fix stop issue
ivanzlenko Mar 6, 2026
1c3ca19
Merge remote-tracking branch 'origin/main' into ignite-di-claude
ivanzlenko Mar 6, 2026
523e7d1
ignite-di-claude Fix stop issue
ivanzlenko Mar 6, 2026
6eba17e
ignite-di-claude Fix another stop issue
ivanzlenko Mar 6, 2026
1ca9b12
Merge remote-tracking branch 'origin/main' into ignite-di-claude
ivanzlenko Mar 6, 2026
adaa057
Fix partition test
ivanzlenko Mar 6, 2026
7274052
Fix JDBC tests
ivanzlenko Mar 6, 2026
354c067
Remove duiplicated code
ivanzlenko Mar 7, 2026
85d747b
Fix tests
ivanzlenko Mar 7, 2026
7102390
refactor to reduce amount of fabrics
ivanzlenko Mar 7, 2026
b66029b
ignite-di-claude Fix stackoverflow issue
ivanzlenko Mar 8, 2026
9de238f
ignite-di-claude Fix bean discoverability in rest
ivanzlenko Mar 8, 2026
aee63cf
Fix cehckstyle
ivanzlenko Mar 8, 2026
35e8d2d
expand singleton scan range
ivanzlenko Mar 8, 2026
555474e
Refactor core components
ivanzlenko Mar 8, 2026
966453c
Refactor system view
ivanzlenko Mar 8, 2026
513b796
Refactor InMemoryComputeStateMachine
ivanzlenko Mar 8, 2026
bd0520b
Named beans for executors
ivanzlenko Mar 8, 2026
3710915
Small factories refactoring
ivanzlenko Mar 8, 2026
e1eb9b5
Refactor affecting placement driver
ivanzlenko Mar 8, 2026
7984a94
Migrate more components
ivanzlenko Mar 8, 2026
861d84a
Migrate remaining components to dependency injection
ivanzlenko Mar 8, 2026
fa04106
Migrate additional core components to dependency injection
ivanzlenko Mar 8, 2026
6614ccd
Migrate index-related components and dependencies to dependency injec…
ivanzlenko Mar 8, 2026
e9b08ba
Migrate ClockService and related components to dependency injection
ivanzlenko Mar 8, 2026
539bf5f
Migrate remaining classes to use interfaces over implementations in d…
ivanzlenko Mar 8, 2026
ac6a904
Migrate additional components to use interfaces over implementations …
ivanzlenko Mar 8, 2026
f0cff07
ignite-di-claude Migrate components from `NodeSeedParams` to `NodeIde…
ivanzlenko Mar 8, 2026
c971a48
Optimize imports in `MetricManagerImpl` and `Loza` classes.
ivanzlenko Mar 8, 2026
8183163
Migrate `configPath` handling from `NodeSeedParams` to `NodeIdentity`…
ivanzlenko Mar 8, 2026
f1d6fe1
Add support for including specific packages in bean discovery through…
ivanzlenko Mar 8, 2026
ff82123
Migrate components to use `serviceProviderClassLoader` from `NodeSeed…
ivanzlenko Mar 8, 2026
01d665f
Remove `NodeSeedParams` and migrate all dependencies to use `NodeIden…
ivanzlenko Mar 8, 2026
557b09a
ignite-di-claude Migrate `SqlQueryProcessor` and `ClusterManagementGr…
ivanzlenko Mar 8, 2026
b7b12fd
Migrate `SystemDisasterRecoveryManagerImpl` and `MetaStorageManagerIm…
ivanzlenko Mar 8, 2026
1010043
Migrate `IgniteComputeImpl` to dependency injection; remove factory m…
ivanzlenko Mar 8, 2026
b070c05
Migrate `LowWatermarkImpl`, `CriticalWorkerWatchdog`, `NettyWorkersRe…
ivanzlenko Mar 8, 2026
566a0e5
Migrate tests `OutgoingSnapshotsManagerTest` and `IgniteComputeImplTe…
ivanzlenko Mar 8, 2026
13c3d31
Migrate catalog compaction, compute, and deployment modules to depend…
ivanzlenko Mar 9, 2026
05713b7
Migrate `TableManager` and `PartitionReplicaLifecycleManager` to depe…
ivanzlenko Mar 9, 2026
8dc1a49
Migrate `SqlFactory`, `SystemServicesFactory`, and related components…
ivanzlenko Mar 9, 2026
101839f
Migrate `EventLogImpl` to dependency injection; add Micronaut annotat…
ivanzlenko Mar 9, 2026
c642eb0
Migrate `ComponentWorkingDir` creation to a dedicated factory class; …
ivanzlenko Mar 9, 2026
14ea377
Add GitHub Actions workflows for build, unit tests, integration tests…
ivanzlenko Mar 10, 2026
7271129
Consolidate GitHub Actions workflows into a single `Build & Test` wor…
ivanzlenko Mar 10, 2026
9edd632
Split `Build & Test` GitHub Actions workflow into separate workflows …
ivanzlenko Mar 10, 2026
22fdb7d
Split `Checks` GitHub Actions workflow into separate jobs for Checkst…
ivanzlenko Mar 10, 2026
d9b7867
Allow GitHub Actions workflows to continue on error and always upload…
ivanzlenko Mar 10, 2026
9fb41c8
Split `Unit Tests` GitHub Actions workflow into modular jobs by compo…
ivanzlenko Mar 10, 2026
c12dcf8
Split `Integration Tests` GitHub Actions workflow into modular jobs b…
ivanzlenko Mar 10, 2026
57a23d6
Remove `continue-on-error` from code quality checks and update depend…
ivanzlenko Mar 10, 2026
4f85e9b
ignite-di-claude Update `Integration Tests` workflow to depend on `Un…
ivanzlenko Mar 10, 2026
a47f138
ignite-di-claude Migrate RocksDB-related classes to use dependency in…
ivanzlenko Mar 10, 2026
afaf63d
Migrate schema-related and distribution zone services to use Micronau…
ivanzlenko Mar 10, 2026
81fcbdf
Migrate `TransactionIdGenerator` and `PartitionModificationCounterFac…
ivanzlenko Mar 10, 2026
07e68e9
Migrate Raft-related classes to use Micronaut dependency injection; r…
ivanzlenko Mar 10, 2026
95edd8a
Migrate `ConfigurationRegistry` to use `ConfigurationRegistryImpl`; r…
ivanzlenko Mar 10, 2026
4f377b0
Add summary steps for Checkstyle, PMD, SpotBugs, and test results in …
ivanzlenko Mar 11, 2026
f66c3df
ignite-di-claude Improve error reporting in GitHub Actions by adding …
ivanzlenko Mar 11, 2026
86bb9be
Migrate remaining components to use Micronaut dependency injection; r…
ivanzlenko Mar 11, 2026
b5e4a64
Migrate `ConfigurationModules` to `ConfigurationModulesImpl` with Mic…
ivanzlenko Mar 11, 2026
c9a634d
Migrate configuration and network-related classes to Micronaut depend…
ivanzlenko Mar 11, 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
89 changes: 89 additions & 0 deletions .github/actions/test-summary/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: 'Test Summary'
description: 'Parse JUnit XML reports and write a failure summary to GITHUB_STEP_SUMMARY'

inputs:
report-type:
description: 'Type of test report directory (test or integrationTest)'
required: true
default: 'test'

runs:
using: 'composite'
steps:
- name: Generate test summary
if: always()
shell: bash
run: |
shopt -s globstar nullglob

report_type="${{ inputs.report-type }}"
files=(**/build/test-results/${report_type}/TEST-*.xml)

if [ ${#files[@]} -eq 0 ]; then
echo "No test result files found."
exit 0
fi

total=0
failed=0
errored=0
skipped=0
failure_details=""

for f in "${files[@]}"; do
# Extract testsuite attributes
suite_line=$(head -5 "$f" | grep '<testsuite ')
if [ -z "$suite_line" ]; then continue; fi

t=$(echo "$suite_line" | grep -oP 'tests="\K[0-9]+' || echo 0)
fl=$(echo "$suite_line" | grep -oP 'failures="\K[0-9]+' || echo 0)
e=$(echo "$suite_line" | grep -oP 'errors="\K[0-9]+' || echo 0)
s=$(echo "$suite_line" | grep -oP 'skipped="\K[0-9]+' || echo 0)

total=$((total + t))
failed=$((failed + fl))
errored=$((errored + e))
skipped=$((skipped + s))

# Collect failure details
if [ "$fl" -gt 0 ] || [ "$e" -gt 0 ]; then
# Use python for reliable XML parsing of failure messages
details=$(python3 -c "
import xml.etree.ElementTree as ET, sys
try:
tree = ET.parse('$f')
for tc in tree.findall('.//testcase'):
fail = tc.find('failure')
err = tc.find('error')
elem = fail if fail is not None else err
if elem is not None:
cls = tc.get('classname', '')
name = tc.get('name', '')
msg = elem.get('message', '')[:200].replace('|', '/').replace('\n', ' ')
print(f'| \`{cls}\` | \`{name}\` | {msg} |')
except Exception:
pass
" 2>/dev/null || true)
if [ -n "$details" ]; then
failure_details="${failure_details}${details}"$'\n'
fi
fi
done

passed=$((total - failed - errored - skipped))

if [ "$failed" -eq 0 ] && [ "$errored" -eq 0 ]; then
summary="Tests passed: $passed, skipped: $skipped"
echo "$summary"
echo "### :white_check_mark: $summary" >> "$GITHUB_STEP_SUMMARY"
else
summary="Tests: $passed passed, $((failed + errored)) failed, $skipped skipped (total: $total)"
echo "::error::$summary"
echo ""
echo "$failure_details"
echo "### :x: $summary" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| Class | Test | Message |" >> "$GITHUB_STEP_SUMMARY"
echo "|-------|------|---------|" >> "$GITHUB_STEP_SUMMARY"
echo "$failure_details" >> "$GITHUB_STEP_SUMMARY"
fi
45 changes: 45 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Build

on:
push:
branches: [ ignite-di-claude ]
pull_request:
branches: [ ignite-di-claude ]
workflow_dispatch:

jobs:
build:
name: Build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false

- name: Build (skip tests and checks)
run: ./gradlew clean build -x assembleDist -x distTar -x distZip -x check

checks:
name: Checks
needs: build
uses: ./.github/workflows/checks.yml

unit-tests:
name: Unit Tests
needs: checks
uses: ./.github/workflows/unit-tests.yml

integration-tests:
name: Integration Tests
needs: unit-tests
uses: ./.github/workflows/integration-tests.yml
167 changes: 167 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
name: Checks

on:
workflow_call:

jobs:
checkstyle:
name: Checkstyle
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: true

- name: Run Checkstyle
run: ./gradlew --continue checkstyleMain checkstyleTest checkstyleIntegrationTest checkstyleTestFixtures

- name: Summarize Checkstyle violations
if: always()
shell: bash
run: |
shopt -s globstar nullglob
files=(**/build/reports/checkstyle/*.xml)
if [ ${#files[@]} -eq 0 ]; then exit 0; fi
violations=$(grep -h '<error ' "${files[@]}" 2>/dev/null || true)
if [ -z "$violations" ]; then
echo "Checkstyle: No violations"
echo "### :white_check_mark: Checkstyle: No violations" >> "$GITHUB_STEP_SUMMARY"
exit 0
fi
echo "::error::Checkstyle violations found"
echo "### :x: Checkstyle Violations" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| File | Line | Message |" >> "$GITHUB_STEP_SUMMARY"
echo "|------|------|---------|" >> "$GITHUB_STEP_SUMMARY"
for f in "${files[@]}"; do
grep '<error ' "$f" 2>/dev/null | sed -E 's/.*line="([0-9]+)".*message="([^"]+)".*/\1|\2/' | while IFS='|' read -r line msg; do
src=$(grep -oP 'name="\K[^"]+' "$f" | head -1)
short=$(echo "$src" | sed 's|.*/src/||')
echo "::error file=$short,line=$line::$msg"
echo "| \`$short\` | $line | $msg |" >> "$GITHUB_STEP_SUMMARY"
done
done

pmd:
name: PMD
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: true

- name: Run PMD
run: ./gradlew --continue pmdMain pmdTest pmdIntegrationTest pmdTestFixtures

- name: Summarize PMD violations
if: always()
shell: bash
run: |
shopt -s globstar nullglob
files=(**/build/reports/pmd/*.xml)
if [ ${#files[@]} -eq 0 ]; then exit 0; fi
violations=$(grep -h '<violation ' "${files[@]}" 2>/dev/null || true)
if [ -z "$violations" ]; then
echo "PMD: No violations"
echo "### :white_check_mark: PMD: No violations" >> "$GITHUB_STEP_SUMMARY"
exit 0
fi
echo "::error::PMD violations found"
echo "### :x: PMD Violations" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| File | Line | Rule | Message |" >> "$GITHUB_STEP_SUMMARY"
echo "|------|------|------|---------|" >> "$GITHUB_STEP_SUMMARY"
for f in "${files[@]}"; do
current_file=""
while IFS= read -r line; do
if echo "$line" | grep -qP '<file name="'; then
current_file=$(echo "$line" | grep -oP 'name="\K[^"]+' | sed 's|.*/src/||')
fi
if echo "$line" | grep -qP '<violation '; then
lineno=$(echo "$line" | grep -oP 'beginline="\K[0-9]+')
rule=$(echo "$line" | grep -oP 'rule="\K[^"]+')
msg=$(echo "$line" | sed -E 's/.*>([^<]+)<\/violation>.*/\1/' | xargs)
echo "::error file=$current_file,line=$lineno::[$rule] $msg"
echo "| \`$current_file\` | $lineno | $rule | $msg |" >> "$GITHUB_STEP_SUMMARY"
fi
done < "$f"
done

spotbugs:
name: SpotBugs
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

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

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: true

- name: Run SpotBugs
run: ./gradlew --continue spotbugsMain spotbugsTest spotbugsIntegrationTest spotbugsTestFixtures

- name: Summarize SpotBugs violations
if: always()
shell: bash
run: |
shopt -s globstar nullglob
files=(**/build/reports/spotbugs/*.xml)
if [ ${#files[@]} -eq 0 ]; then exit 0; fi
bugs=$(grep -h '<BugInstance ' "${files[@]}" 2>/dev/null || true)
if [ -z "$bugs" ]; then
echo "SpotBugs: No bugs found"
echo "### :white_check_mark: SpotBugs: No bugs found" >> "$GITHUB_STEP_SUMMARY"
exit 0
fi
echo "::error::SpotBugs issues found"
echo "### :x: SpotBugs Issues" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| Type | Category | Class | Line | Message |" >> "$GITHUB_STEP_SUMMARY"
echo "|------|----------|-------|------|---------|" >> "$GITHUB_STEP_SUMMARY"
for f in "${files[@]}"; do
python3 -c "
import xml.etree.ElementTree as ET, os
tree = ET.parse('$f')
summary = open(os.environ['GITHUB_STEP_SUMMARY'], 'a')
for bug in tree.findall('.//BugInstance'):
typ = bug.get('type', '')
cat = bug.get('category', '')
msg_el = bug.find('ShortMessage')
msg = msg_el.text if msg_el is not None else ''
cls_el = bug.find('Class')
cls = cls_el.get('classname', '') if cls_el is not None else ''
src_el = bug.find('.//SourceLine[@start]')
line = src_el.get('start', '') if src_el is not None else ''
print(f'::error::[{typ}] {cls}:{line} - {msg}')
summary.write(f'| \`{typ}\` | {cat} | \`{cls}\` | {line} | {msg} |\n')
summary.close()
" 2>/dev/null || true
done
Loading