diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml new file mode 100644 index 00000000000000..a2166961fc17a0 --- /dev/null +++ b/.github/workflows/clang-format.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. +# + +--- +name: BE Code Formatter + +on: [push, pull_request] + +jobs: + clang-format: + name: "Clang Formatter" + runs-on: ubuntu-latest + steps: + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" + uses: actions/checkout@v3 + with: + persist-credentials: false + submodules: recursive + + - name: Paths filter + uses: ./.github/actions/paths-filter + id: filter + with: + filters: | + be_changes: + - 'be/src/**' + - 'be/test/**' + + - name: "Format it!" + if: ${{ steps.filter.outputs.be_changes == 'true' }} + uses: ./.github/actions/clang-format-lint-action + id: be_clang_format + with: + source: "be/src be/test" + clangFormatVersion: 15 + inplace: False + + - name: Ignore it! + if: ${{ steps.filter.outputs.be_changes == 'false' }} + run: echo 'No need to check.' diff --git a/.github/workflows/clang-checks.yml b/.github/workflows/code-checks.yml similarity index 63% rename from .github/workflows/clang-checks.yml rename to .github/workflows/code-checks.yml index be8dde67d40dc2..3f804fea334d1f 100644 --- a/.github/workflows/clang-checks.yml +++ b/.github/workflows/code-checks.yml @@ -14,54 +14,52 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# ---- -name: BE Code Checks +name: Code Checks -on: [push, pull_request] +on: [push, pull_request_target] jobs: - clang-format: - name: "Clang Formatter" + shellcheck: + name: ShellCheck runs-on: ubuntu-latest steps: - - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" + - name: Checkout ${{ github.ref }} ( ${{ github.sha }} ) + if: ${{ github.event_name != 'pull_request_target' }} uses: actions/checkout@v3 with: - persist-credentials: false submodules: recursive - - name: Paths filter - uses: ./.github/actions/paths-filter - id: filter + - name: Checkout ${{ github.ref }} ( ${{ github.event.pull_request.head.sha }} ) + if: ${{ github.event_name == 'pull_request_target' }} + uses: actions/checkout@v3 with: - filters: | - be_changes: - - 'be/src/**' - - 'be/test/**' + ref: ${{ github.event.pull_request.head.sha }} + submodules: recursive - - name: "Format it!" - if: ${{ steps.filter.outputs.be_changes == 'true' }} - uses: ./.github/actions/clang-format-lint-action - id: be_clang_format + - name: Patch + run: | + pushd .github/actions/action-sh-checker >/dev/null + git apply ../patches/action-sh-checker.patch + popd >/dev/null + + - name: Run ShellCheck + uses: ./.github/actions/action-sh-checker + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - source: "be/src be/test" - clangFormatVersion: 15 - inplace: False - - - name: Ignore it! - if: ${{ steps.filter.outputs.be_changes == 'false' }} - run: echo 'No need to check.' + sh_checker_comment: true + sh_checker_exclude: .git .github ^thirdparty/src ^thirdparty/installed ^ui ^docs/node_modules ^tools/clickbench-tools ^extension ^output ^fs_brokers/apache_hdfs_broker/output (^|.*/)Dockerfile$ clang-tidy: name: "Clang Tidy" + if: ${{ github.event_name == 'pull_request_target' }} runs-on: ubuntu-22.04 steps: - - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" + - name: Checkout ${{ github.ref }} ( ${{ github.event.pull_request.head.sha }} ) uses: actions/checkout@v3 with: - persist-credentials: false + ref: ${{ github.event.pull_request.head.sha }} submodules: recursive - name: Paths Filter @@ -75,7 +73,7 @@ jobs: - 'gensrc/thrift/**' - name: Generate compile_commands.json - if: ${{ github.event_name == 'pull_request' && steps.filter.outputs.be_changes == 'true'}} + if: ${{ steps.filter.outputs.be_changes == 'true' }} run: | export DEFAULT_DIR='/opt/doris' @@ -84,14 +82,8 @@ jobs: -q -O /tmp/ldb_toolchain_gen.sh bash /tmp/ldb_toolchain_gen.sh "${DEFAULT_DIR}/ldb-toolchain" - sudo apt update - sudo apt upgrade --yes sudo DEBIAN_FRONTEND=noninteractive apt install --yes tzdata byacc - # set timezone - sudo ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - sudo dpkg-reconfigure --frontend noninteractive tzdata - pushd thirdparty curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-linux-x86_64.tar.xz \ -o doris-thirdparty-prebuilt-linux-x86_64.tar.xz @@ -102,11 +94,13 @@ jobs: DISABLE_JAVA_UDF=ON DORIS_TOOLCHAIN=clang OUTPUT_BE_BINARY=0 ./build.sh --be - name: Run clang-tidy review - if: ${{ github.event_name == 'pull_request' && steps.filter.outputs.be_changes == 'true'}} + if: ${{ steps.filter.outputs.be_changes == 'true' }} uses: ./.github/actions/clang-tidy-review id: review with: build_dir: ./be/build_Release + config_file: "./.clang-tidy" - - if: steps.review.outputs.total_comments > 0 - run: exit 1 + # clang-tidy review not required now + # - if: steps.review.outputs.total_comments > 0 + # run: exit 1 diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml deleted file mode 100644 index a3a6210af14adb..00000000000000 --- a/.github/workflows/shellcheck.yml +++ /dev/null @@ -1,52 +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: ShellCheck - -on: [push, pull_request_target] - -jobs: - shellcheck: - name: ShellCheck - runs-on: ubuntu-latest - steps: - - name: Checkout ${{ github.ref }} ( ${{ github.sha }} ) - if: ${{ github.event_name != 'pull_request_target' }} - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Checkout ${{ github.ref }} ( ${{ github.event.pull_request.head.sha }} ) - if: ${{ github.event_name == 'pull_request_target' }} - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.sha }} - submodules: recursive - - - name: Patch - run: | - pushd .github/actions/action-sh-checker >/dev/null - git apply ../patches/action-sh-checker.patch - popd >/dev/null - - - name: Run ShellCheck - uses: ./.github/actions/action-sh-checker - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - sh_checker_comment: true - sh_checker_exclude: .git .github ^thirdparty/src ^thirdparty/installed ^ui ^docs/node_modules ^tools/clickbench-tools ^extension ^output ^fs_brokers/apache_hdfs_broker/output (^|.*/)Dockerfile$ diff --git a/build-support/shell-check.sh b/build-support/shell-check.sh index 604cc7c8ec3fe1..72d587c195128a 100755 --- a/build-support/shell-check.sh +++ b/build-support/shell-check.sh @@ -263,7 +263,7 @@ find_shell_scripts() { local exclude_patterns local content local files=() - content="$(grep 'sh_checker_exclude:' "${DORIS_HOME}/.github/workflows/shellcheck.yml")" + content="$(grep 'sh_checker_exclude:' "${DORIS_HOME}/.github/workflows/code-checks.yml")" read -r -a exclude_patterns <<<"${content#*sh_checker_exclude: }" while read -r file; do local matched=false