You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by ga...@apache.org on 2026/09/21 10:41:13 UTC
(datafusion-iceberg) 01/02: Add basic CI for lint, test and format
This is an automated email from the ASF dual-hosted git repository.
gabotechs pushed a commit to branch gabotechs/ci
in repository https://gitbox.apache.org/repos/asf/datafusion-iceberg.git
commit fbe4931902731fbab3ff117b5c4c984df1147583
Author: Gabriel <ga...@datadoghq.com>
AuthorDate: Mon Sep 21 12:40:41 2026 +0200
Add basic CI for lint, test and format
---
.github/actions/setup-rust/action.yml | 44 ++++++++++++++++
.github/dependabot.yml | 55 ++++++++++++++++++++
.github/workflows/asf-allowlist-check.yml | 43 ++++++++++++++++
.github/workflows/ci.yml | 83 +++++++++++++++++++++++++++++++
4 files changed, 225 insertions(+)
diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml
new file mode 100644
index 0000000..e01b271
--- /dev/null
+++ b/.github/actions/setup-rust/action.yml
@@ -0,0 +1,44 @@
+# 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
+description: Install the Rust toolchain and optional components used by CI.
+
+inputs:
+ cache:
+ description: Restore Rust dependencies and save them on main-branch pushes.
+ required: false
+ default: "false"
+ components:
+ description: Comma-separated Rust components to install.
+ required: false
+
+runs:
+ using: composite
+ steps:
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
+ with:
+ toolchain: stable
+ components: ${{ inputs.components }}
+ - name: Cache Rust artifacts
+ if: inputs.cache == 'true'
+ uses: swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
+ with:
+ # Pull requests may restore the main-branch cache, but only trusted
+ # main-branch runs may create or update cache entries.
+ save-if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..3216549
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,55 @@
+# 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.
+
+version: 2
+updates:
+ # Keep routine Cargo updates current while reserving ecosystem-coupled major
+ # upgrades for an intentional compatibility review, as DataFusion does.
+ - package-ecosystem: cargo
+ directory: "/"
+ schedule:
+ interval: weekly
+ target-branch: main
+ open-pull-requests-limit: 15
+ ignore:
+ - dependency-name: "datafusion*"
+ update-types: ["version-update:semver-major"]
+ - dependency-name: "parquet"
+ update-types: ["version-update:semver-major"]
+ groups:
+ all-other-cargo-deps:
+ applies-to: version-updates
+ patterns:
+ - "*"
+ exclude-patterns:
+ - "datafusion*"
+ - "parquet"
+ update-types:
+ - minor
+ - patch
+
+ # The glob covers local composite actions such as setup-rust as well as
+ # workflow files in the repository root.
+ - package-ecosystem: github-actions
+ directories: ["/", "/.github/actions/*"]
+ schedule:
+ interval: weekly
+ open-pull-requests-limit: 10
+ groups:
+ github-actions:
+ patterns:
+ - "*"
diff --git a/.github/workflows/asf-allowlist-check.yml b/.github/workflows/asf-allowlist-check.yml
new file mode 100644
index 0000000..9a75b1b
--- /dev/null
+++ b/.github/workflows/asf-allowlist-check.yml
@@ -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.
+
+# Taken from https://github.com/apache/infrastructure-actions/tree/main/allowlist-check
+
+name: "ASF Allowlist Check"
+
+on:
+ workflow_dispatch:
+ pull_request:
+ paths:
+ - ".github/**"
+ push:
+ branches:
+ - main
+ paths:
+ - ".github/**"
+
+permissions:
+ contents: read
+
+jobs:
+ asf-allowlist-check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+ - uses: apache/infrastructure-actions/allowlist-check@main
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..b144f2f
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,83 @@
+# 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: CI
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ merge_group:
+
+# Cancel obsolete runs for the same pull request or branch. The three jobs below
+# keep this workflow well below ASF's 15-job recommended concurrency limit.
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
+ cancel-in-progress: true
+
+# CI needs no credentials beyond reading the source tree.
+permissions:
+ contents: read
+
+env:
+ CARGO_TERM_COLOR: always
+
+jobs:
+ format:
+ name: Format
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+ - name: Setup Rust
+ uses: ./.github/actions/setup-rust
+ with:
+ components: rustfmt
+ - run: cargo fmt --all -- --check
+
+ clippy:
+ name: Clippy
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+ - name: Setup Rust
+ uses: ./.github/actions/setup-rust
+ with:
+ components: clippy
+ cache: "true"
+ - run: cargo clippy --workspace --locked --all-targets -- -D warnings
+
+ test:
+ name: Test
+ runs-on: ubuntu-latest
+ env:
+ # Reduces cache size while preserving the optimized test build behavior.
+ CARGO_INCREMENTAL: "0"
+ CARGO_PROFILE_DEV_DEBUG: "0"
+ steps:
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+ - name: Setup Rust
+ uses: ./.github/actions/setup-rust
+ with:
+ cache: "true"
+ - run: cargo test --workspace --locked
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org