Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9081a2d
Update Gradle wrapper and project configurations for JDK 22 compatibi…
craigpnnl Sep 5, 2025
d687f17
Refactor GOSS core to migrate from Felix DM to OSGi Declarative Services
craigpnnl Sep 8, 2025
46adedc
Updated project files to reflect new module structure.
craigpnnl Oct 27, 2025
b59fc2b
Refactor project files for Gradle compatibility and update classpath …
craigpnnl Oct 27, 2025
7b05eae
Update pnnl.goss.core/src/pnnl/goss/core/server/web/Hello.java
craigpnnl Oct 27, 2025
c0c25ad
Update pnnl.goss.core/src/pnnl/goss/core/server/web/Default.java
craigpnnl Oct 27, 2025
180d311
Update settings.gradle
craigpnnl Oct 27, 2025
dc5f286
Refactor web services and filters for improved readability and consis…
craigpnnl Oct 27, 2025
84ec4dc
Refactor and enhance server components for improved readability and m…
craigpnnl Oct 27, 2025
e55789b
Migrate project from JDK 22 to JDK 21 LTS
craigpnnl Nov 1, 2025
13ddba8
Add OSGi integration tests and refactor JMS imports to Jakarta
craigpnnl Nov 19, 2025
50ad397
Refactor GOSS Core Integration Tests and Update Dependencies
craigpnnl Nov 19, 2025
3d3fee4
Refactor integration tests for improved readability and consistency
craigpnnl Nov 19, 2025
d58215c
Add BndRunner plugin for OSGi runner generation and update dependencies
craigpnnl Nov 20, 2025
1628c0c
Refactor CI/CD pipeline to support JDK 21 and update documentation fo…
craigpnnl Nov 20, 2025
7ff9f7d
Merge pull request #34 from craig8/jdk-22-update
craigpnnl Nov 20, 2025
24fd374
Remove outdated JAR files and introduce new versions for various comp…
craigpnnl Nov 20, 2025
b693c4c
Update repository configuration comments and remove fallback to BND Hub
craigpnnl Nov 21, 2025
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
70 changes: 70 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# EditorConfig is awesome: https://EditorConfig.org
# This file defines consistent coding styles for GOSS project
# Supported by VS Code, IntelliJ IDEA, Eclipse, and many other editors

root = true

# All files
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab
tab_width = 4

# Java files
[*.java]
indent_style = tab
indent_size = 4
tab_width = 4
max_line_length = 120
continuation_indent_size = 8

# Gradle files
[*.gradle]
indent_style = tab
indent_size = 4
tab_width = 4

# Properties files
[*.{properties,cfg}]
indent_style = space
indent_size = 4

# BND files
[*.{bnd,bndrun}]
indent_style = tab
indent_size = 4
tab_width = 4

# Markdown files
[*.{md,markdown}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = false

# YAML files (GitHub Actions, etc.)
[*.{yml,yaml}]
indent_style = space
indent_size = 2

# JSON files
[*.json]
indent_style = space
indent_size = 2

# XML files
[*.xml]
indent_style = space
indent_size = 2

# Shell scripts
[*.{sh,bash}]
indent_style = space
indent_size = 2

# Travis CI (legacy - keeping for reference)
[.travis.yml]
indent_style = space
indent_size = 2
35 changes: 35 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: "GOSS CodeQL Configuration"

queries:
- name: security-and-quality
uses: security-and-quality
- name: security-extended
uses: security-extended

# Paths to analyze
paths:
- pnnl.goss.core/src
- pnnl.goss.core.runner/src
- pnnl.goss.core.testutil/src
- pnnl.goss.core.itests/src

# Paths to ignore
paths-ignore:
- "**/generated/**"
- "**/target/**"
- "**/build/**"
- "**/*.log"
- "**/cache/**"
- "**/releaserepo/**"
- "**/test/**/*.java" # Focus on main source code

# Disable queries that may produce too many false positives
disable-default-queries: false

# Additional packs for enhanced security analysis
packs:
- codeql/java-queries:AlertSuppression.ql
- codeql/java-queries:Security/CWE
- codeql/java-queries:Security/CWE/CWE-078.ql # OS Command Injection
- codeql/java-queries:Security/CWE/CWE-089.ql # SQL Injection
- codeql/java-queries:Security/CWE/CWE-798.ql # Hard-coded credentials
205 changes: 205 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
name: CI/CD Pipeline

on:
push:
branches: [ main, master, develop, upstream_develop ]
pull_request:
branches: [ main, master, develop ]
schedule:
# Run tests weekly on Sundays at 2 AM UTC
- cron: '0 2 * * 0'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Test Suite
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
java-version: [21, 22]
include:
- java-version: 21
primary: true

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history for better analysis

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

- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
cnf/cache
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'cnf/**/*.bnd') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: Make gradlew executable
run: chmod +x gradlew

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v2

- name: Run unit tests
run: ./gradlew test --continue --no-daemon
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Run integration tests (non-OSGi)
run: ./gradlew check -x :pnnl.goss.core.itests:testOSGi --continue --no-daemon
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Build project
run: ./gradlew build -x :pnnl.goss.core.itests:testOSGi --no-daemon
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Generate test report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Test Results (JDK ${{ matrix.java-version }})
path: '**/generated/test-results/test/TEST-*.xml'
reporter: java-junit
fail-on-error: false

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-jdk${{ matrix.java-version }}
path: |
**/generated/test-results/
**/generated/reports/
retention-days: 30

- name: Upload build artifacts (primary JDK only)
if: matrix.primary && (success() || failure())
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
**/generated/*.jar
cnf/releaserepo/**/*.jar
retention-days: 90

osgi-integration-tests:
name: OSGi Integration Tests
runs-on: ubuntu-latest
needs: test
if: github.event_name != 'schedule' # Skip on scheduled runs

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

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

- name: Make gradlew executable
run: chmod +x gradlew

- name: Run OSGi integration tests
run: ./gradlew :pnnl.goss.core.itests:testOSGi --no-daemon || true
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Upload OSGi test results
if: always()
uses: actions/upload-artifact@v4
with:
name: osgi-test-results
path: |
pnnl.goss.core.itests/generated/test-results/
pnnl.goss.core.itests/generated/reports/
pnnl.goss.core.itests/**/*.log
retention-days: 30

build-runners:
name: Build OSGi Runners
runs-on: ubuntu-latest
needs: test
if: github.event_name != 'schedule'

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

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

- name: Make gradlew executable
run: chmod +x gradlew

- name: Build all GOSS bundles
run: ./gradlew :pnnl.goss.core:jar --no-daemon
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Build OSGi runners using BndRunnerPlugin
run: |
./gradlew buildRunner.goss-core --no-daemon
./gradlew buildRunner.goss-core-ssl --no-daemon
env:
GRADLE_OPTS: -Xmx2g -Dorg.gradle.daemon=false

- name: Verify runner JARs created
run: |
ls -lh pnnl.goss.core.runner/generated/runners/
test -f pnnl.goss.core.runner/generated/runners/goss-core-runner.jar
test -f pnnl.goss.core.runner/generated/runners/goss-core-ssl-runner.jar
echo "✅ All runner JARs built successfully"

- name: Upload runner artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: osgi-runners
path: pnnl.goss.core.runner/generated/runners/*.jar
retention-days: 30

build-status:
name: Build Status
runs-on: ubuntu-latest
needs: [test, osgi-integration-tests, build-runners]
if: always()

steps:
- name: Check build status
run: |
echo "Test job status: ${{ needs.test.result }}"
echo "OSGi job status: ${{ needs.osgi-integration-tests.result }}"
echo "Build runners job status: ${{ needs.build-runners.result }}"

if [[ "${{ needs.test.result }}" == "success" ]] && [[ "${{ needs.build-runners.result }}" == "success" ]]; then
echo "✅ Core build, tests, and runners passed!"
exit 0
else
echo "❌ Build, tests, or runners failed"
exit 1
fi
Loading
Loading