Files
openobserve/.github/workflows/release.yml
T

197 lines
7.1 KiB
YAML

on:
push:
tags:
- "v*.*.*"
name: Release
env:
RUST_TOOLCHAIN: nightly-2024-07-07
jobs:
build:
name: Build binary
strategy:
matrix:
include:
- arch: x86_64-unknown-linux-gnu
os: ubuntu-2004-8-cores
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-linux-amd64
file_ext: .tar.gz
- arch: x86_64-unknown-linux-gnu
os: ubuntu-2004-8-cores
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-linux-amd64-simd
file_ext: .tar.gz
- arch: x86_64-unknown-linux-musl
os: ubuntu-2004-8-cores
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-linux-amd64-musl
file_ext: .tar.gz
# - arch: aarch64-unknown-linux-musl
# os: ubuntu-2004-8-cores
# features: "--features mimalloc"
# file_name: openobserve-${{ github.ref_name }}-linux-arm64-musl
# file_ext: .tar.gz
- arch: aarch64-unknown-linux-gnu
os: ubuntu-2004-8-cores
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-linux-arm64
file_ext: .tar.gz
- arch: x86_64-apple-darwin
os: macos-latest
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-darwin-amd64
file_ext: .tar.gz
- arch: aarch64-apple-darwin
os: macos-latest
features: "--features mimalloc"
file_name: openobserve-${{ github.ref_name }}-darwin-arm64
file_ext: .tar.gz
- arch: x86_64-pc-windows-msvc
os: windows-2022-16-cores
features: ""
file_name: openobserve-${{ github.ref_name }}-windows-amd64
file_ext: .zip
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Cache cargo assets
id: cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.arch }}-build-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: 18.x
cache: 'npm'
cache-dependency-path: web/package-lock.json
- name: Build UI
if: contains(matrix.arch, 'windows') == false
env:
NODE_OPTIONS: "--max-old-space-size=8192"
run: |
cd web/
npm install
npm run build
- name: Build UI for windows
if: contains(matrix.arch, 'windows')
env:
NODE_OPTIONS: "--max-old-space-size=8192"
shell: bash
run: |
cd web/
npm install
npm run build
- name: Install Protoc for linux
if: contains(matrix.arch, 'linux')
run: | # Make sure the protoc is >= 3.15
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip
unzip protoc-21.12-linux-x86_64.zip -d protoc
sudo cp protoc/bin/protoc /usr/local/bin/
sudo cp -r protoc/include/google /usr/local/include/
- name: Install Protoc for windows
if: contains(matrix.arch, 'windows')
shell: bash
run: |
curl -L -o protoc-21.12-win64.zip https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-win64.zip
unzip protoc-21.12-win64.zip -d protoc
cp protoc/bin/protoc.exe C:/windows/system32/protoc.exe
cp -r protoc/include/google C:/windows/system32/
- name: Install Protoc for macos
if: contains(matrix.arch, 'darwin')
run: |
brew install protobuf
- name: Install dependencies for linux
if: contains(matrix.arch, 'linux-gnu')
run: |
sudo apt-get -y update
sudo apt-get -y install libssl-dev pkg-config g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
- name: Install dependencies for linux
if: contains(matrix.arch, 'linux-musl')
run: |
sudo apt-get -y update
sudo apt-get -y install libssl-dev pkg-config g++-aarch64-linux-gnu gcc-aarch64-linux-gnu musl-dev musl-tools
sudo ln -s "/usr/bin/g++" "/usr/bin/musl-g++"
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
target: ${{ matrix.arch }}
override: true
- name: Output package versions
run: protoc --version ; cargo version ; rustc --version ; gcc --version ; g++ --version
- name: Print rustc cfg
run: rustc -C target-cpu=native --print cfg
- name: Run cargo build
if: contains(matrix.file_name, '-simd') == false
run: cargo build ${{ matrix.features }} --profile release-prod --target ${{ matrix.arch }}
- name: Run cargo build
if: contains(matrix.file_name, '-simd')
run: RUSTFLAGS='-C target-feature=+aes,+avx,+avx2,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+avx512f,+avx512cd,+avx512er,+avx512bw,+avx512dq,+avx512vl' cargo build ${{ matrix.features }} --profile release-prod --target ${{ matrix.arch }}
- name: Calculate checksum and rename binary
if: contains(matrix.arch, 'windows') == false
shell: bash
run: |
cd target/${{ matrix.arch }}/release-prod
chmod +x openobserve
tar -zcvf ${{ matrix.file_name }}.tar.gz openobserve
echo $(shasum -a 256 ${{ matrix.file_name }}.tar.gz | cut -f1 -d' ') > ${{ matrix.file_name }}.tar.gz.sha256sum
- name: Calculate checksum and rename binary for windows
if: contains(matrix.arch, 'windows')
shell: bash
run: |
cd target/${{ matrix.arch }}/release-prod
7z a -tzip ${{ matrix.file_name }}.zip openobserve.exe
certutil.exe -hashfile ${{ matrix.file_name }}.zip sha256|head -n 2|tail -n 1 > ${{ matrix.file_name }}.zip.sha256sum
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.file_name }}
path: target/${{ matrix.arch }}/release-prod/${{ matrix.file_name }}${{ matrix.file_ext }}
- name: Upload checksum of artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.file_name }}.sha256sum
path: target/${{ matrix.arch }}/release-prod/${{ matrix.file_name }}${{ matrix.file_ext }}.sha256sum
release:
name: Release artifacts
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Publish release
uses: softprops/action-gh-release@v2
with:
name: "Release ${{ github.ref_name }}"
generate_release_notes: true
files: |
**/openobserve-*