diff --git a/.github/actions/ccache-action b/.github/actions/ccache-action index bd43b7f5fb..657bab9aeb 160000 --- a/.github/actions/ccache-action +++ b/.github/actions/ccache-action @@ -1 +1 @@ -Subproject commit bd43b7f5fb36d5f97ef5c6cc818a2055b04f610a +Subproject commit 657bab9aeb32eb6d913c2e6882efad4bb7536d94 diff --git a/.github/actions/paths-filter b/.github/actions/paths-filter index b2feaf19c2..4512585405 160000 --- a/.github/actions/paths-filter +++ b/.github/actions/paths-filter @@ -1 +1 @@ -Subproject commit b2feaf19c27470162a626bd6fa8438ae5b263721 +Subproject commit 4512585405083f25c027a35db413c2b3b9006d50 diff --git a/.github/workflows/be-ut-clang.yml b/.github/workflows/be-ut-clang.yml index c00d010361..4d41b12751 100644 --- a/.github/workflows/be-ut-clang.yml +++ b/.github/workflows/be-ut-clang.yml @@ -19,6 +19,8 @@ name: BE UT (Clang) on: pull_request: + schedule: + - cron: '0 4,10,16,22 * * *' # schedule it periodically to share the cache concurrency: group: ${{ github.ref }} (BE UT Clang) diff --git a/.github/workflows/be-ut-mac.yml b/.github/workflows/be-ut-mac.yml index 9b15bce7d0..a373b81ca8 100644 --- a/.github/workflows/be-ut-mac.yml +++ b/.github/workflows/be-ut-mac.yml @@ -19,6 +19,8 @@ name: BE UT (macOS) on: pull_request: + schedule: + - cron: '0 4,10,16,22 * * *' # schedule it periodically to share the cache concurrency: group: ${{ github.ref }} (BE UT macOS) diff --git a/.github/workflows/build-thirdparty.yml b/.github/workflows/build-thirdparty.yml new file mode 100644 index 0000000000..3f6e19dd13 --- /dev/null +++ b/.github/workflows/build-thirdparty.yml @@ -0,0 +1,157 @@ +# 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: Build Third Party Libraries + +on: + pull_request: + +concurrency: + group: ${{ github.ref }} (Build Third Party Libraries) + cancel-in-progress: true + +jobs: + changes: + name: Detect Changes + runs-on: ubuntu-latest + outputs: + thirdparty_changes: ${{ steps.filter.outputs.thirdparty_changes }} + steps: + - name: Checkout ${{ github.ref }} + uses: actions/checkout@v3 + with: + persist-credentials: false + submodules: recursive + + - name: Paths filter + uses: ./.github/actions/paths-filter + id: filter + with: + filters: | + thirdparty_changes: + - 'thirdparty/**' + + build_linux: + name: Build Third Party Libraries (Linux) + needs: changes + if: ${{ needs.changes.outputs.thirdparty_changes == 'true' }} + runs-on: ubuntu-22.04 + steps: + - name: Checkout ${{ github.ref }} + uses: actions/checkout@v3 + + - name: Download + run: | + cd thirdparty + curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \ + -o doris-thirdparty-source.tgz + tar -zxvf doris-thirdparty-source.tgz + + - name: Prepare + run: | + export DEFAULT_DIR='/opt/doris' + export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}" + + packages=( + 'build-essential' + 'automake' + 'autoconf' + 'libtool-bin' + 'pkg-config' + 'cmake' + 'ninja-build' + 'ccache' + 'python-is-python3' + 'bison' + 'byacc' + 'flex' + 'binutils-dev' + 'libiberty-dev' + 'curl' + 'git' + 'zip' + 'unzip' + 'autopoint' + 'openjdk-11-jdk' + 'openjdk-11-jdk-headless' + 'maven' + ) + + sudo apt update + sudo apt upgrade --yes + sudo DEBIAN_FRONTEND=noninteractive apt install --yes "${packages[@]}" + + mkdir -p "${DEFAULT_DIR}" + wget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.12/ldb_toolchain_gen.sh \ + -q -O /tmp/ldb_toolchain_gen.sh + bash /tmp/ldb_toolchain_gen.sh "${DEFAULT_DIR}/ldb-toolchain" + + - name: Build + run: | + export DEFAULT_DIR='/opt/doris' + export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}" + + cd thirdparty + ./build-thirdparty.sh -j "$(nproc)" + + build_macos: + name: Build Third Party Libraries (macOS) + needs: changes + if: ${{ needs.changes.outputs.thirdparty_changes == 'true' }} + runs-on: macos-12 + steps: + - name: Checkout ${{ github.ref }} + uses: actions/checkout@v3 + + - name: Download + run: | + cd thirdparty + curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \ + -o doris-thirdparty-source.tgz + tar -zxvf doris-thirdparty-source.tgz + + - name: Prepare + run: | + packages=( + 'automake' + 'autoconf' + 'libtool' + 'pkg-config' + 'texinfo' + 'coreutils' + 'gnu-getopt' + 'python' + 'cmake' + 'ninja' + 'ccache' + 'bison' + 'byacc' + 'gettext' + 'wget' + 'pcre' + 'openjdk@11' + 'maven' + 'node' + ) + + brew install "${packages[@]}" + + - name: Build + run: | + cd thirdparty + ./build-thirdparty.sh -j "$(nproc)" +