This is an automated email from the ASF dual-hosted git repository.

comphead pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new d9a1d4261f [CI] Refactor CI builders  (#8826)
d9a1d4261f is described below

commit d9a1d4261f78dfd3ead235d6b850c64e0ae9bec6
Author: comphead <[email protected]>
AuthorDate: Thu Jan 11 13:16:31 2024 -0800

    [CI] Refactor CI builders  (#8826)
    
    [CI] refactor CI builders
    
    * Update .github/actions/setup-macos-builder/action.yaml
    
    Co-authored-by: Andrew Lamb <[email protected]>
    
    * Update .github/actions/setup-windows-builder/action.yaml
    
    Co-authored-by: Andrew Lamb <[email protected]>
    
    ---------
    
    Co-authored-by: Andrew Lamb <[email protected]>
---
 .github/actions/setup-builder/action.yaml         | 15 +----
 .github/actions/setup-macos-builder/action.yaml   | 47 +++++++++++++++
 .github/actions/setup-rust-runtime/action.yaml    | 41 +++++++++++++
 .github/actions/setup-windows-builder/action.yaml | 46 +++++++++++++++
 .github/workflows/rust.yml                        | 70 +++--------------------
 5 files changed, 143 insertions(+), 76 deletions(-)

diff --git a/.github/actions/setup-builder/action.yaml 
b/.github/actions/setup-builder/action.yaml
index 5a93f6f27b..5578517ec3 100644
--- a/.github/actions/setup-builder/action.yaml
+++ b/.github/actions/setup-builder/action.yaml
@@ -38,19 +38,8 @@ runs:
         rustup toolchain install ${{ inputs.rust-version }}
         rustup default ${{ inputs.rust-version }}
         rustup component add rustfmt
-    - name: Disable debuginfo generation
-      # Disable full debug symbol generation to speed up CI build and keep 
memory down
-      # "1" means line tables only, which is useful for panic tracebacks.
-      shell: bash
-      run: echo "RUSTFLAGS=-C debuginfo=1" >> $GITHUB_ENV
-    - name: Disable incremental compilation
-      # Disable incremental compilation to save diskspace (the CI doesn't 
recompile modified files)
-      # https://github.com/apache/arrow-datafusion/issues/6676
-      shell: bash
-      run: echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
-    - name: Enable backtraces
-      shell: bash
-      run: echo "RUST_BACKTRACE=1" >> $GITHUB_ENV
+    - name: Configure rust runtime env
+      uses: ./.github/actions/setup-rust-runtime
     - name: Fixup git permissions
       # https://github.com/actions/checkout/issues/766
       shell: bash
diff --git a/.github/actions/setup-macos-builder/action.yaml 
b/.github/actions/setup-macos-builder/action.yaml
new file mode 100644
index 0000000000..02419f6179
--- /dev/null
+++ b/.github/actions/setup-macos-builder/action.yaml
@@ -0,0 +1,47 @@
+# 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.
+
+name: Prepare Rust Builder for MacOS
+description: 'Prepare Rust Build Environment for MacOS'
+inputs:
+  rust-version:
+    description: 'version of rust to install (e.g. stable)'
+    required: true
+    default: 'stable'
+runs:
+  using: "composite"
+  steps:
+    - name: Install protobuf compiler
+      shell: bash
+      run: |
+        mkdir -p $HOME/d/protoc
+        cd $HOME/d/protoc
+        export PROTO_ZIP="protoc-21.4-osx-x86_64.zip"        
+        curl -LO 
https://github.com/protocolbuffers/protobuf/releases/download/v21.4/$PROTO_ZIP
+        unzip $PROTO_ZIP
+        echo "$HOME/d/protoc/bin" >> $GITHUB_PATH
+        export PATH=$PATH:$HOME/d/protoc/bin
+        protoc --version
+    - name: Setup Rust toolchain
+      shell: bash
+      run: |
+        rustup update stable
+        rustup toolchain install stable
+        rustup default stable
+        rustup component add rustfmt
+    - name: Configure rust runtime env
+      uses: ./.github/actions/setup-rust-runtime        
diff --git a/.github/actions/setup-rust-runtime/action.yaml 
b/.github/actions/setup-rust-runtime/action.yaml
new file mode 100644
index 0000000000..90e09a957c
--- /dev/null
+++ b/.github/actions/setup-rust-runtime/action.yaml
@@ -0,0 +1,41 @@
+# 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.
+
+name: Setup Rust Runtime
+description: 'Setup Rust Runtime Environment'
+runs:
+  using: "composite"
+  steps:
+    - name: Run sccache-cache
+      uses: mozilla-actions/[email protected]   
+    - name: Configure runtime env
+      shell: bash
+      # do not produce debug symbols to keep memory usage down
+      # hardcoding other profile params to avoid profile override values
+      # More on Cargo profiles 
https://doc.rust-lang.org/cargo/reference/profiles.html?profile-settings#profile-settings
+      # 
+      # Set debuginfo=line-tables-only as debuginfo=0 causes immensely slow 
build
+      # See for more details: https://github.com/rust-lang/rust/issues/119560
+      #
+      # set RUST_MIN_STACK to avoid rust stack overflows on tpc-ds tests
+      run: |
+        echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV  
+        echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV 
+        echo "RUST_BACKTRACE=1" >> $GITHUB_ENV
+        echo "RUST_MIN_STACK=3000000" >> $GITHUB_ENV
+        echo "RUST_FLAGS=-C debuginfo=line-tables-only -C incremental=false" 
>> $GITHUB_ENV                                   
+     
diff --git a/.github/actions/setup-windows-builder/action.yaml 
b/.github/actions/setup-windows-builder/action.yaml
new file mode 100644
index 0000000000..9ab5c4a8b1
--- /dev/null
+++ b/.github/actions/setup-windows-builder/action.yaml
@@ -0,0 +1,46 @@
+# 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.
+
+name: Prepare Rust Builder for Windows
+description: 'Prepare Rust Build Environment for Windows'
+inputs:
+  rust-version:
+    description: 'version of rust to install (e.g. stable)'
+    required: true
+    default: 'stable'
+runs:
+  using: "composite"
+  steps:
+    - name: Install protobuf compiler
+      shell: bash
+      run: |
+        mkdir -p $HOME/d/protoc
+        cd $HOME/d/protoc
+        export PROTO_ZIP="protoc-21.4-win64.zip"
+        curl -LO 
https://github.com/protocolbuffers/protobuf/releases/download/v21.4/$PROTO_ZIP
+        unzip $PROTO_ZIP
+        export PATH=$PATH:$HOME/d/protoc/bin
+        protoc.exe --version
+    - name: Setup Rust toolchain
+      shell: bash
+      run: |
+        rustup update stable
+        rustup toolchain install stable
+        rustup default stable
+        rustup component add rustfmt
+    - name: Configure rust runtime env
+      uses: ./.github/actions/setup-rust-runtime        
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index ae6c1ee561..62992e7acf 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -96,17 +96,9 @@ jobs:
       - name: Setup Rust toolchain
         uses: ./.github/actions/setup-builder
         with:
-          rust-version: stable
+          rust-version: stable        
       - name: Run tests (excluding doctests)
         run: cargo test --lib --tests --bins --features avro,json,backtrace
-        env:
-          # do not produce debug symbols to keep memory usage down
-          # hardcoding other profile params to avoid profile override values
-          # More on Cargo profiles 
https://doc.rust-lang.org/cargo/reference/profiles.html?profile-settings#profile-settings
-          RUSTFLAGS: "-C debuginfo=0 -C opt-level=0 -C incremental=false -C 
codegen-units=256"
-          RUST_BACKTRACE: "1"
-          # avoid rust stack overflows on tpc-ds tests
-          RUST_MIN_STACK: "3000000"
       - name: Verify Working Directory Clean
         run: git diff --exit-code
 
@@ -284,24 +276,8 @@ jobs:
       - uses: actions/checkout@v4
         with:
           submodules: true
-      - name: Install protobuf compiler
-        shell: bash
-        run: |
-          mkdir -p $HOME/d/protoc
-          cd $HOME/d/protoc
-          export PROTO_ZIP="protoc-21.4-win64.zip"
-          curl -LO 
https://github.com/protocolbuffers/protobuf/releases/download/v21.4/$PROTO_ZIP
-          unzip $PROTO_ZIP
-          export PATH=$PATH:$HOME/d/protoc/bin
-          protoc.exe --version
-      # TODO: this won't cache anything, which is expensive. Setup this action
-      # with a OS-dependent path.
       - name: Setup Rust toolchain
-        run: |
-          rustup update stable
-          rustup toolchain install stable
-          rustup default stable
-          rustup component add rustfmt
+        uses: ./.github/actions/setup-windows-builder
       - name: Run tests (excluding doctests)
         shell: bash
         run: |
@@ -309,54 +285,22 @@ jobs:
           cargo test --lib --tests --bins --features avro,json,backtrace
           cd datafusion-cli
           cargo test --lib --tests --bins --all-features
-        env:
-          # Minimize producing debug symbols to keep memory usage down
-          # Set debuginfo=line-tables-only as debuginfo=0 causes immensely 
slow build
-          # See for more details: 
https://github.com/rust-lang/rust/issues/119560
-          RUSTFLAGS: "-C debuginfo=line-tables-only"
-          RUST_BACKTRACE: "1"
-          # avoid rust stack overflows on tpc-ds tests
-          RUST_MIN_STACK: "3000000"
+
   macos:
-    name: cargo test (mac)
+    name: cargo test (macos)
     runs-on: macos-latest
     steps:
       - uses: actions/checkout@v4
         with:
-          submodules: true
-      - name: Install protobuf compiler
-        shell: bash
-        run: |
-          mkdir -p $HOME/d/protoc
-          cd $HOME/d/protoc
-          export PROTO_ZIP="protoc-21.4-osx-x86_64.zip"
-          curl -LO 
https://github.com/protocolbuffers/protobuf/releases/download/v21.4/$PROTO_ZIP
-          unzip $PROTO_ZIP
-          echo "$HOME/d/protoc/bin" >> $GITHUB_PATH
-          export PATH=$PATH:$HOME/d/protoc/bin
-          protoc --version
-      # TODO: this won't cache anything, which is expensive. Setup this action
-      # with a OS-dependent path.
+          submodules: true      
       - name: Setup Rust toolchain
-        run: |
-          rustup update stable
-          rustup toolchain install stable
-          rustup default stable
-          rustup component add rustfmt
+        uses: ./.github/actions/setup-macos-builder       
       - name: Run tests (excluding doctests)
         shell: bash
         run: |
           cargo test --lib --tests --bins --features avro,json,backtrace
           cd datafusion-cli
-          cargo test --lib --tests --bins --all-features
-        env:
-          # do not produce debug symbols to keep memory usage down
-          # hardcoding other profile params to avoid profile override values
-          # More on Cargo profiles 
https://doc.rust-lang.org/cargo/reference/profiles.html?profile-settings#profile-settings
-          RUSTFLAGS: "-C debuginfo=0 -C opt-level=0 -C incremental=false -C 
codegen-units=256"
-          RUST_BACKTRACE: "1"
-          # avoid rust stack overflows on tpc-ds tests
-          RUST_MIN_STACK: "3000000"
+          cargo test --lib --tests --bins --all-features  
 
   test-datafusion-pyarrow:
     name: cargo test pyarrow (amd64)

Reply via email to