diff --git a/.github/workflows/ci_check.yml b/.github/workflows/ci_check.yml new file mode 100644 index 000000000000..efc92fc14979 --- /dev/null +++ b/.github/workflows/ci_check.yml @@ -0,0 +1,113 @@ +# 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: Check + +on: + push: + branches: + - main + pull_request: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true + +env: + RUST_BACKTRACE: 1 + +jobs: + typos-check: + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + FORCE_COLOR: 1 + steps: + - uses: actions/checkout@v4 + - run: curl -LsSf https://github.com/crate-ci/typos/releases/download/v1.14.8/typos-v1.14.8-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin + + - name: do typos check with typos-cli + run: typos + + licenses-check: + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + FORCE_COLOR: 1 + steps: + - uses: actions/checkout@v4 + - name: Check license headers + uses: korandoru/hawkeye@v4.0.5 + + # Add python format check later. + code-fmt-check: + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + FORCE_COLOR: 1 + steps: + - uses: actions/checkout@v4 + + - name: Rust Code Format + run: ./scripts/workspace.py cargo fmt -- --check + + dependencies-check: + runs-on: ubuntu-latest + timeout-minutes: 10 + env: + FORCE_COLOR: 1 + steps: + - uses: actions/checkout@v4 + + - name: Setup Rust toolchain + uses: ./.github/actions/setup + with: + need-deny: true + + - name: Check dependencies + run: python3 ./scripts/dependencies.py check + + website-dependencies-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 8 + + - uses: actions/setup-node@v4 + with: + node-version: '18' + cache: pnpm + cache-dependency-path: "website/pnpm-lock.yaml" + + - name: Corepack + working-directory: website + run: corepack enable + + - name: Install Dependencies + working-directory: website + run: pnpm install --frozen-lockfile + + - name: Check dependencies + working-directory: website + run: | + npx license-checker --production --excludePrivatePackages --csv > DEPENDENCIES.node.csv + git diff --exit-code diff --git a/.github/workflows/ci_typos.yml b/.github/workflows/ci_typos.yml deleted file mode 100644 index 51a6a7b91f2e..000000000000 --- a/.github/workflows/ci_typos.yml +++ /dev/null @@ -1,47 +0,0 @@ -# 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: Typos Check - -on: - push: - branches: - - main - pull_request: - branches: - - main - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} - cancel-in-progress: true - -env: - RUST_BACKTRACE: 1 - -jobs: - typos-check: - name: typos check - runs-on: ubuntu-latest - timeout-minutes: 10 - env: - FORCE_COLOR: 1 - steps: - - uses: actions/checkout@v4 - - run: curl -LsSf https://github.com/crate-ci/typos/releases/download/v1.14.8/typos-v1.14.8-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin - - - name: do typos check with typos-cli - run: typos diff --git a/.github/workflows/ci.yml b/.github/workflows/core.yml similarity index 74% rename from .github/workflows/ci.yml rename to .github/workflows/core.yml index 36038245a308..80c5550a4ded 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/core.yml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -name: CI +name: Core on: push: @@ -36,65 +36,6 @@ concurrency: cancel-in-progress: true jobs: - check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Rust toolchain - uses: ./.github/actions/setup - - - name: Check license headers - uses: korandoru/hawkeye@v4.0.5 - - - name: Cargo format - run: cargo fmt --all -- --check - - - name: Check diff - run: git diff --exit-code - - check_dependencies: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Rust toolchain - uses: ./.github/actions/setup - with: - need-deny: true - - - name: Check dependencies - run: python3 ./scripts/dependencies.py check - - check_website_dependencies: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v2 - with: - version: 8 - - - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: pnpm - cache-dependency-path: "website/pnpm-lock.yaml" - - - name: Corepack - working-directory: website - run: corepack enable - - - name: Install Dependencies - working-directory: website - run: pnpm install --frozen-lockfile - - - name: Check dependencies - working-directory: website - run: | - npx license-checker --producation --excludePrivatePackages --csv > DEPENDENCIES.node.csv - git diff --exit-code - check_docs: runs-on: ubuntu-latest steps: @@ -107,22 +48,15 @@ jobs: need-protoc: true github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Checkout python env - uses: actions/setup-python@v5 - with: - python-version: "3.8" - - name: Checkout java env uses: actions/setup-java@v4 with: distribution: temurin java-version: "11" - - name: Setup OCaml toolchain - uses: ./.github/actions/setup-ocaml - - name: Cargo doc - run: cargo doc --lib --no-deps --all-features -p opendal + working-directory: core + run: cargo doc --lib --no-deps --all-features check_clippy: runs-on: ubuntu-latest @@ -136,27 +70,15 @@ jobs: need-protoc: true github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Checkout python env - uses: actions/setup-python@v5 - with: - python-version: "3.8" - - name: Checkout java env uses: actions/setup-java@v4 with: distribution: temurin java-version: "11" - - name: Setup OCaml toolchain - uses: ./.github/actions/setup-ocaml - - name: Cargo clippy - # FIXME - # remove `-exclude opendal-php` after https://github.com/apache/opendal/issues/3055 addressed - run: cargo clippy --all-targets --all-features --workspace --exclude opendal-php -- -D warnings - - - name: Check diff - run: git diff --exit-code + working-directory: core + run: cargo clippy --all-targets --all-features -- -D warnings check_msrv: runs-on: ubuntu-latest @@ -170,7 +92,8 @@ jobs: rustup toolchain install ${OPENDAL_MSRV} rustup component add clippy --toolchain ${OPENDAL_MSRV} - name: Check - run: cargo +${OPENDAL_MSRV} clippy -p opendal --no-deps -- -D warnings + working-directory: core + run: cargo +${OPENDAL_MSRV} clippy -- -D warnings build_default_features: runs-on: ${{ matrix.os }} @@ -187,7 +110,8 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build - run: cargo build -p opendal -p oli -p object_store_opendal + working-directory: core + run: cargo build build_all_features: runs-on: ubuntu-latest @@ -211,6 +135,7 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build + working-directory: core run: cargo build --all-features build_all_platforms: @@ -242,6 +167,7 @@ jobs: - name: Build shell: bash + working-directory: core run: | FEATURES=( services-alluxio @@ -303,6 +229,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Build + working-directory: core run: | FEATURES=( services-azblob @@ -325,8 +252,6 @@ jobs: with: distribution: temurin java-version: "11" - - name: Setup OCaml toolchain - uses: ./.github/actions/setup-ocaml - name: Setup Rust toolchain uses: ./.github/actions/setup @@ -334,6 +259,7 @@ jobs: need-nextest: true - name: Test + working-directory: core run: cargo nextest run --no-fail-fast --features layers-all && cargo test --doc env: LD_LIBRARY_PATH: ${{ env.JAVA_HOME }}/lib/server:${{ env.LD_LIBRARY_PATH }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 524eb754cbe9..1025a5c3cfea 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -57,7 +57,8 @@ jobs: java-version: '17' - name: Build OpenDAL doc - run: cargo +nightly doc --lib --no-deps --all-features -p opendal + working-directory: core + run: cargo +nightly doc --lib --no-deps --all-features env: LD_LIBRARY_PATH: ${{ env.JAVA_HOME }}/lib/server:${{ env.LD_LIBRARY_PATH }} # Enable cfg docs to make sure docs are built. diff --git a/.github/workflows/oay_test_webdav.yml b/.github/workflows/oay_test_webdav.yml index 7646bf12ac13..45205f974e1e 100644 --- a/.github/workflows/oay_test_webdav.yml +++ b/.github/workflows/oay_test_webdav.yml @@ -50,9 +50,10 @@ jobs: make - name: Build and Start WebDAV service + working-directory: bin/oay run: | - cargo build --package oay --bin webdav --release - cargo run --package oay --bin webdav --release & + cargo build --bin webdav --release + cargo run --bin webdav --release & - name: Run litmus tests run: |