Skip to content

v0.36.6

v0.36.6 #813

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*.*.*'
- 'v*.*.*-*'
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
jobs:
npm:
runs-on: ubuntu-24.04
timeout-minutes: 30
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-07-15
# override: true # this is by default on
rustflags: ""
components: rustfmt
- name: Install Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
shell: bash
- name: Restore yarn cache
uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set Yarn version
run: yarn policies set-version v1.22.22
- name: Yarn install
uses: nick-fields/retry@v3
env:
CUBESTORE_SKIP_POST_INSTALL: true
with:
max_attempts: 3
retry_on: error
retry_wait_seconds: 15
timeout_minutes: 20
command: yarn install --frozen-lockfile
- name: Build Core Client libraries
run: yarn build
- name: Build other packages
run: yarn lerna run --concurrency 1 build
env:
NODE_OPTIONS: --max_old_space_size=4096
- name: Set NPM token
run: echo //registry.npmjs.org/:_authToken="$NPM_TOKEN" > ~/.npmrc
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: NPM publish
run: ./node_modules/.bin/lerna publish from-package --yes
native_linux:
runs-on: ubuntu-20.04
timeout-minutes: 60
name: Build native Linux ${{ matrix.node-version }} ${{ matrix.target }} Python ${{ matrix.python-version }}
strategy:
matrix:
node-version: [20]
python-version: ["3.9", "3.10", "3.11", "3.12", "fallback"]
target: ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"]
include:
- target: x86_64-unknown-linux-gnu
package_target_arch: x64
package_target_platform: linux
package_target_libc: glibc
- target: aarch64-unknown-linux-gnu
package_target_arch: arm64
package_target_platform: linux
package_target_libc: glibc
fail-fast: false
container:
image: cubejs/rust-cross:${{ matrix.target }}-15082024${{ matrix.python-version != 'fallback' && format('-python-{0}', matrix.python-version) || '' }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-07-15
# override: true # this is by default on
rustflags: ""
components: rustfmt
target: ${{ matrix.target }}
- name: Install Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install Yarn
run: npm install -g yarn
- name: Set Yarn version
run: yarn policies set-version v1.22.22
# We don't need to install all yarn deps to build native
- name: Install cargo-cp-artifact
run: npm install -g [email protected]
- name: Build native (fallback)
if: (matrix.python-version == 'fallback')
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
run: cd packages/cubejs-backend-native && npm run native:build-release
- name: Setup cross compilation
if: (matrix.target == 'aarch64-unknown-linux-gnu')
uses: allenevans/[email protected]
with:
PYO3_CROSS_PYTHON_VERSION: ${{ matrix.python-version }}
- name: Build native (with Python)
if: (matrix.python-version != 'fallback')
env:
PYO3_PYTHON: python${{ matrix.python-version }}
CARGO_BUILD_TARGET: ${{ matrix.target }}
run: cd packages/cubejs-backend-native && npm run native:build-release-python
- name: Archive release asset
shell: bash
run: |
cd packages/cubejs-backend-native
rm -rf native
mkdir native
cp index.node native/index.node
tar czvf native.tar.gz native
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: packages/cubejs-backend-native/native.tar.gz
# Example: native-linux-arm64-glibc.tar.gz
asset_name: native-${{ matrix.package_target_platform }}-${{ matrix.package_target_arch }}-${{ matrix.package_target_libc }}-${{ matrix.python-version }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
native_macos:
runs-on: ${{ matrix.os-version }}
timeout-minutes: 90
name: Build ${{ matrix.os-version }} ${{ matrix.target }} ${{ matrix.node-version }} Python ${{ matrix.python-version }}
strategy:
matrix:
node-version: [20.x]
os-version: ["macos-12"]
target: ["x86_64-apple-darwin", "aarch64-apple-darwin"]
python-version: ["3.9", "3.10", "3.11", "3.12", "fallback"]
include:
- target: x86_64-apple-darwin
package_target_arch: x64
package_target_platform: darwin
package_target_libc: unknown
tar_executable: gtar
- target: aarch64-apple-darwin
package_target_arch: arm64
package_target_platform: darwin
package_target_libc: unknown
tar_executable: gtar
exclude:
# Disable python builds for aarch64 (not ready)
- target: "aarch64-apple-darwin"
python-version: "3.9"
- target: "aarch64-apple-darwin"
python-version: "3.10"
- target: "aarch64-apple-darwin"
python-version: "3.11"
- target: "aarch64-apple-darwin"
python-version: "3.12"
fail-fast: false
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-07-15
# override: true # this is by default on
rustflags: ""
components: rustfmt
target: ${{ matrix.target }}
- name: Install Python
uses: actions/setup-python@v4
if: (matrix.python-version != 'fallback')
with:
python-version: ${{ matrix.python-version }}
- name: Install Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set Yarn version
run: yarn policies set-version v1.22.22
# We don't need to install all yarn deps to build native
- name: Install cargo-cp-artifact
run: npm install -g [email protected]
- name: Build native (fallback)
if: (matrix.python-version == 'fallback')
run: cd packages/cubejs-backend-native && npm run native:build-release
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
- name: Build native (with Python)
if: (matrix.python-version != 'fallback')
env:
PYO3_PYTHON: python${{ matrix.python-version }}
CARGO_BUILD_TARGET: ${{ matrix.target }}
run: cd packages/cubejs-backend-native && npm run native:build-release-python
- name: Archive release asset
shell: bash
run: |
cd packages/cubejs-backend-native
rm -rf native
mkdir native
cp index.node native/index.node
${{ matrix.tar_executable }} -czvf native.tar.gz native
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: packages/cubejs-backend-native/native.tar.gz
# Example: native-linux-arm64-glibc.tar.gz
asset_name: native-${{ matrix.package_target_platform }}-${{ matrix.package_target_arch }}-${{ matrix.package_target_libc }}-${{ matrix.python-version }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
native_windows:
runs-on: ${{ matrix.os-version }}
timeout-minutes: 90
name: Build ${{ matrix.os-version }} ${{ matrix.node-version }} Python ${{ matrix.python-version }}
strategy:
matrix:
node-version: [20.x]
python-version: ["fallback"]
os-version: [windows-2019]
include:
- os-version: windows-2019
package_target_arch: x64
package_target_platform: win32
package_target_libc: unknown
tar_executable: tar
fail-fast: false
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Disable rustup update (issue workaround for Windows)
run: rustup set auto-self-update disable
shell: bash
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-07-15
# override: true # this is by default on
rustflags: ""
components: rustfmt
- name: Install Python
uses: actions/setup-python@v4
if: (matrix.python-version != 'fallback')
with:
python-version: ${{ matrix.python-version }}
- name: Install Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set Yarn version
run: yarn policies set-version v1.22.22
# We don't need to install all yarn deps to build native
- name: Install cargo-cp-artifact
run: npm install -g [email protected]
- name: Build native (fallback)
if: (matrix.python-version == 'fallback')
run: cd packages/cubejs-backend-native && npm run native:build-release
- name: Build native (with Python)
if: (matrix.python-version != 'fallback')
env:
PYO3_PYTHON: python${{ matrix.python-version }}
run: cd packages/cubejs-backend-native && npm run native:build-release-python
- name: Archive release asset
shell: bash
run: |
cd packages/cubejs-backend-native
rm -rf native
mkdir native
cp index.node native/index.node
${{ matrix.tar_executable }} -czvf native.tar.gz native
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: packages/cubejs-backend-native/native.tar.gz
# Example: native-linux-arm64-glibc.tar.gz
asset_name: native-${{ matrix.package_target_platform }}-${{ matrix.package_target_arch }}-${{ matrix.package_target_libc }}-${{ matrix.python-version }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
docker-default:
needs: [npm, cubestore_linux, native_linux]
name: Debian docker image
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
platforms: linux/amd64,linux/arm64
timeout-minutes: 90
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Repo metadata
id: repo
uses: actions/github-script@v7
with:
script: |
const { data } = await github.rest.repos.get(context.repo)
const reg = new RegExp('πŸ“Š ', 'ug');
data.description = data.description.replace(reg, "")
return data
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=cubejs/cube
VERSION=noop
if [ "${{ github.event_name }}" = "schedule" ]; then
VERSION=nightly
elif [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
TAGS="${DOCKER_IMAGE}:${VERSION}"
if [[ $VERSION =~ ^v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*}
MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR},${DOCKER_IMAGE}:latest"
fi
{
echo "version=${VERSION}"
echo "tags=${TAGS}"
echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
} >> "$GITHUB_OUTPUT"
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Copy yarn.lock file
run: cp yarn.lock packages/cubejs-docker
- name: Push to Docker Hub
uses: docker/build-push-action@v6
with:
context: ./packages/cubejs-docker
file: ./packages/cubejs-docker/latest.Dockerfile
platforms: ${{ matrix.platforms }}
push: true
tags: ${{ steps.prep.outputs.tags }}
labels: |
org.opencontainers.image.title=${{ fromJson(steps.repo.outputs.result).name }}
org.opencontainers.image.description=${{ fromJson(steps.repo.outputs.result).description }}
org.opencontainers.image.url=${{ fromJson(steps.repo.outputs.result).html_url }}
org.opencontainers.image.source=${{ fromJson(steps.repo.outputs.result).clone_url }}
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=${{ fromJson(steps.repo.outputs.result).license.spdx_id }}
build-args: |
IMAGE_VERSION=${{ steps.prep.outputs.version }}
docker-debian-jdk:
needs: [npm, cubestore_linux, native_linux]
name: Debian with jdk docker image
runs-on: ubuntu-24.04
timeout-minutes: 30
permissions:
contents: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Repo metadata
id: repo
uses: actions/github-script@v7
with:
script: |
const { data } = await github.rest.repos.get(context.repo)
const reg = new RegExp('πŸ“Š ', 'ug');
data.description = data.description.replace(reg, "")
return data
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=cubejs/cube
VERSION=noop
if [ "${{ github.event_name }}" = "schedule" ]; then
VERSION=nightly
elif [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
TAGS="${DOCKER_IMAGE}:${VERSION}-jdk"
if [[ $VERSION =~ ^v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*}
MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR}-jdk,${DOCKER_IMAGE}:${MAJOR}-jdk,${DOCKER_IMAGE}:jdk"
elif [ "${{ github.event_name }}" = "push" ]; then
TAGS="$TAGS,${DOCKER_IMAGE}:sha-${GITHUB_SHA::8}-jdk"
fi
{
echo "version=${VERSION}"
echo "tags=${TAGS}"
echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
} >> "$GITHUB_OUTPUT"
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Copy yarn.lock file
run: cp yarn.lock packages/cubejs-docker
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Push to Docker Hub
uses: docker/build-push-action@v6
with:
context: ./packages/cubejs-docker
file: ./packages/cubejs-docker/latest-debian-jdk.Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.prep.outputs.tags }}
labels: |
org.opencontainers.image.title=${{ fromJson(steps.repo.outputs.result).name }}
org.opencontainers.image.description=${{ fromJson(steps.repo.outputs.result).description }}
org.opencontainers.image.url=${{ fromJson(steps.repo.outputs.result).html_url }}
org.opencontainers.image.source=${{ fromJson(steps.repo.outputs.result).clone_url }}
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=${{ fromJson(steps.repo.outputs.result).license.spdx_id }}
build-args: |
IMAGE_VERSION=${{ steps.prep.outputs.version }}
docker-cubestore:
name: Cube Store Docker
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
target: x86_64-unknown-linux-gnu
platforms: linux/amd64
build-args: WITH_AVX2=1
postfix: ""
tag: "latest"
- os: self-hosted
target: aarch64-unknown-linux-gnu
platforms: linux/arm64
build-args: WITH_AVX2=0
postfix: "-arm64v8"
tag: "arm64v8"
# Non AVX build
- os: ubuntu-24.04
target: x86_64-unknown-linux-gnu
platforms: linux/amd64
build-args: WITH_AVX2=0
postfix: "-non-avx"
tag: "non-avx"
timeout-minutes: 60
permissions:
contents: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Repo metadata
id: repo
uses: actions/github-script@v7
with:
script: |
const { data } = await github.rest.repos.get(context.repo)
const reg = new RegExp('πŸ“Š ', 'ug');
data.description = data.description.replace(reg, "")
return data
- name: Prepare
id: prep
env:
GITHUB_SHA: ${{ github.sha }}
run: |
DOCKER_IMAGE=cubejs/cubestore
VERSION=noop
if [ "${{ github.event_name }}" = "schedule" ]; then
VERSION=nightly
elif [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
TAGS="${DOCKER_IMAGE}:${VERSION}${{ matrix.postfix }}"
if [[ $VERSION =~ ^v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*}
MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR}${{ matrix.postfix }},${DOCKER_IMAGE}:${MAJOR}${{ matrix.postfix }},${DOCKER_IMAGE}:${{ matrix.tag }}"
fi
{
echo "version=${VERSION}"
echo "tags=${TAGS}"
echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
} >> "$GITHUB_OUTPUT"
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Push to Docker Hub
uses: docker/build-push-action@v6
with:
context: ./rust/cubestore/
file: ./rust/cubestore/Dockerfile
platforms: ${{ matrix.platforms }}
build-args: ${{ matrix.build-args }}
push: true
tags: ${{ steps.prep.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max
labels: |
org.opencontainers.image.title=${{ fromJson(steps.repo.outputs.result).name }}
org.opencontainers.image.description=${{ fromJson(steps.repo.outputs.result).description }}
org.opencontainers.image.url=${{ fromJson(steps.repo.outputs.result).html_url }}
org.opencontainers.image.source=${{ fromJson(steps.repo.outputs.result).clone_url }}
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=${{ fromJson(steps.repo.outputs.result).license.spdx_id }}
- name: Update repo description
uses: peter-evans/dockerhub-description@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: cubejs/cubestore
readme-filepath: ./rust/cubestore/README.md
cubestore_linux:
runs-on: ${{ matrix.os }}
timeout-minutes: 90
env:
OPENSSL_STATIC: 1
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-20.04
executable_name: cubestored
strip: true
compress: false
- target: x86_64-unknown-linux-musl
os: ubuntu-20.04
executable_name: cubestored
strip: true
# cubestored: CantPackException: bad DT_HASH nbucket=0x344 len=0x1890
compress: false
- target: aarch64-unknown-linux-gnu
os: ubuntu-20.04
executable_name: cubestored
# Unable to recognise the format of the input file `rust/cubestore/target/aarch64-unknown-linux-gnu/release/cubestored'
strip: false
# UPX is broken, issue https://github.com/cube-js/cube/issues/4474
compress: false
fail-fast: false
container:
image: cubejs/rust-cross:${{ matrix.target }}-15082024
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-01-29
target: ${{ matrix.target }}
# override: true # this is by default on
rustflags: ""
components: rustfmt
- uses: Swatinem/rust-cache@v2
with:
workspaces: ./rust/cubestore -> target
prefix-key: v0-rust-cubestore-cross
key: target-${{ matrix.target }}
- name: Build with Cargo
run: |
cd rust/cubestore && cargo build --release --target=${{ matrix.target }} -p cubestore
- name: Compress binaries
uses: svenstaro/upx-action@v2
if: ${{ matrix.compress }}
with:
file: rust/cubestore/target/${{ matrix.target }}/release/${{ matrix.executable_name }}
args: --lzma
strip: ${{ matrix.strip }}
- name: Create folder for archive
run: |
mkdir cubestore-archive
mkdir cubestore-archive/bin
- name: Create archive for release
run: |
mv rust/cubestore/target/${{ matrix.target }}/release/${{ matrix.executable_name }} cubestore-archive/bin/${{ matrix.executable_name }}
cd cubestore-archive
tar -cvzf cubestored-${{ matrix.target }}.tar.gz ./*
- name: Upload Binary to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: cubestore-archive/cubestored-${{ matrix.target }}.tar.gz
asset_name: cubestored-${{ matrix.target }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
cubestore:
runs-on: ${{ matrix.os }}
timeout-minutes: 90
env:
RUSTFLAGS: '-Ctarget-feature=+crt-static'
OPENSSL_STATIC: 1
strategy:
matrix:
target:
- x86_64-pc-windows-msvc
- x86_64-apple-darwin
include:
- target: x86_64-pc-windows-msvc
os: windows-2019
executable_name: cubestored.exe
strip: true
# cubestored.exe: CantPackException: superfluous data between sections
compress: false
# Please use minimal possible version of macOS, because it produces constraint on libstdc++
tar_executable: tar
- target: x86_64-apple-darwin
os: macos-12
executable_name: cubestored
# upx has been disabled because it is crashing for macOS Ventura or above! It was disabled on 2024-09-05.
strip: false
compress: false
# bsd tar has a different format with Sparse files which breaks download script
tar_executable: gtar
fail-fast: false
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Disable rustup update (issue workaround for Windows)
run: rustup set auto-self-update disable
if: contains(runner.os, 'windows')
shell: bash
- name: Setup Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly-2024-01-29
target: ${{ matrix.target }}
# override: true # this is by default on
rustflags: ""
components: rustfmt
- uses: Swatinem/rust-cache@v2
with:
workspaces: ./rust/cubestore -> target
prefix-key: v0-rust-cubestore-cross
key: target-${{ matrix.target }}
- uses: ilammy/msvc-dev-cmd@v1
if: ${{ startsWith(matrix.os, 'windows') }}
- name: Install OpenSSL for Windows
if: ${{ startsWith(matrix.os, 'windows') }}
run: vcpkg integrate install; vcpkg install openssl:x64-windows
- name: Instal LLVM for Windows
if: ${{ startsWith(matrix.os, 'windows') }}
run: choco install -y --force llvm --version 18.1.6
- name: Set Env Variables for Windows
uses: allenevans/[email protected]
if: ${{ startsWith(matrix.os, 'windows') }}
with:
OPENSSL_DIR: 'C:/vcpkg/packages/openssl_x64-windows'
# This paths are required to work with static linking
OPENSSL_LIB_DIR: 'C:/vcpkg/packages/openssl_x64-windows/lib'
OPENSSL_INCLUDE_DIR: 'C:/vcpkg/packages/openssl_x64-windows/include'
LIBCLANG_PATH: 'C:\Program Files\LLVM\bin'
- name: Build with Cargo
run: |
cd rust/cubestore && cargo build --release --target=${{ matrix.target }} -p cubestore
- name: Compress binaries
uses: svenstaro/upx-action@v2
if: ${{ matrix.compress }}
with:
file: rust/cubestore/target/${{ matrix.target }}/release/${{ matrix.executable_name }}
args: --lzma
strip: ${{ matrix.strip }}
- name: Create folder for archive
run: |
mkdir cubestore-archive
mkdir cubestore-archive/bin
- name: Copy/paste OpenSSL to Archive (hotfix for Windows)
if: ${{ startsWith(matrix.os, 'windows') }}
run: cp C:/vcpkg/packages/openssl_x64-windows/bin/*.dll cubestore-archive/bin
- name: Create archive for release
run: |
mv rust/cubestore/target/${{ matrix.target }}/release/${{ matrix.executable_name }} cubestore-archive/bin/${{ matrix.executable_name }}
cd cubestore-archive
${{ matrix.tar_executable }} -cvzf cubestored-${{ matrix.target }}.tar.gz ./*
- name: Upload Binary to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: cubestore-archive/cubestored-${{ matrix.target }}.tar.gz
asset_name: cubestored-${{ matrix.target }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
trigger-test-suites:
name: Trigger test suites run
runs-on: ubuntu-20.04
needs: [docker-default]
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Dispatch event
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_TRIGGER_TOKEN }}
script: |
await github.rest.actions.createWorkflowDispatch({
owner: 'cubedevinc',
repo: 'sql-api-test-suite',
workflow_id: 'test_and_run_test_suites.yml',
ref: 'main',
inputs: {
'cube-image': 'cubejs/cube:latest'
}
})