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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
