mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
* build: Add xtask automation for binding version management Introduces a dedicated xtask crate that keeps language binding versions in sync with the core regorus crate, following the workflow pattern used by rust-analyzer, gitoxide, and ripgrep. Key features: - Git-based change detection: compares binding source files against a base ref (merge-base with origin/main by default) plus unstaged/ untracked files to identify which bindings have been modified - SemVer-aware bumping: binding edits trigger a minor version increment (e.g. 0.5.1 → 0.6.0) under pre-1.0 semantics, signaling potential breaking changes; clean bindings simply align to the root version - Multi-language support: updates Cargo manifests (Rust FFI, Java, Python, WASM, Ruby), Maven pom.xml (Java), Ruby version constants, and C# project files in a single pass - CI integration: --check mode fails fast when manifests are out of sync, ensuring pre-commit and release-plz workflows catch stale versions before merge Integration points: - release-plz.toml: runs cargo xtask bindings --base-ref origin/main after bumping the root crate, so binding versions are updated atomically during the release process - scripts/pre-commit: invokes cargo xtask bindings --check to block commits that would leave bindings out of sync - .cargo/config.toml: defines cargo xtask alias for convenience Documentation includes inline examples showing how version bumps behave when bindings are ahead/behind the root, and notes that the minor field acts as the major version under SemVer 0.y.z initial development phase. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> * build: refresh xtask tooling, workflows, and locks - cargo xtask bindings: keep the binding version-sync pipeline intact - cargo xtask update-deps: new helper to regenerate workspace/binding Cargo.lock files - workflows: auto-detect the Java jar version in CI and temporarily disable the Ruby workflow - lock files: refresh root + binding snapshots after the dependency sweep Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> --------- Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
name: bindings/java
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
schedule:
|
|
# Run at 8:00 AM every day
|
|
- cron: "0 8 * * *"
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
|
|
with:
|
|
java-version: 8
|
|
distribution: "corretto"
|
|
- uses: ./.github/actions/toolchains/rust
|
|
|
|
- name: Building binding
|
|
run: |
|
|
cargo clippy --all-targets --no-deps -- -Dwarnings
|
|
cargo build --release --manifest-path bindings/java/Cargo.toml --locked
|
|
|
|
- name: Capture binding version
|
|
run: |
|
|
version=$(cargo metadata --manifest-path bindings/java/Cargo.toml --format-version 1 \
|
|
| jq -r '.packages[] | select(.name == "regorus-java") | .version')
|
|
echo "REGORUS_JAVA_VERSION=$version" >> "$GITHUB_ENV"
|
|
|
|
- name: Build jar
|
|
run: mvn package
|
|
working-directory: ./bindings/java
|
|
|
|
- name: Test jar
|
|
run: |
|
|
jar="regorus-java-${REGORUS_JAVA_VERSION}.jar"
|
|
javac -cp "target/${jar}" Test.java
|
|
java -Djava.library.path=target/release -cp "target/${jar}:." Test
|
|
working-directory: ./bindings/java
|