[chore] Add a build workflow for 1.2-lts (#18)
Apache Doris made the branch branch-1.2-lts protected. As a result, all pull requests for this branch should be checked before merging it. Therefore, we should add a build workflow for this branch.
This commit is contained in:
250
.github/workflows/build-1.2.yml
vendored
Normal file
250
.github/workflows/build-1.2.yml
vendored
Normal file
@ -0,0 +1,250 @@
|
||||
# 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 (1.2-lts)
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '*/30 * * * *'
|
||||
|
||||
jobs:
|
||||
prerelease:
|
||||
name: Prerelease
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
permissions:
|
||||
contents: write
|
||||
outputs:
|
||||
should_release: ${{ steps.check_diff.outputs.should_release }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: 'apache/doris'
|
||||
ref: 'branch-1.2-lts'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check Diff
|
||||
id: check_diff
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
title="Apache Doris Third Party Prebuilt (${tag_name/automation-/})"
|
||||
|
||||
if [[ -z "$(gh release list)" ]] ||
|
||||
! gh release list | awk -F "\t" '{ print $3 }' | grep "${tag_name}" >/dev/null; then
|
||||
gh release create -t "${title}" "${tag_name}"
|
||||
fi
|
||||
last_version="$(gh release view "${tag_name}" | sed -n -E 's/Doris Version: \*(.*)\*.*/\1/p')"
|
||||
current_version="$(git log -1 --format='%H')"
|
||||
|
||||
echo "Last Version: ${last_version}"
|
||||
echo "Current Version: ${current_version}"
|
||||
|
||||
should_release=false
|
||||
if [[ -z "${last_version}" ]]; then
|
||||
echo "The first release was detected."
|
||||
should_release=true
|
||||
elif [[ "${last_version}" != "${current_version}" ]]; then
|
||||
cmd="git diff --name-only ${last_version} ${current_version} | grep -E '^thirdparty/'"
|
||||
echo "Execute: ${cmd}"
|
||||
content="$(eval "${cmd}")" || true
|
||||
if [[ -n "${content}" ]]; then
|
||||
echo -e "Detect changes:\n${content}"
|
||||
should_release=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if "${should_release}"; then
|
||||
echo -ne "Update Time: *$(date)*\nDoris Version: *${current_version}*\nStatus: *BUILDING*" >release_note.md
|
||||
else
|
||||
gh release view "${tag_name}" | sed -n '/--/,$p' | awk '{ if (NR > 1) print $0 }' | sed "{
|
||||
s/Update Time:.*/Update Time: *$(date)*/
|
||||
s/Doris Version:.*/Doris Version: *${current_version}*/
|
||||
}" >release_note.md
|
||||
fi
|
||||
gh release edit -F release_note.md "${tag_name}"
|
||||
|
||||
echo "should_release=${should_release}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Download Source and Upload
|
||||
if: steps.check_diff.outputs.should_release == 'true'
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
|
||||
cd thirdparty
|
||||
sed '/# unpacking thirdpart archives/,$d' download-thirdparty.sh | bash -
|
||||
|
||||
tar -zcvf doris-thirdparty-source.tgz src
|
||||
|
||||
gh release upload --clobber "${tag_name}" doris-thirdparty-source.tgz
|
||||
|
||||
build:
|
||||
name: Build
|
||||
needs: prerelease
|
||||
if: needs.prerelease.outputs.should_release == 'true'
|
||||
strategy:
|
||||
matrix:
|
||||
config:
|
||||
- name: macOS
|
||||
os: macos-12
|
||||
packages: >-
|
||||
'automake'
|
||||
'autoconf'
|
||||
'libtool'
|
||||
'pkg-config'
|
||||
'texinfo'
|
||||
'coreutils'
|
||||
'gnu-getopt'
|
||||
'python'
|
||||
'cmake'
|
||||
'ninja'
|
||||
'ccache'
|
||||
'bison'
|
||||
'byacc'
|
||||
'gettext'
|
||||
'wget'
|
||||
'pcre'
|
||||
'openjdk@11'
|
||||
'maven'
|
||||
'node'
|
||||
|
||||
- name: Linux
|
||||
os: ubuntu-22.04
|
||||
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'
|
||||
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
env:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: 'apache/doris'
|
||||
ref: 'branch-1.2-lts'
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
|
||||
cd thirdparty
|
||||
curl -L "https://github.com/${{ github.repository }}/releases/download/${tag_name}/doris-thirdparty-source.tgz" \
|
||||
-o doris-thirdparty-source.tgz
|
||||
tar -zxvf doris-thirdparty-source.tgz
|
||||
|
||||
- name: Prepare for ${{ matrix.config.os }}
|
||||
run: |
|
||||
if [[ "${{ matrix.config.name }}" == 'macOS' ]]; then
|
||||
brew install ${{ matrix.config.packages }}
|
||||
else
|
||||
export DEFAULT_DIR='/opt/doris'
|
||||
export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}"
|
||||
|
||||
sudo apt update
|
||||
sudo apt upgrade --yes
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt install --yes ${{ matrix.config.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"
|
||||
fi
|
||||
|
||||
- name: Build and Upload
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
|
||||
if [[ "${{ matrix.config.name }}" == 'Linux' ]]; then
|
||||
export DEFAULT_DIR='/opt/doris'
|
||||
export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}"
|
||||
fi
|
||||
|
||||
cd thirdparty
|
||||
./build-thirdparty.sh -j "$(nproc)"
|
||||
|
||||
kernel="$(uname -s | awk '{print tolower($0)}')"
|
||||
arch="$(uname -m)"
|
||||
rm -rf "doris-thirdparty-prebuilt-${kernel}-${arch}.tar.xz"
|
||||
tar -cf - installed | xz -z -T0 - >"doris-thirdparty-prebuilt-${kernel}-${arch}.tar.xz"
|
||||
gh release upload --clobber "${tag_name}" "doris-thirdparty-prebuilt-${kernel}-${arch}.tar.xz"
|
||||
|
||||
success:
|
||||
name: Success
|
||||
needs: [prerelease, build]
|
||||
if: needs.prerelease.outputs.should_release == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Update Checksums
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
|
||||
gh release download "${tag_name}"
|
||||
|
||||
content="$(gh release view "${tag_name}" | sed -n '/Update Time:/,/Doris Version:/p')"
|
||||
echo -ne "${content}\nStatus: *SUCCESS*\n\n## Checksums\n\`\`\`\n$(sha256sum *)\n\`\`\`" >release_note.md
|
||||
gh release edit -F release_note.md "${tag_name}"
|
||||
|
||||
failure:
|
||||
name: Failure
|
||||
needs: [build]
|
||||
if: failure()
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Update Checksums
|
||||
run: |
|
||||
tag_name='automation-1.2-lts'
|
||||
|
||||
gh release download "${tag_name}"
|
||||
|
||||
content="$(gh release view "${tag_name}"" | sed -n '/Update Time:/,/Doris Version:/p')"
|
||||
echo -ne "${content}\nStatus: *FAILURE*\n\n## Checksums\n\`\`\`\n$(sha256sum *)\n\`\`\`" >release_note.md
|
||||
gh release edit -F release_note.md "${tag_name}"
|
||||
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
||||
id: check_diff
|
||||
run: |
|
||||
if [[ -z "$(gh release list)" ]] ||
|
||||
! gh release list | awk -F "\t" '{ if ($3 == "automation") exit 0; else exit 1 }'; then
|
||||
! gh release list | awk -F "\t" '{ print $3 }' | grep 'automation' >/dev/null; then
|
||||
gh release create -t 'Apache Doris Third Party Prebuilt' automation
|
||||
fi
|
||||
last_version="$(gh release view automation | sed -n -E 's/Doris Version: \*(.*)\*.*/\1/p')"
|
||||
@ -157,7 +157,7 @@ jobs:
|
||||
- name: Download
|
||||
run: |
|
||||
cd thirdparty
|
||||
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \
|
||||
curl -L https://github.com/${{ github.repository }}/releases/download/automation/doris-thirdparty-source.tgz \
|
||||
-o doris-thirdparty-source.tgz
|
||||
tar -zxvf doris-thirdparty-source.tgz
|
||||
|
||||
|
||||
Reference in New Issue
Block a user