Skip to content

test tars in linux

test tars in linux #30

Workflow file for this run

name: Linux Release Build
on:
push:
tags:
- "v*.*.*" # Trigger only on version tags
permissions:
contents: write
jobs:
release:
name: Release cpp-bigquery-odbc (Linux)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v5
id: py311
with:
python-version: '3.11'
- uses: google-github-actions/auth@v2
with:
create_credentials_file: true
credentials_json: ${{ secrets.BUILD_CACHE_KEY }}
- uses: google-github-actions/setup-gcloud@v2
with:
version: '500.0.0'
env:
CLOUDSDK_PYTHON: ${{ steps.py311.outputs.python-path }}
- name: Install dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y ninja-build cmake build-essential \
libiodbc2 libiodbc2-dev flex bison \
gcc-multilib g++-multilib \
libstdc++6:i386 libc6-dev:i386 zlib1g-dev:i386 libssl-dev:i386 \
unixodbc-dev:i386
- name: Dynamic Configuration
id: dynamic
shell: bash
run: |
echo "vcpkg-version=$(cat ci/etc/vcpkg-version.txt)" >> "${GITHUB_OUTPUT}"
- name: Download and Install vcpkg
working-directory: "${{ runner.temp }}"
run: |
git clone --branch ${{ steps.dynamic.outputs.vcpkg-version }} https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Download and Install sccache
run: |
mkdir -p /var/tmp/sccache
cd /var/tmp/sccache
curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.5.4/sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz | \
tar -zxf - --strip-components=1
mkdir -p /usr/local/bin
mv sccache /usr/local/bin/sccache
chmod +x /usr/local/bin/sccache
- name: Setup the driver
run: |
export VCPKG_ROOT="${{ runner.temp }}/vcpkg"
export PATH="$VCPKG_ROOT:$PATH"
bash ci/dependencies/driver-manager-setup-release-linux.sh
- name: Build cpp-bigquery-odbc (Skip Tests)
run: |
TAG=${GITHUB_REF#refs/tags/}
VERSION=${TAG#v}
echo "πŸ“¦ Validating version $VERSION"
HEADER_VERSION=$(grep 'DRIVER_VERSION' google/cloud/odbc/internal/version.h | sed -E 's/.*"([^"]+)".*/\1/')
echo "πŸ“¦ Tag version: $VERSION"
echo "πŸ“ Header DRIVER_VERSION: $HEADER_VERSION"
if [ "$VERSION" != "$HEADER_VERSION" ]; then
echo "❌ Mismatch: tag=$VERSION vs DRIVER_VERSION=$HEADER_VERSION"
exit 1
else
echo "βœ… DRIVER_VERSION matches tag version"
fi
- name: Create TAR Packages
run: |
set -euo pipefail
TAG=${GITHUB_REF#refs/tags/}
VERSION=${TAG#v}
mkdir artifacts
package_arch () {
ARCH=$1
BUILD_DIR="cmake-out-$ARCH"
PKG_DIR="release_package"
TAR_NAME="cpp-bigquery-odbc-linux-${VERSION}-${ARCH}.tar.gz"
echo "πŸ“¦ Packaging ${ARCH}-bit build from $BUILD_DIR"
mkdir -p "$PKG_DIR/lib" "$PKG_DIR/setup"
cp -v "$BUILD_DIR/google/cloud/odbc/libgoogle_cloud_odbc_bq_driver.so." "$PKG_DIR/lib/libgoogle_cloud_odbc_bq_driver.so"
tar -czvf "$TAR_NAME" -C "$PKG_DIR" .
mv "$TAR_NAME" artifacts/
rm -rf "$PKG_DIR"
}
package_arch 64
package_arch 32
# Create main package containing both TARs + setup
MAIN_TAR="cpp-bigquery-odbc-linux-${VERSION}-all.tar.gz"
mkdir -p main_pkg/setup
cp -v artifacts/*.tar.gz main_pkg/
cp -rv ci/gha/builds/lib/odbc.ini ci/gha/builds/lib/odbcinst.ini main_pkg/setup/
tar -czvf "$MAIN_TAR" -C main_pkg .
mv "$MAIN_TAR" artifacts/
rm -rf main_pkg
echo "βœ… TAR packages created:"
ls -lh artifacts/
- name: Upload Main TAR to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: artifacts/cpp-bigquery-odbc-linux-${{ github.ref_name }}-all.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}