Skip to content
Open
Changes from all commits
Commits
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
116 changes: 116 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Java CI

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
- master
push:
branches:
- main
- master

jobs:
build:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
java: [25]
fail-fast: false

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
cache: 'gradle'

- name: Install Ubuntu dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y cmake build-essential libboost-all-dev

- name: Install macOS dependencies
if: runner.os == 'macOS'
run: |
brew install cmake boost

- name: Cache Bitcoin Kernel build
uses: actions/cache@v4
with:
path: |
bitcoinkernel/bitcoin/build
/usr/local/lib/libbitcoinkernel.*
key: ${{ runner.os }}-bitcoinkernel-${{ hashFiles('bitcoinkernel/bitcoin/**') }}
restore-keys: |
${{ runner.os }}-bitcoinkernel-

- name: Build bitcoinkernel
run: |
cd bitcoinkernel/bitcoin
cmake -B build -DBUILD_KERNEL_LIB=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)
sudo cmake --install build

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: ./gradlew build --no-daemon --stacktrace

- name: Run tests
run: ./gradlew test --no-daemon --stacktrace
continue-on-error: false

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.os }}-java${{ matrix.java }}
path: |
build/reports/tests/
build/test-results/

- name: Upload build artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: build-artifacts-${{ matrix.os }}-java${{ matrix.java }}
path: build/libs/

code-quality:
name: Code Quality Checks
runs-on: ubuntu-latest

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

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

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Run checkstyle (if configured)
run: ./gradlew checkstyleMain checkstyleTest --no-daemon
continue-on-error: true

- name: Run spotbugs (if configured)
run: ./gradlew spotbugsMain --no-daemon
Loading