Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
8d0a785
[STX-57] simplified native build, removed native-image metadata gener…
kamilchociej Jun 23, 2026
c4b73d8
[STX-57] ensure mandrel GraalVM on GHActions
kamilchociej Jul 27, 2026
01306c0
[STX-57] remove build with native agent
kamilchociej Jul 27, 2026
5c9d1c4
[STX-57] set default surefire.forkCount to 1
kamilchociej Jul 27, 2026
2055a44
[STX-57] use github_token input instead of secret
kamilchociej Jul 27, 2026
e9f32fa
[STX-57] use 2.1.0-dev.15 StreamX version
kamilchociej Jul 27, 2026
8e1c595
[STX-57] use 2.1.0-dev.16 StreamX version
kamilchociej Jul 28, 2026
4611405
Merge remote-tracking branch 'origin/main' into chore/native-build-im…
kamilchociej Jul 28, 2026
923e4fa
[no ci] [maven-release-plugin] prepare release 2.0.4-rc.4611405
streamx-cli-release-bot[bot] Jul 28, 2026
494150d
[no ci] [maven-release-plugin] prepare for next development iteration
streamx-cli-release-bot[bot] Jul 28, 2026
3744c2f
[STX-57] removed macos-amd64 from native build because there is no Ma…
kamilchociej Jul 28, 2026
7cdb2a9
Merge remote-tracking branch 'origin/chore/native-build-improvement' …
kamilchociej Jul 28, 2026
c036037
[no ci] [maven-release-plugin] prepare release 2.0.4-rc.7cdb2a9
streamx-cli-release-bot[bot] Jul 28, 2026
6940cd7
[no ci] [maven-release-plugin] prepare for next development iteration
streamx-cli-release-bot[bot] Jul 28, 2026
b54f0aa
[STX-57] removed macos-amd64 jreleaser config
kamilchociej Jul 28, 2026
668beb1
Merge remote-tracking branch 'origin/chore/native-build-improvement' …
kamilchociej Jul 28, 2026
15ce5e6
[no ci] [maven-release-plugin] prepare release 2.0.4-rc.668beb1
streamx-cli-release-bot[bot] Jul 28, 2026
f82687e
[no ci] [maven-release-plugin] prepare for next development iteration
streamx-cli-release-bot[bot] Jul 28, 2026
fcb0400
Merge remote-tracking branch 'origin/main' into chore/native-build-im…
kamilchociej Jul 29, 2026
85d329b
[no ci] [maven-release-plugin] prepare release 2.0.4-rc.fcb0400
streamx-cli-release-bot[bot] Jul 29, 2026
92d2bbf
[no ci] [maven-release-plugin] prepare for next development iteration
streamx-cli-release-bot[bot] Jul 29, 2026
63fbda8
[STX-57] include container/** resources in native build
kamilchociej Jul 29, 2026
45dea74
[no ci] [maven-release-plugin] prepare release 2.0.4-rc.63fbda8
streamx-cli-release-bot[bot] Jul 29, 2026
b569618
[no ci] [maven-release-plugin] prepare for next development iteration
streamx-cli-release-bot[bot] Jul 29, 2026
87d3b28
[STX-57] set 2.1.0-SNAPSHOT version
kamilchociej Jul 31, 2026
7d7d95c
[STX-57] add information about native build configuration in CONTRIBU…
kamilchociej Jul 31, 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
4 changes: 2 additions & 2 deletions .github/actions/setup-env/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ runs:
- name: Set up JDK
uses: graalvm/setup-graalvm@v1
with:
java-version: '25.0.1'
distribution: 'graalvm-community'
java-version: '21'
distribution: 'mandrel'
github-token: ${{ inputs.github_token }}
6 changes: 1 addition & 5 deletions .github/jreleaser/jreleaser-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ project:

platform:
replacements:
osx-x86_64: macos-x86_64
osx-aarch_64: macos-aarch64

assemble:
Expand Down Expand Up @@ -48,8 +47,6 @@ distributions:
platform: linux-aarch_64
- path: artifacts/streamx-{{projectVersion}}-macos-aarch64.zip
platform: osx-aarch_64
- path: artifacts/streamx-{{projectVersion}}-macos-x86_64.zip
platform: osx-x86_64

streamx-jar:
type: JAVA_BINARY
Expand Down Expand Up @@ -100,5 +97,4 @@ files:
artifacts:
- path: artifacts/streamx-linux-x86_64
- path: artifacts/streamx-linux-aarch64
- path: artifacts/streamx-macos-aarch64
- path: artifacts/streamx-macos-x86_64
- path: artifacts/streamx-macos-aarch64
6 changes: 1 addition & 5 deletions .github/jreleaser/jreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ project:

platform:
replacements:
osx-x86_64: macos-x86_64
osx-aarch_64: macos-aarch64

assemble:
Expand Down Expand Up @@ -48,8 +47,6 @@ distributions:
platform: linux-aarch_64
- path: artifacts/streamx-{{projectVersion}}-macos-aarch64.zip
platform: osx-aarch_64
- path: artifacts/streamx-{{projectVersion}}-macos-x86_64.zip
platform: osx-x86_64

streamx-jar:
type: JAVA_BINARY
Expand Down Expand Up @@ -96,5 +93,4 @@ files:
artifacts:
- path: artifacts/streamx-linux-x86_64
- path: artifacts/streamx-linux-aarch64
- path: artifacts/streamx-macos-aarch64
- path: artifacts/streamx-macos-x86_64
- path: artifacts/streamx-macos-aarch64
41 changes: 0 additions & 41 deletions .github/scripts/merge-native-image-metadata.sh

This file was deleted.

22 changes: 0 additions & 22 deletions .github/scripts/prepare-native-image-metadata.sh

This file was deleted.

8 changes: 1 addition & 7 deletions .github/workflows/build-cross-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ jobs:
PLATFORMS='[
{ "os": "ubuntu-24.04", "name": "linux-amd64", "artifact": "streamx-linux-x86_64" },
{ "os": "ubuntu-24.04-arm", "name": "linux-arm64", "artifact": "streamx-linux-aarch64" },
{ "os": "macos-26-xlarge", "name": "macos-arm64", "artifact": "streamx-macos-aarch64" },
{ "os": "macos-26-large", "name": "macos-amd64", "artifact": "streamx-macos-x86_64" }
{ "os": "macos-26-xlarge", "name": "macos-arm64", "artifact": "streamx-macos-aarch64" }
]'
echo "platforms=$(echo "$PLATFORMS" | jq -c .)" >> "$GITHUB_OUTPUT"

Expand All @@ -58,11 +57,6 @@ jobs:
gar_docker_registry: ${{ vars.GAR_DOCKER_REGISTRY }}
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Run tests with native-image-agent (Linux only)
if: startsWith(matrix.name, 'linux')
run: |
.github/scripts/with-capture-docker-logs.sh ./mvnw verify -Pci -T 2 -Dsurefire.forkCount=8 -Dit.forkCount=4

- name: Build native-image executable
run: |
.github/scripts/with-capture-docker-logs.sh ./mvnw verify -Pci,native -T 2 -Dsurefire.forkCount=8 -Dit.forkCount=4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ jobs:
java -jar target/*-runner.jar completion zsh > artifacts/completions/_streamx

echo "Pre-create platform ZIPs for native binaries"
for PLATFORM in linux-x86_64 linux-aarch64 macos-aarch64 macos-x86_64; do
for PLATFORM in linux-x86_64 linux-aarch64 macos-aarch64; do
mkdir -p staging/$PLATFORM/bin
mkdir -p staging/$PLATFORM/share/completions
cp artifacts/streamx-$PLATFORM staging/$PLATFORM/bin/streamx
Expand Down
29 changes: 12 additions & 17 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,8 @@

## Build

- Ensure that you have Java 25 GraalVM installed.
- First you need to run `./mvnw clean verify` to build the project with.
It's needed to generate metadata for building native-image in the next step.

- Then you can run `./mvnw verify -Dnative` **without the clean goal** to build the native executable.

## Native image reachability metadata

The native image build requires GraalVM reachability metadata (`reachability-metadata.json`) to know which classes need reflection, resources, etc.

- **macOS metadata** is committed as `src/main/resources/META-INF/native-image/reachability-metadata-macos.json`. To update it, run the metadata generation step on a Mac:
```
./mvnw verify -T 2 -Dsurefire.forkCount=8 -Dit.forkCount=4
```
The `reachability-metadata-macos.json` file is updated automatically. Commit the result.
- **Linux metadata** is generated automatically on CI during the build.
- The merge script (`.github/scripts/merge-native-image-metadata.sh`) combines all `reachability-metadata-*.json` files with any agent-traced fork metadata into the final `reachability-metadata.json` used by the native image build.
- Ensure that you have [Mandrel 23](https://github.com/graalvm/mandrel/releases/tag/mandrel-23.1.11.0-Final) installed.
- Then you can run `./mvnw clean install -Dnative` to build the native executable.

## Development

Expand All @@ -38,6 +23,16 @@ Otherwise, CI will fail because at this moment Docker isn't supported on macOS a

- Use `e` button to edit CLI arguments.

### Native build configuration
Native build requires additional configuration like registering classes for reflection or registering resources to be included
in native artifact. This project uses `quarkus.native.resources.includes` property in
[application.properties](src/main/resources/application.properties) for resources registration and
`com/streamx/cli/ReflectionConfiguration.java` for reflection registration. More details about configuring native build can
be found in:
* https://quarkus.io/guides/writing-native-applications-tips
* https://quarkus.io/guides/native-reference


## Running tests

`./mvnw verify -Dnative`
Expand Down
Loading
Loading