diff --git a/.github/actions/java-test/action.yaml b/.github/actions/java-test/action.yaml new file mode 100644 index 000000000..dd45ab8d6 --- /dev/null +++ b/.github/actions/java-test/action.yaml @@ -0,0 +1,43 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +runs: + using: "composite" + steps: + - name: Run cargo build + shell: bash + run: | + cd core + cargo build + + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Run Maven compile + shell: bash + run: | + ./mvnw compile test-compile scalafix:scalafix -Psemanticdb + + - name: Run tests + shell: bash + run: | + SPARK_HOME=`pwd` ./mvnw clean install diff --git a/.github/actions/rust-test/action.yaml b/.github/actions/rust-test/action.yaml new file mode 100644 index 000000000..7a8a14b07 --- /dev/null +++ b/.github/actions/rust-test/action.yaml @@ -0,0 +1,63 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + + +runs: + using: "composite" + steps: + - name: Check cargo fmt + shell: bash + run: | + cd core + cargo fmt --all -- --check --color=never + + - name: Check cargo clippy + shell: bash + run: | + cd core + cargo clippy --color=never -- -D warnings + + - name: Check compilation + shell: bash + run: | + cd core + cargo check --benches + + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Build common module (pre-requisite for Rust tests) + shell: bash + run: | + cd common + ../mvnw clean compile -DskipTests + + - name: Run cargo test + shell: bash + run: | + cd core + # This is required to run some JNI related tests on the Rust side + RUST_BACKTRACE=1 \ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/lib:$JAVA_HOME/lib/server:$JAVA_HOME/lib/jli \ + DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$JAVA_HOME/lib:$JAVA_HOME/lib/server:$JAVA_HOME/lib/jli \ + cargo test + diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index fd5a532a9..a2045ba5b 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -51,39 +51,9 @@ jobs: rust-version: nightly jdk-version: ${{env.JAVA_VERSION}} - - name: Check cargo fmt - run: | - cd core - cargo fmt --all -- --check --color=never - - - name: Check cargo clippy - run: | - cd core - cargo clippy --color=never -- -D warnings - - - name: Check compilation - run: | - cd core - cargo check --benches - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Build common module (pre-requisite for Rust tests) - run: | - cd common - ../mvnw clean compile -DskipTests - - - name: Run cargo test - run: | - cd core - # This is required to run some JNI related tests on the Rust side - RUST_BACKTRACE=1 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/lib:$JAVA_HOME/lib/server:$JAVA_HOME/lib/jli cargo test + - uses: actions/checkout@v4 + - name: Rust test steps + uses: ./.github/actions/rust-test linux-java-test: name: Java test (amd64) @@ -97,27 +67,12 @@ jobs: with: rust-version: nightly jdk-version: ${{env.JAVA_VERSION}} + architecture: x64 - - name: Run cargo build - run: | - cd core - cargo build - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Run Maven compile - run: | - ./mvnw compile test-compile scalafix:scalafix -Psemanticdb + - uses: actions/checkout@v4 + - name: Java test steps + uses: ./.github/actions/java-test - - name: Run tests - run: | - SPARK_HOME=`pwd` ./mvnw clean install macos-rust-test: name: Rust test (macos) @@ -131,39 +86,9 @@ jobs: jdk-version: ${{env.JAVA_VERSION}} architecture: x64 - - name: Check cargo fmt - run: | - cd core - cargo fmt --all -- --check --color=never - - - name: Check cargo clippy - run: | - cd core - cargo clippy --color=never -- -D warnings - - - name: Check compilation - run: | - cd core - cargo check --benches - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Build common module (pre-requisite for Rust tests) - run: | - cd common - ../mvnw clean compile -DskipTests - - - name: Run cargo test - run: | - cd core - # This is required to run some JNI related tests on the Rust side - RUST_BACKTRACE=1 DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$JAVA_HOME/lib:$JAVA_HOME/lib/server:$JAVA_HOME/lib/jli cargo test + - uses: actions/checkout@v4 + - name: Rust test steps + uses: ./.github/actions/rust-test macos-java-test: name: Java test (macos) @@ -177,26 +102,9 @@ jobs: jdk-version: ${{env.JAVA_VERSION}} architecture: x64 - - name: Run cargo build - run: | - cd core - cargo build - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Run Maven compile - run: | - ./mvnw compile test-compile scalafix:scalafix -Psemanticdb - - - name: Run tests - run: | - SPARK_HOME=`pwd` ./mvnw clean install + - uses: actions/checkout@v4 + - name: Java test steps + uses: ./.github/actions/java-test macos-aarch64-rust-test: name: Rust test (macos-aarch64) @@ -210,39 +118,9 @@ jobs: jdk-version: ${{env.JAVA_VERSION}} architecture: aarch64 - - name: Check cargo fmt - run: | - cd core - cargo fmt --all -- --check --color=never - - - name: Check cargo clippy - run: | - cd core - cargo clippy --color=never -- -D warnings - - - name: Check compilation - run: | - cd core - cargo check --benches - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Build common module (pre-requisite for Rust tests) - run: | - cd common - ../mvnw clean compile -DskipTests - - - name: Run cargo test - run: | - cd core - # This is required to run some JNI related tests on the Rust side - RUST_BACKTRACE=1 DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$JAVA_HOME/lib:$JAVA_HOME/lib/server:$JAVA_HOME/lib/jli cargo test + - uses: actions/checkout@v4 + - name: Rust test steps + uses: ./.github/actions/rust-test macos-aarch64-java-test: name: Java test (macos-aarch64) @@ -256,23 +134,6 @@ jobs: jdk-version: ${{env.JAVA_VERSION}} architecture: aarch64 - - name: Run cargo build - run: | - cd core - cargo build - - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Run Maven compile - run: | - ./mvnw compile test-compile scalafix:scalafix -Psemanticdb - - - name: Run tests - run: | - SPARK_HOME=`pwd` ./mvnw clean install + - uses: actions/checkout@v4 + - name: Java test steps + uses: ./.github/actions/java-test