# This build file heavily uses template features from YAML so it is generic # enough for any Bob project. Don't modify it unless you know what you're # doing. # Definition of our build pipeline stages: - build - test - docs - wheels - deploy # --------- # Templates # --------- # Template for the build stage # Needs to run on all supported architectures, platforms and python versions .build_template: &build_job stage: build before_script: - git clean -ffdx - mkdir _ci - curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > _ci/install.sh - chmod 755 _ci/install.sh - ./_ci/install.sh _ci #updates - ./_ci/before_build.sh script: - ./_ci/build.sh after_script: - ./_ci/after_build.sh artifacts: expire_in: 1 week paths: - _ci/ - dist/ - sphinx/ # Template for the test stage - re-installs from uploaded wheels # Needs to run on all supported architectures, platforms and python versions .test_template: &test_job stage: test before_script: - ./_ci/install.sh _ci #updates - ./_ci/before_test.sh script: - ./_ci/test.sh after_script: - ./_ci/after_test.sh # Template for the wheel uploading stage # Needs to run against one supported architecture, platform and python version .wheels_template: &wheels_job stage: wheels environment: intranet only: - master - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) before_script: - ./_ci/install.sh _ci #updates - ./_ci/before_wheels.sh script: - ./_ci/wheels.sh after_script: - ./_ci/after_wheels.sh # Template for (latest) documentation upload stage # Only one real job needs to do this .docs_template: &docs_job stage: docs environment: intranet only: - master before_script: - ./_ci/install.sh _ci #updates - ./_ci/before_docs.sh script: - ./_ci/docs.sh after_script: - ./_ci/after_docs.sh # Template for the deployment stage - re-installs from uploaded wheels # Needs to run on a single architecture only # Will deploy your package to PyPI and other required services # Only runs for tags .deploy_template: &deploy_job stage: deploy environment: internet only: - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) except: - branches before_script: - ./_ci/install.sh _ci #updates - ./_ci/before_deploy.sh script: - ./_ci/deploy.sh after_script: - ./_ci/after_deploy.sh # ------------- # Build Targets # ------------- # Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed) build_linux_27: <<: *build_job variables: &linux_27_build_variables PYTHON_VERSION: "2.7" WHEEL_TAG: "py27" tags: - conda-linux test_linux_27: <<: *test_job variables: *linux_27_build_variables dependencies: - build_linux_27 tags: - conda-linux wheels_linux_27: <<: *wheels_job variables: *linux_27_build_variables dependencies: - build_linux_27 tags: - conda-linux deploy_linux_27: <<: *deploy_job variables: *linux_27_build_variables dependencies: - build_linux_27 tags: - conda-linux # Linux + Python 3.5: Builds, tests and uploads wheel build_linux_35: <<: *build_job variables: &linux_35_build_variables PYTHON_VERSION: "3.5" WHEEL_TAG: "py3" tags: - conda-linux test_linux_35: <<: *test_job variables: *linux_35_build_variables dependencies: - build_linux_35 tags: - conda-linux wheels_linux_35: <<: *wheels_job variables: *linux_35_build_variables dependencies: - build_linux_35 tags: - conda-linux docs_linux_35: <<: *docs_job variables: *linux_35_build_variables dependencies: - build_linux_35 tags: - conda-linux # Linux + Python 3.6: Builds and tests build_linux_36: <<: *build_job variables: &linux_36_build_variables PYTHON_VERSION: "3.6" WHEEL_TAG: "py3" tags: - conda-linux test_linux_36: <<: *test_job variables: *linux_36_build_variables dependencies: - build_linux_36 tags: - conda-linux # Mac OSX + Python 2.7: Builds and tests build_macosx_27: <<: *build_job variables: &macosx_27_build_variables PYTHON_VERSION: "2.7" WHEEL_TAG: "py27" tags: - conda-macosx test_macosx_27: <<: *test_job variables: *macosx_27_build_variables dependencies: - build_macosx_27 tags: - conda-macosx # Mac OSX + Python 3.5: Builds and tests build_macosx_35: <<: *build_job variables: &macosx_35_build_variables PYTHON_VERSION: "3.5" WHEEL_TAG: "py3" tags: - conda-macosx test_macosx_35: <<: *test_job variables: *macosx_35_build_variables dependencies: - build_macosx_35 tags: - conda-macosx # Mac OSX + Python 3.6: Builds and tests build_macosx_36: <<: *build_job variables: &macosx_36_build_variables PYTHON_VERSION: "3.6" WHEEL_TAG: "py3" tags: - conda-macosx test_macosx_36: <<: *test_job variables: *macosx_36_build_variables dependencies: - build_macosx_36 tags: - conda-macosx