Skip to content

Align with r0.52.0 release branch (#64) #142

Align with r0.52.0 release branch (#64)

Align with r0.52.0 release branch (#64) #142

Workflow file for this run

name: Build
on:
push:
branches: [ master, 'r*' ]
tags: [ 'v*' ]
pull_request:
branches: [ master, 'r*' ]
env:
USE_BAZEL_VERSION: 7.7.0
jobs:
build:
name: Build (${{ matrix.os }}, Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up conda environment
uses: conda-incubator/setup-miniconda@v3
with:
auto-activate-base: false
activate-environment: s2t-env
environment-file: environment.yml
python-version: ${{ matrix.python-version }}
use-mamba: true
- name: Install Bazel
shell: bash -l {0}
run: |
# Install Bazelisk (manages Bazel versions)
if [ "$RUNNER_OS" == "Linux" ]; then
curl -Lo /tmp/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.20.0/bazelisk-linux-amd64
elif [ "$RUNNER_OS" == "macOS" ]; then
ARCH=$(uname -m)
if [ "$ARCH" == "arm64" ]; then
curl -Lo /tmp/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.20.0/bazelisk-darwin-arm64
else
curl -Lo /tmp/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.20.0/bazelisk-darwin-amd64
fi
fi
chmod +x /tmp/bazelisk
sudo mv /tmp/bazelisk /usr/local/bin/bazel
- name: Configure Bazel
shell: bash -l {0}
run: |
./configure.sh
bazel --version
- name: Patch Apple CC toolchain (macOS only)
if: runner.os == 'macOS'
shell: bash -l {0}
run: bazel build //:patch_local_config_apple_cc
- name: Build struct2tensor
shell: bash -l {0}
run: bazel build //struct2tensor:path --verbose_failures
- name: Build all targets
if: runner.os == 'Linux'
shell: bash -l {0}
run: bazel build //...
- name: Build Release Wheel
shell: bash -l {0}
run: bazel run //:build_pip_package
- name: Repair Linux Wheel with Auditwheel
if: runner.os == 'Linux'
shell: bash -l {0}
run: |
python -m pip install auditwheel
auditwheel repair --exclude 'libtensorflow_framework.so.*' dist/*.whl -w repaired_wheels/
rm -f dist/*.whl
mv repaired_wheels/*.whl dist/
- name: Upload Wheel Artifact
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: dist/*.whl
docker-serving-build:
name: Build Docker Serving Image
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Pre-pull Ubuntu base image from GCR mirror to prevent Docker Hub timeouts
run: |
docker pull mirror.gcr.io/library/ubuntu:22.04
docker tag mirror.gcr.io/library/ubuntu:22.04 ubuntu:22.04
- name: Build TF-Serving Docker Image
run: |
cd struct2tensor/tools/tf_serving_docker
docker build -t struct2tensor-serving:latest .
pypi-publish:
name: Publish Wheels to PyPI
needs: build
if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/heads/r'))
runs-on: ubuntu-latest
steps:
- name: Download all wheels
uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist/
merge-multiple: true
- name: Publish Package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: dist/
skip-existing: true