test tars in linux #30
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |