From fa89e84baac21b232c8fc182cd68b08f8e8619f2 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 10 Jul 2019 12:12:11 +0300 Subject: [PATCH] travis: use stages (#2249) Signed-off-by: Ruslan Kuprieiev --- .travis.yml | 97 ++++++++++++++++++++++--------------- scripts/build_package.sh | 19 +++++++- scripts/build_windows.cmd | 5 +- scripts/ci/before_deploy.sh | 34 ------------- 4 files changed, 79 insertions(+), 76 deletions(-) delete mode 100644 scripts/ci/before_deploy.sh diff --git a/.travis.yml b/.travis.yml index 7dd9c2a78..dab6f7997 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,38 +13,50 @@ env: global: - PYENV_ROOT="$HOME/.pyenv" - PATH="$PYENV_ROOT/bin:$PATH" +stages: + - test + - build + - name: deploy + if: tag is present # Travis doesn't support testing python on Mac yet, so we need # to workaround it by installing it directly with brew. # # Note that we specify language as ruby-2.4.0 to help us satisfy # fpm dependencies, as travis runs el capitan with an old ruby # version, that causes fpm to crash. -matrix: +jobs: include: - name: "2.7 on Windows" + stage: test os: windows # Windows 10.0.17134 N/A Build 17134 language: shell # 'language: python' is an error on Travis CI Windows env: - PYTHON_VER=2.7 - name: "3.7 on Windows" + stage: test os: windows # Windows 10.0.17134 N/A Build 17134 language: shell # 'language: python' is an error on Travis CI Windows env: - PYTHON_VER=3.7 - name: "2.7" + stage: test env: - PYTHON_VER=2.7.13 - name: "3.5" + stage: test env: - PYTHON_VER=3.5.3 - name: "3.6" + stage: test env: - PYTHON_VER=3.6.2 - name: "3.7" + stage: test env: # NOTE: using default python - PYTHON_VER= - - if: type = cron OR tag is present + - name: "2.7 on Mac" + stage: test os: osx osx_image: xcode7.3 language: ruby @@ -54,7 +66,8 @@ matrix: - CPPFLAGS="-I/usr/local/opt/openssl/include $CPPFLAGS" - LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS" - PYTHON_CONFIGURE_OPTS="--enable-framework" - - if: type = cron OR tag is present + - name: "3.7 on Mac" + stage: test os: osx osx_image: xcode7.3 language: ruby @@ -62,32 +75,56 @@ matrix: env: - PYTHON_VER=3.7.3 - PYTHON_CONFIGURE_OPTS="--enable-framework" - - if: type = cron OR tag is present + # build jobs + - name: "Build Mac pkg" + stage: build os: osx osx_image: xcode7.3 language: ruby rvm: 2.4.0 env: - - PYTHON_VER=3.5.0 + - PYTHON_VER=3.7.3 - PYTHON_CONFIGURE_OPTS="--enable-framework" - - if: type = cron OR tag is present - os: osx - osx_image: xcode10.1 - language: ruby - rvm: 2.4.0 + script: ./scripts/build_posix.sh + - name: "Build Windows pkg" + stage: build + os: windows + language: shell env: - - PYTHON_VER=2.7.10 - - CPPFLAGS="-I/usr/local/opt/openssl/include $CPPFLAGS" - - LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS" - - PYTHON_CONFIGURE_OPTS="--enable-framework" - - if: type = cron OR tag is present - os: osx - osx_image: xcode10.1 - language: ruby - rvm: 2.4.0 + - PYTHON_VER=3.7 + script: ./scripts/build_windows.cmd + - name: "Build Linux pkg" + stage: build env: - - PYTHON_VER=3.5.0 - - PYTHON_CONFIGURE_OPTS="--enable-framework" + # NOTE: using default python + - PYTHON_VER= + script: ./scripts/build_posix.sh + - name: "Build pypi pkg" + stage: build + env: + # NOTE: using default python + - PYTHON_VER= + script: ./scripts/build_package.sh + # deploy jobs + - name: "Deploy pkgs" + stage: deploy + script: ./scripts/build_package.sh + deploy: + - provider: pypi + user: + secure: "IOzNfgPoG3ICg3+s4AuZCCnawgd/KqMzeiAB9R0B9Xb6ProPQJp9O3GBZrtg5OJMHdWQQtwULeOh/LWk4sFdXMcX1iNEgm5Tb7DwO7TDtltW14jUgN9AqfY2twj4UIsW/ON8w0P8v36ZoQq1kO6Pfgjijdm3w+9h6rpps8rJ6jXYpVZVO+SSzzijWddanMkEz4GgctZ2r7U5MWlmm1UogF60kEZIZCQykz0yJnhTpP9nMFDKw6Maki/mcfVwTQ/v3RqjzttHei/aaEMGQXYr3TOX8NPYJXerBpjShDZqcgcCfqPzhi7uCwVYaPvRsMMYH5jgtMz/SO3J6ToeGKT0f1F1ihRyCdusg325TMK7Vv8yHJzL4ngeUbb/oqxWtxhLY7f77Lkx6hBwe6ROpTqiQHIfZad5qyIHihKcDcIHo4FwLHVzxR4y+Ds2js5dXwBkUBaEAx0Dmc6ZdgXqxd815GDwv+VVpzXJhtO6qXmKE36F/Oe6eCNG3dk5MdOK4C2DrM9M8MXllqeQtX6JrM2stWlBalAc9Jn4b0xxAoghX3x3G3hNsLc9Uist1VinY2+IcPozusqj66c+Vbi5YngWSbICOjlIcq2GaOlBi3xioGts396442ztf1eLjMVuvykCI3b4Yz/vJYZOZjUvG/6nLfaFQTJLSXkTvI4do3foeY4=" + password: + secure: "ts/3FSPL+w4euXryip9wCJWUqUwuJ2CqHi0nEpYVM10KL0cp9aMkQXN/7C8ih+j/JZ25kaO+tis1nx0JERVnKrg/1F/fJhxHTpakCP4OSIlhKRXDt7yUUHcKKt5QdM2XCKhApptP6RTpWL1vlc36CMrhdvTcMYp7hlDOiWjdhhim24FGQzabL42Ko59ttyyCROqgcnjHqj+WlhJl7iYO+lv2PLOtslpkIYY5EMjgBLuGyOvxTqZsAXtworsASdB2CrsTE6iMRcrM1afgkyBlUqDezoiv9TwfZrZ85oRoAxPB7su4QWK7lEP0wGQV/SDz/RL7c+cNfRaauxUKVcC8I2LfaEpudv8vi205+v/08wzPbS4xSOnf89irUJnyGxUy+bYLoXPPVPMyzcQRAUnrQl+ENCmN62HU+/2pkIyiUJvt0wYYP0vp+3pIbXbYQGmAIMq7nZJd7K3rikfnQIGKI03xZsFe3PEdjzhDI9Ej/tRUbJx4pgg084QuYYca6MSYn/zJ5pqIG4A7ngCSxoxoWZT0duo8PrUWQeT17L73Q86HeEv3OzZhWfEF2fNDN3Qbsu4CllSZnbE7DXgAuysTwTYHS/na6lp7wejOqdRUXrHbidVla9Mwxyc9JdWNWzUDxALvNxAdNbV6l85mO8izy8wjQF6M1O7idqTfjQeR4pc=" + skip_existing: true + file_glob: true + file: + - dist/dvc*.whl + - dist/dvc*.tar.gz + skip_cleanup: true + on: + tags: true + repo: iterative/dvc + before_install: - bash ./scripts/ci/before_install.sh - source env.sh @@ -96,9 +133,6 @@ install: - bash ./scripts/ci/install.sh script: - bash ./scripts/ci/script.sh -before_deploy: - - bash ./scripts/ci/before_deploy.sh - - pip install twine deploy: - provider: releases condition: "[[ $(./scripts/ci/deploy_condition.sh) == 'true' ]]" @@ -114,17 +148,4 @@ deploy: on: tags: true repo: iterative/dvc - - provider: pypi - user: - secure: "IOzNfgPoG3ICg3+s4AuZCCnawgd/KqMzeiAB9R0B9Xb6ProPQJp9O3GBZrtg5OJMHdWQQtwULeOh/LWk4sFdXMcX1iNEgm5Tb7DwO7TDtltW14jUgN9AqfY2twj4UIsW/ON8w0P8v36ZoQq1kO6Pfgjijdm3w+9h6rpps8rJ6jXYpVZVO+SSzzijWddanMkEz4GgctZ2r7U5MWlmm1UogF60kEZIZCQykz0yJnhTpP9nMFDKw6Maki/mcfVwTQ/v3RqjzttHei/aaEMGQXYr3TOX8NPYJXerBpjShDZqcgcCfqPzhi7uCwVYaPvRsMMYH5jgtMz/SO3J6ToeGKT0f1F1ihRyCdusg325TMK7Vv8yHJzL4ngeUbb/oqxWtxhLY7f77Lkx6hBwe6ROpTqiQHIfZad5qyIHihKcDcIHo4FwLHVzxR4y+Ds2js5dXwBkUBaEAx0Dmc6ZdgXqxd815GDwv+VVpzXJhtO6qXmKE36F/Oe6eCNG3dk5MdOK4C2DrM9M8MXllqeQtX6JrM2stWlBalAc9Jn4b0xxAoghX3x3G3hNsLc9Uist1VinY2+IcPozusqj66c+Vbi5YngWSbICOjlIcq2GaOlBi3xioGts396442ztf1eLjMVuvykCI3b4Yz/vJYZOZjUvG/6nLfaFQTJLSXkTvI4do3foeY4=" - password: - secure: "ts/3FSPL+w4euXryip9wCJWUqUwuJ2CqHi0nEpYVM10KL0cp9aMkQXN/7C8ih+j/JZ25kaO+tis1nx0JERVnKrg/1F/fJhxHTpakCP4OSIlhKRXDt7yUUHcKKt5QdM2XCKhApptP6RTpWL1vlc36CMrhdvTcMYp7hlDOiWjdhhim24FGQzabL42Ko59ttyyCROqgcnjHqj+WlhJl7iYO+lv2PLOtslpkIYY5EMjgBLuGyOvxTqZsAXtworsASdB2CrsTE6iMRcrM1afgkyBlUqDezoiv9TwfZrZ85oRoAxPB7su4QWK7lEP0wGQV/SDz/RL7c+cNfRaauxUKVcC8I2LfaEpudv8vi205+v/08wzPbS4xSOnf89irUJnyGxUy+bYLoXPPVPMyzcQRAUnrQl+ENCmN62HU+/2pkIyiUJvt0wYYP0vp+3pIbXbYQGmAIMq7nZJd7K3rikfnQIGKI03xZsFe3PEdjzhDI9Ej/tRUbJx4pgg084QuYYca6MSYn/zJ5pqIG4A7ngCSxoxoWZT0duo8PrUWQeT17L73Q86HeEv3OzZhWfEF2fNDN3Qbsu4CllSZnbE7DXgAuysTwTYHS/na6lp7wejOqdRUXrHbidVla9Mwxyc9JdWNWzUDxALvNxAdNbV6l85mO8izy8wjQF6M1O7idqTfjQeR4pc=" - skip_existing: true - file_glob: true - file: - - dist/dvc*.whl - - dist/dvc*.tar.gz - skip_cleanup: true - on: - tags: true - repo: iterative/dvc + stage: build diff --git a/scripts/build_package.sh b/scripts/build_package.sh index 429feef39..bdf6fd5b5 100755 --- a/scripts/build_package.sh +++ b/scripts/build_package.sh @@ -3,9 +3,24 @@ set -e if [ ! -d "dvc" ]; then - echo "Please run this script from repository root" - exit 1 + echo "Please run this script from repository root" + exit 1 fi python setup.py sdist python setup.py bdist_wheel --universal + +# Make sure we have a correct version +if [[ -n "$TRAVIS_TAG" ]]; then + pip uninstall -y dvc + if ! [ -x "$(command -v dvc)" ]; then + echo "ERROR: dvc command still exists! Unable to verify dvc version." + exit 1 + fi + pip install dist/dvc-*.whl + if [[ "$(dvc --version)" != "$TRAVIS_TAG" ]]; then + echo "ERROR: 'dvc --version'$(dvc -V) doesn't match '$TRAVIS_TAG'" + exit 1 + fi + pip uninstall -y dvc +fi diff --git a/scripts/build_windows.cmd b/scripts/build_windows.cmd index 022abdafc..65d38663a 100755 --- a/scripts/build_windows.cmd +++ b/scripts/build_windows.cmd @@ -16,8 +16,9 @@ where choco if %errorlevel% neq 0 (echo Error: choco not found && goto :error) choco install InnoSetup - -if not exist "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" (echo Error: Couldn't find Inno Setup compiler. Please go to jrsoftware.org/isinfo.php and install Inno Setup 5 && goto :error) +refreshenv +where iscc +if %errorlevel% neq 0 (echo Error: Couldn't find Inno Setup compiler. && goto :error) echo ====== Installing requirements... ====== call pip install .[all] || goto :error diff --git a/scripts/ci/before_deploy.sh b/scripts/ci/before_deploy.sh deleted file mode 100644 index 99f373675..000000000 --- a/scripts/ci/before_deploy.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -x -set -e - -./scripts/build_package.sh - -if [[ -n "$TRAVIS_TAG" ]]; then - # Test version - pip uninstall -y dvc - pip install dist/dvc-*.whl - if [[ "$(dvc --version)" != "$TRAVIS_TAG" ]]; then - echo "ERROR: 'dvc --version'$(dvc -V) doesn't match '$TRAVIS_TAG'" - exit 1 - fi - pip uninstall -y dvc -fi - -PY_VER=$(python -c 'import sys; print(sys.version_info[0:2])') -if [[ "$PY_VER" != '(3, 7)' ]]; then - echo "Skipping building binary package because of a wrong python version." - exit 0 -fi - -if [[ "$TRAVIS_OS_NAME" == "osx" && "$TRAVIS_OSX_IMAGE" != "xcode7.3" ]]; then - echo "Skipping building binary package because of a wrong xcode version." - exit 0 -fi - -if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then - ./scripts/build_windows.cmd -else - ./scripts/build_posix.sh -fi