diff --git a/.github/workflows/github_build_dev_container.sh b/.github/workflows/github_build_dev_container.sh new file mode 100644 index 0000000000..2d28e0f559 --- /dev/null +++ b/.github/workflows/github_build_dev_container.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -x -e + +df -h +docker info +# to get more disk space +rm -rf /usr/share/dotnet & + +tools/build_dev_container.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c0f2302ecb..4e90129aae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,6 +82,7 @@ jobs: py-version: ['3.5', '3.6', '3.7', '3.8'] tf-version: ['2.3.0'] fail-fast: false + if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'release' steps: - uses: actions/download-artifact@v1 with: @@ -92,7 +93,17 @@ jobs: ls -la dist/ sha256sum dist/*.whl - uses: pypa/gh-action-pypi-publish@v1.1.0 - if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'release' with: user: __token__ password: ${{ secrets.pypi_token }} + upload-dev-container: + name: Upload dev container to DockerHub + needs: [release-wheel, test-with-bazel] + runs-on: ubuntu-18.04 + if: (github.event_name == 'push' && github.ref == 'refs/heads/master') + steps: + - run: | + set -e -x + docker login --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_PW }} + bash bash .github/workflows/github_build_dev_container.sh + docker push tfaddons/dev_container:latest-cpu \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b6ba2d6bda..e0c90fb171 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -267,7 +267,7 @@ to install any additional tools. CPU Docker: ```bash -docker run --rm -it -v ${PWD}:/addons -w /addons tensorflow/tensorflow:2.1.0-custom-op-ubuntu16 +docker run --rm -it -v ${PWD}:/addons -w /addons tfaddons/dev_container:latest-cpu ``` GPU Docker: @@ -289,6 +289,7 @@ python3 -m pip install -r tools/install_deps/pytest.txt Compile the custom ops ```bash +export TF_NEED_CUDA=1 # If GPU is to be used bash tools/install_so_files.sh ``` diff --git a/tools/build_dev_container.sh b/tools/build_dev_container.sh new file mode 100755 index 0000000000..896b4d9dff --- /dev/null +++ b/tools/build_dev_container.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -x -e + +DOCKER_BUILDKIT=1 docker build \ + -f tools/docker/dev_container.Dockerfile \ + --build-arg TF_VERSION=2.2.0 \ + --build-arg TF_PACKAGE=tensorflow-cpu \ + --target dev_container_cpu \ + -t tfaddons/dev_container:latest-cpu ./ diff --git a/tools/docker/dev_container.Dockerfile b/tools/docker/dev_container.Dockerfile new file mode 100644 index 0000000000..07a0d66ed7 --- /dev/null +++ b/tools/docker/dev_container.Dockerfile @@ -0,0 +1,27 @@ +#syntax=docker/dockerfile:1.1.5-experimental +FROM tensorflow/tensorflow:2.1.0-custom-op-ubuntu16 as dev_container_cpu +ARG TF_PACKAGE +ARG TF_VERSION + +# Temporary until custom-op container is updated +RUN ln -sf /usr/bin/python3 /usr/bin/python +RUN ln -sf /usr/local/bin/pip3 /usr/local/bin/pip +RUN pip install --default-timeout=1000 $TF_PACKAGE==$TF_VERSION + +COPY tools/install_deps /install_deps +COPY requirements.txt /tmp/requirements.txt +RUN pip install -r /install_deps/black.txt \ + -r /install_deps/flake8.txt \ + -r /install_deps/pytest.txt \ + -r /install_deps/typedapi.txt \ + -r /tmp/requirements.txt + +RUN bash /install_deps/buildifier.sh +RUN bash /install_deps/clang-format.sh + +ENV ADDONS_DEV_CONTAINER="1" + +# Clean up +RUN apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/tools/install_deps/clang-format.sh b/tools/install_deps/clang-format.sh index 851dea9aa0..16f93dcf0d 100644 --- a/tools/install_deps/clang-format.sh +++ b/tools/install_deps/clang-format.sh @@ -16,4 +16,5 @@ wget -O /usr/local/bin/clang-format-9 https://github.com/DoozyX/clang-format-lint-action/raw/master/clang-format/clang-format9 -chmod +x /usr/local/bin/clang-format-9 \ No newline at end of file +chmod +x /usr/local/bin/clang-format-9 +ln -s /usr/local/bin/clang-format-9 /usr/local/bin/clang-format diff --git a/tools/pre-commit.sh b/tools/pre-commit.sh index 5a7ff91b9d..d7e76f94ee 100755 --- a/tools/pre-commit.sh +++ b/tools/pre-commit.sh @@ -1,14 +1,15 @@ #!/usr/bin/env bash # usage: bash tools/pre-commit.sh -# by default uses docker buildkit. -# to disable it: -# DOCKER_BUILDKIT=0 bash tools/pre-commit.sh set -e -export DOCKER_BUILDKIT=1 -docker build -t tf_addons_formatting -f tools/docker/pre-commit.Dockerfile . +if [ -z "${ADDONS_DEV_CONTAINER}" ]; then + export DOCKER_BUILDKIT=1 + docker build -t tf_addons_formatting -f tools/docker/pre-commit.Dockerfile . -export MSYS_NO_PATHCONV=1 -docker run --rm -t -v "$(pwd -P):/addons" tf_addons_formatting + export MSYS_NO_PATHCONV=1 + docker run --rm -t -v "$(pwd -P):/addons" tf_addons_formatting +else + python tools/format.py +fi diff --git a/tools/update_release_version.sh b/tools/update_release_version.sh index 8fe4df61e6..b88385fa90 100755 --- a/tools/update_release_version.sh +++ b/tools/update_release_version.sh @@ -23,4 +23,5 @@ sed -ri "s/(TF_VERSION=|tensorflow(-cpu)*(~|=)=|tf-version: \[')[0-9]+[a-zA-Z0-9 tools/docker/cpu_tests.Dockerfile \ tools/install_deps/tensorflow-cpu.txt \ tools/install_deps/tensorflow.txt \ - tools/run_gpu_tests.sh + tools/run_gpu_tests.sh \ + tools/build_dev_container.sh