Skip to content

Fix Bazel PEP 517 Build Environment Isolation and Sandbox Restrictio… #56

Fix Bazel PEP 517 Build Environment Isolation and Sandbox Restrictio…

Fix Bazel PEP 517 Build Environment Isolation and Sandbox Restrictio… #56

Workflow file for this run

name: Build data-validation with Conda
on:
push:
branches:
- master
pull_request:
branches:
- master
release:
types: [published]
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Micromamba
uses: mamba-org/setup-micromamba@v1
with:
environment-name: tfdv-build
cache-environment: true
create-args: >-
python=${{ matrix.python-version }}
- name: Display environment info
shell: bash -l {0}
run: |
micromamba info
micromamba list
- 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
curl -Lo /tmp/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.20.0/bazelisk-darwin-amd64
fi
chmod +x /tmp/bazelisk
sudo mv /tmp/bazelisk /usr/local/bin/bazel
bazel --version
# Needed for Xcode 26.x in some CI environments; without this patch,
# Bazel Apple toolchain may fail with an "LC_UUID missing" linker error.
# Currently CI is passing, so keep this disabled. Uncomment if CI starts
# failing with an "LC_UUID missing" error.
# - name: Patch Apple CC toolchain (macOS only)
# if: runner.os == 'macOS'
# shell: bash -l {0}
# run: bazel build //:patch_local_config_apple_cc
- name: Install build tooling
shell: bash -l {0}
run: |
python -m pip install numpy>=1.22.0
python -m pip install --upgrade pip build wheel "setuptools<69.3"
- name: Build the package
shell: bash -l {0}
run: |
python -m build --wheel --no-isolation
- name: Install wheel and dependencies
shell: bash -l {0}
run: |
export TFX_DEPENDENCY_SELECTOR=GIT_MASTER
export USE_BAZEL_VERSION=7.7.0
python -m pip install "apache-beam[gcp]>=2.53,<3" "pandas>=1.0,<3" "numpy>=1.22.0"
python -m pip install git+https://github.com/tensorflow/metadata.git@master --no-deps
# Bypasses PyPI lack of uncompiled prebuilt wheels over modern setups stably
python -m pip install git+https://github.com/tensorflow/tfx-bsl.git@master --no-deps
python -m pip install "tensorflow>=2.21,<2.22"
python -m pip install "absl-py>=0.9,<2.0.0" "joblib>=1.2.0" "pyarrow>=14" "pyfarmhash>=0.2.2,<0.4" "six>=1.12,<2" "dill" "scipy" "scikit-learn"
python -m pip install "protobuf==6.31.1" --force-reinstall
python -m pip install dist/*.whl --no-deps
python -m pip install pytest
- name: Run tests
shell: bash -l {0}
run: |
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
SITE_DIR=$(python -c "import site; print(site.getsitepackages()[0])")
RV_PATH="${SITE_DIR}/google/protobuf/runtime_version.py"
if [ -f "$RV_PATH" ]; then
echo "" >> "$RV_PATH"
echo "def ValidateProtobufRuntimeVersion(*args, **kwargs):" >> "$RV_PATH"
echo " pass" >> "$RV_PATH"
fi
mv tensorflow_data_validation tensorflow_data_validation_bak
SITE_DIR=$(python -c "import site; print(site.getsitepackages()[0])")
cp -r tensorflow_data_validation_bak/statistics/generators/testdata $SITE_DIR/tensorflow_data_validation/statistics/generators/
mkdir -p /tmp/test_dir
cd /tmp/test_dir
python -m pytest --pyargs tensorflow_data_validation
cd -
mv tensorflow_data_validation_bak tensorflow_data_validation
- name: Upload wheel artifact
uses: actions/upload-artifact@v4.4.0
with:
name: data-validation-wheel-${{ matrix.os }}-py${{ matrix.python-version }}
path: dist/*.whl
upload_to_pypi:
name: Upload to PyPI
runs-on: ubuntu-latest
if: (github.event_name == 'release' && startsWith(github.ref, 'refs/tags')) || (github.event_name == 'workflow_dispatch')
needs: [build]
environment:
name: pypi
url: https://pypi.org/p/tensorflow-data-validation/
permissions:
id-token: write
steps:
- name: Retrieve wheels
uses: actions/download-artifact@v4.1.8
with:
merge-multiple: true
path: wheels
- name: List the build artifacts
run: |
ls -lAs wheels/
- name: Upload to PyPI
uses: pypa/gh-action-pypi-publish@release/v1.9
with:
packages_dir: wheels/