diff --git a/.github/workflows/maven-ci.yml b/.github/workflows/maven-ci.yml
index 16d155b42d..c12352a4ca 100644
--- a/.github/workflows/maven-ci.yml
+++ b/.github/workflows/maven-ci.yml
@@ -57,7 +57,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- java: [17,21,25]
+ java: [17,21,25,27]
steps:
- uses: actions/checkout@v7
- name: Set up JDK ${{ matrix.java }}
@@ -108,24 +108,40 @@ jobs:
- 'log.extension/**'
examples:
- 'examples/**'
- - name: Felix SCR
- if: steps.changes.outputs.scr == 'true'
- run: mvn -B -V -Dstyle.color=always --file scr/pom.xml clean verify
- name: Felix Log
if: steps.changes.outputs.log == 'true'
run: mvn -B -V -Dstyle.color=always --file log/pom.xml clean verify
- # Built and installed before Felix HTTP, whose integration tests run on it.
- # Also runs when only http changed, so those tests always exercise the framework
- # in this repository rather than the last release. See FELIX-6869.
+ # Several modules pin released Felix bundles as test-scoped dependencies so that
+ # they still build on their own. Each such pin is a property, which the steps below
+ # override with the version built from this repository, so the tests exercise the
+ # code being changed rather than the last release. A producer is therefore built and
+ # installed whenever it or one of its consumers changed. See FELIX-6870.
+ - name: Resolve the versions built in this repository
+ if: steps.changes.outputs.framework == 'true' || steps.changes.outputs.http == 'true' || steps.changes.outputs.configadmin == 'true' || steps.changes.outputs.scr == 'true' || steps.changes.outputs.gogo == 'true' || steps.changes.outputs.utils == 'true' || steps.changes.outputs.resolver == 'true'
+ run: |
+ record() {
+ echo "$1=$2" >> "$GITHUB_ENV"
+ echo "$1 = $2"
+ }
+ for module in framework configadmin utils; do
+ record "$(echo "$module" | tr 'a-z' 'A-Z')_VERSION" "$(mvn -B -q --file "$module/pom.xml" help:evaluate -Dexpression=project.version -DforceStdout)"
+ done
+ # gogo-parent is not published anywhere, so these only resolve inside the gogo reactor.
+ for module in command runtime shell jline; do
+ record "GOGO_$(echo "$module" | tr 'a-z' 'A-Z')_VERSION" "$(mvn -B -q --file gogo/pom.xml -pl "$module" help:evaluate -Dexpression=project.version -DforceStdout)"
+ done
- name: Felix Framework
- if: steps.changes.outputs.framework == 'true' || steps.changes.outputs.http == 'true'
+ if: steps.changes.outputs.framework == 'true' || steps.changes.outputs.http == 'true' || steps.changes.outputs.configadmin == 'true' || steps.changes.outputs.scr == 'true' || steps.changes.outputs.gogo == 'true'
run: mvn -B -V -Dstyle.color=always --file framework/pom.xml clean install
+ - name: Felix Config Admin
+ if: steps.changes.outputs.configadmin == 'true' || steps.changes.outputs.scr == 'true'
+ run: mvn -B -V -Dstyle.color=always --file configadmin/pom.xml clean install "-Dfelix.framework.version=$FRAMEWORK_VERSION"
+ - name: Felix SCR
+ if: steps.changes.outputs.scr == 'true'
+ run: mvn -B -V -Dstyle.color=always --file scr/pom.xml clean verify "-Dfelix.framework.version=$FRAMEWORK_VERSION" "-Dfelix.configadmin.version=$CONFIGADMIN_VERSION"
- name: Felix HTTP
if: steps.changes.outputs.http == 'true'
- run: |
- FRAMEWORK_VERSION=$(mvn -B -q --file framework/pom.xml help:evaluate -Dexpression=project.version -DforceStdout)
- echo "Running the integration tests against framework $FRAMEWORK_VERSION"
- mvn -B -V -Dstyle.color=always "-Dit.test=!MissingWebsocketDependenciesIT" --file http/pom.xml clean install verify "-Dmaven.repo.local=/home/runner/.m2/repository/" "-Dfelix.framework.version=$FRAMEWORK_VERSION"
+ run: mvn -B -V -Dstyle.color=always "-Dit.test=!MissingWebsocketDependenciesIT" --file http/pom.xml clean install verify "-Dmaven.repo.local=/home/runner/.m2/repository/" "-Dfelix.framework.version=$FRAMEWORK_VERSION"
- name: Felix Maven bundle plugin
if: steps.changes.outputs.maven-bundle-plugin == 'true'
run: mvn -B -V -Dstyle.color=always --file tools/maven-bundle-plugin/pom.xml clean install verify
@@ -143,16 +159,16 @@ jobs:
run: mvn -B -V -Dstyle.color=always --file main/pom.xml clean verify
- name: Felix Gogo Shell
if: steps.changes.outputs.gogo == 'true'
- run: mvn -B -V -Dstyle.color=always --file gogo/pom.xml clean verify
+ run: mvn -B -V -Dstyle.color=always --file gogo/pom.xml clean verify "-Dfelix.gogo.command.version=$GOGO_COMMAND_VERSION" "-Dfelix.gogo.runtime.version=$GOGO_RUNTIME_VERSION" "-Dfelix.gogo.shell.version=$GOGO_SHELL_VERSION" "-Dfelix.gogo.jline.version=$GOGO_JLINE_VERSION" "-Dfelix.framework.version=$FRAMEWORK_VERSION"
- name: Felix utils
- if: steps.changes.outputs.utils == 'true'
- run: mvn -B -V -Dstyle.color=always --file utils/pom.xml clean verify
+ if: steps.changes.outputs.utils == 'true' || steps.changes.outputs.resolver == 'true'
+ run: mvn -B -V -Dstyle.color=always --file utils/pom.xml clean install
- name: Felix connect
if: steps.changes.outputs.connect == 'true'
run: mvn -B -V -Dstyle.color=always --file connect/pom.xml clean verify
- name: Felix resolver
if: steps.changes.outputs.resolver == 'true'
- run: mvn -B -V -Dstyle.color=always --file resolver/pom.xml clean verify
+ run: mvn -B -V -Dstyle.color=always --file resolver/pom.xml clean verify "-Dfelix.utils.version=$UTILS_VERSION"
- name: Felix bundlerepository
if: steps.changes.outputs.bundlerepository == 'true'
run: mvn -B -V -Dstyle.color=always --file bundlerepository/pom.xml clean verify
@@ -162,9 +178,6 @@ jobs:
- name: Felix examples
if: steps.changes.outputs.examples == 'true'
run: mvn -B -V -Dstyle.color=always --file examples/pom.xml clean verify
- - name: Felix Config Admin
- if: steps.changes.outputs.configadmin == 'true'
- run: mvn -B -V -Dstyle.color=always --file configadmin/pom.xml clean verify
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
diff --git a/configadmin/pom.xml b/configadmin/pom.xml
index 9ba50950ed..74d39f344c 100644
--- a/configadmin/pom.xml
+++ b/configadmin/pom.xml
@@ -72,6 +72,11 @@
${bundle.build.name}/${project.build.finalName}.jar
+
+ 7.0.5
@@ -165,12 +170,15 @@
org.apache.felix
org.apache.felix.framework
- 7.0.5
+ ${felix.framework.version}
test
org.apache.felix
org.apache.felix.framework.security
+
2.8.3
test
diff --git a/gogo/itest-jline/pom.xml b/gogo/itest-jline/pom.xml
index 7599f09a59..fa5da39628 100644
--- a/gogo/itest-jline/pom.xml
+++ b/gogo/itest-jline/pom.xml
@@ -44,6 +44,15 @@
true
true
true
+
+ 1.1.2
+ 1.1.8
+ 1.1.4
+ 6.0.1
@@ -54,18 +63,22 @@
org.apache.felix
org.apache.felix.gogo.command
+ ${felix.gogo.command.version}
org.apache.felix
org.apache.felix.gogo.jline
+ ${felix.gogo.jline.version}
org.apache.felix
org.apache.felix.gogo.runtime
+ ${felix.gogo.runtime.version}
org.apache.felix
org.apache.felix.framework
+ ${felix.framework.version}
diff --git a/gogo/itest-shell/pom.xml b/gogo/itest-shell/pom.xml
index ba57ed19dc..b1e0c3c0c3 100644
--- a/gogo/itest-shell/pom.xml
+++ b/gogo/itest-shell/pom.xml
@@ -44,6 +44,15 @@
true
true
true
+
+ 1.1.2
+ 1.1.4
+ 1.1.4
+ 6.0.1
@@ -54,18 +63,22 @@
org.apache.felix
org.apache.felix.gogo.command
+ ${felix.gogo.command.version}
org.apache.felix
org.apache.felix.gogo.shell
+ ${felix.gogo.shell.version}
org.apache.felix
org.apache.felix.gogo.runtime
+ ${felix.gogo.runtime.version}
org.apache.felix
org.apache.felix.framework
+ ${felix.framework.version}
diff --git a/gogo/jline/pom.xml b/gogo/jline/pom.xml
index 9508dc688c..aa6c1aa362 100644
--- a/gogo/jline/pom.xml
+++ b/gogo/jline/pom.xml
@@ -44,6 +44,11 @@
1.8
1.8
7.1.0
+
+ 1.1.2
@@ -63,7 +68,7 @@
org.apache.felix
org.apache.felix.gogo.command
- 1.1.2
+ ${felix.gogo.command.version}
test
diff --git a/http/itest/pom.xml b/http/itest/pom.xml
index 786df7a264..ec61bd6bd0 100644
--- a/http/itest/pom.xml
+++ b/http/itest/pom.xml
@@ -37,6 +37,11 @@
org.apache.felix.http.jetty12
4.13.3
2.6.14
+
+ 7.0.5
@@ -163,7 +168,7 @@
org.apache.felix
org.apache.felix.framework
- 7.0.5
+ ${felix.framework.version}
test
diff --git a/resolver/pom.xml b/resolver/pom.xml
index 1355825d5a..7570cc8483 100644
--- a/resolver/pom.xml
+++ b/resolver/pom.xml
@@ -57,7 +57,7 @@
org.apache.felix
org.apache.felix.utils
- 1.8.0
+ ${felix.utils.version}
test
@@ -69,6 +69,11 @@
+
+ 1.8.0
diff --git a/scr/pom.xml b/scr/pom.xml
index 8aeaf09fd4..cfe7c58029 100644
--- a/scr/pom.xml
+++ b/scr/pom.xml
@@ -71,6 +71,13 @@
${java.version}
${java.version}
${java.version}
+
+
+ 7.0.1
+ 1.9.0
@@ -259,7 +266,7 @@
org.apache.felix
org.apache.felix.configadmin
- 1.9.0
+ ${felix.configadmin.version}
test
@@ -399,7 +406,7 @@
org.apache.felix
org.apache.felix.framework
- 7.0.1
+ ${felix.framework.version}
test