diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..88a37a59 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,76 @@ +name: Build + +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Upgrade pip + run: | + python -m pip install --upgrade pip + + - name: Build the manylinux2010 image + run: docker compose build manylinux2010 + + - name: Build the package for Python ${{ matrix.python-version }} + run: | + version="${{ matrix.python-version }}" + docker compose run -e PYTHON_VERSION=$(echo "$version" | sed 's/\.//') manylinux2010 + + - name: Upload wheel artifact for Python ${{ matrix.python-version }} + uses: actions/upload-artifact@v3 + with: + name: data-validation-wheel-py${{ matrix.python-version }} + path: dist/*.whl + + - name: Install built wheel + run: | + pip install twine + twine check dist/* + pip install 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/ diff --git a/README.md b/README.md index 2aead086..3c913abd 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ tested at Google. ### 1. Install Docker -Please first install `docker` and `docker-compose` by following the directions: +Please first install `docker` and `docker compose` by following the directions: [docker](https://docs.docker.com/install/); -[docker-compose](https://docs.docker.com/compose/install/). +[docker compose](https://docs.docker.com/compose/install/). ### 2. Clone the TFDV repository @@ -86,8 +86,8 @@ branch), pass `-b ` to the `git clone` command. Then, run the following at the project root: ```bash -sudo docker-compose build manylinux2010 -sudo docker-compose run -e PYTHON_VERSION=${PYTHON_VERSION} manylinux2010 +sudo docker compose build manylinux2010 +sudo docker compose run -e PYTHON_VERSION=${PYTHON_VERSION} manylinux2010 ``` where `PYTHON_VERSION` is one of `{39, 310, 311}`.