From be3470cedf0ddad98f18405cd39d12ec12fff017 Mon Sep 17 00:00:00 2001 From: Amir MOHAMMADI <amir.mohammadi@idiap.ch> Date: Tue, 16 Jan 2018 18:24:27 +0100 Subject: [PATCH] Migrate to conda based CI --- .gitignore | 1 + .gitlab-ci.yml | 323 ++++++++++++++---------------------------------- conda/meta.yaml | 61 +++++++++ doc/conf.py | 8 +- 4 files changed, 158 insertions(+), 235 deletions(-) create mode 100644 conda/meta.yaml diff --git a/.gitignore b/.gitignore index dae95ef..bde2e54 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ dist build *.egg src/ +record.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b0fba4d..5e9f6d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,275 +1,142 @@ -# 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. +# This build file 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 global variables (all stages) +variables: + CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda" -# Definition of our build pipeline + +# Definition of our build pipeline order stages: - build - - test - - docs - - wheels - deploy + - pypi -# --------- -# Templates -# --------- - -# Template for the build stage -# Needs to run on all supported architectures, platforms and python versions +# Build targets .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 + - curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/condapackage/gitlab/install.sh" > _ci/install.sh - chmod 755 _ci/install.sh - - ./_ci/install.sh _ci #updates + - ./_ci/install.sh _ci condapackage #installs ci support scripts - ./_ci/before_build.sh script: - ./_ci/build.sh - after_script: - - ./_ci/after_build.sh - artifacts: - expire_in: 1 week + cache: &build_caches 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 all combinations of python and operating systems -.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 - + - miniconda.sh + - ${CONDA_ROOT}/pkgs/*.tar.bz2 + - ${CONDA_ROOT}/pkgs/urls.txt -# ------------- -# Build Targets -# ------------- -# Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed) -build_linux_27: +.build_linux_template: &linux_build_job <<: *build_job - variables: &linux_27_build_variables - PYTHON_VERSION: "2.7" - 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 + - docker + image: continuumio/conda-concourse-ci + artifacts: + expire_in: 1 week + paths: + - _ci/ + - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2 + cache: + <<: *build_caches + key: "linux-cache" -# Linux + Python 3.5: Builds, tests and uploads wheel -build_linux_35: +.build_macosx_template: &macosx_build_job <<: *build_job - variables: &linux_35_build_variables - PYTHON_VERSION: "3.5" - tags: - - conda-linux - -test_linux_35: - <<: *test_job - variables: *linux_35_build_variables - dependencies: - - build_linux_35 tags: - - conda-linux + - macosx + artifacts: + expire_in: 1 week + paths: + - _ci/ + - ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2 + cache: + <<: *build_caches + key: "macosx-cache" -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 +build_linux_27: + <<: *linux_build_job + variables: + PYTHON_VERSION: "2.7" -# Linux + Python 3.6: Builds and tests build_linux_36: - <<: *build_job - variables: &linux_36_build_variables + <<: *linux_build_job + variables: PYTHON_VERSION: "3.6" - tags: - - conda-linux - -test_linux_36: - <<: *test_job - variables: *linux_36_build_variables - dependencies: - - build_linux_36 - tags: - - conda-linux - -wheels_linux_36: - <<: *wheels_job - variables: *linux_36_build_variables - dependencies: - - build_linux_36 - tags: - - conda-linux + BUILD_EGG: "true" + artifacts: + expire_in: 1 week + paths: + - _ci/ + - dist/*.zip + - sphinx + - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2 -# Mac OSX + Python 2.7: Builds and tests build_macosx_27: - <<: *build_job - variables: &macosx_27_build_variables + <<: *macosx_build_job + variables: PYTHON_VERSION: "2.7" - tags: - - conda-macosx - -test_macosx_27: - <<: *test_job - variables: *macosx_27_build_variables - dependencies: - - build_macosx_27 - tags: - - conda-macosx -wheels_macosx_27: - <<: *wheels_job - variables: *macosx_27_build_variables - dependencies: - - build_macosx_27 - tags: - - conda-macosx +build_macosx_36: + <<: *macosx_build_job + variables: + PYTHON_VERSION: "3.6" -# Mac OSX + Python 3.5: Builds and tests -build_macosx_35: - <<: *build_job - variables: &macosx_35_build_variables - PYTHON_VERSION: "3.5" - tags: - - conda-macosx -test_macosx_35: - <<: *test_job - variables: *macosx_35_build_variables +# Deploy targets +.deploy_template: &deploy_job + stage: deploy + before_script: + - ./_ci/install.sh _ci condapackage #updates ci support scripts + script: + - ./_ci/deploy.sh dependencies: - - build_macosx_35 + - build_linux_27 + - build_linux_36 + - build_macosx_27 + - build_macosx_36 tags: - - conda-macosx + - deployer -wheels_macosx_35: - <<: *wheels_job - variables: *macosx_35_build_variables - dependencies: - - build_macosx_35 - tags: - - conda-macosx +deploy_beta: + <<: *deploy_job + environment: beta + only: + - master + - condapackage -# Mac OSX + Python 3.6: Builds and tests -build_macosx_36: - <<: *build_job - variables: &macosx_36_build_variables - PYTHON_VERSION: "3.6" - tags: - - conda-macosx -test_macosx_36: - <<: *test_job - variables: *macosx_36_build_variables - dependencies: - - build_macosx_36 - tags: - - conda-macosx +deploy_stable: + <<: *deploy_job + environment: stable + only: + - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) + except: + - branches + -wheels_macosx_36: - <<: *wheels_job - variables: *macosx_36_build_variables +pypi: + stage: pypi + environment: pypi + only: + - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) + except: + - branches + before_script: + - ./_ci/install.sh _ci condapackage #updates ci support scripts + script: + - ./_ci/pypi.sh dependencies: - - build_macosx_36 + - build_linux_36 tags: - - conda-macosx + - deployer diff --git a/conda/meta.yaml b/conda/meta.yaml new file mode 100644 index 0000000..135876a --- /dev/null +++ b/conda/meta.yaml @@ -0,0 +1,61 @@ +{% set name = 'bob.learn.activation' %} +{% set project_dir = environ.get('RECIPE_DIR') + '/..' %} + +package: + name: {{ name }} + version: {{ environ.get('BOB_PACKAGE_VERSION', '0.0.1') }} + +build: + number: {{ environ.get('BOB_BUILD_NUMBER', 0) }} + run_exports: + - {{ pin_subpackage(name) }} + script: + - cd {{ project_dir }} + {% if environ.get('BUILD_EGG') %} + - python setup.py sdist --formats=zip + {% endif %} + - python setup.py install --single-version-externally-managed --record record.txt + +requirements: + build: + - {{ compiler('c') }} + - {{ compiler('cxx') }} + - pkg-config {{ pkg_config }} + - cmake {{ cmake }} + host: + - python {{ python }} + - setuptools {{ setuptools }} + - bob.extension >2.0.4 + - bob.blitz + - bob.core + - bob.io.base + - libblitz {{ libblitz }} + - boost {{ boost }} + - numpy {{ numpy }} + run: + - python + - setuptools + - boost + - {{ pin_compatible('numpy') }} + +test: + imports: + - {{ name }} + commands: + - nosetests --with-coverage --cover-package={{ name }} -sv {{ name }} + - sphinx-build -aEW {{ project_dir }}/doc {{ project_dir }}/sphinx + - sphinx-build -aEb doctest {{ project_dir }}/doc sphinx + - conda inspect linkages -p $PREFIX {{ name }} # [not win] + - conda inspect objects -p $PREFIX {{ name }} # [osx] + requires: + - bob-devel {{ bob_devel }}.* + - nose + - coverage + - sphinx + - sphinx_rtd_theme + +about: + home: https://www.idiap.ch/software/bob/ + license: BSD 3-Clause + summary: Bindings for bob.machine's Activation functors + license_family: BSD diff --git a/doc/conf.py b/doc/conf.py index 51361c6..e9d69df 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -25,15 +25,9 @@ extensions = [ 'sphinx.ext.intersphinx', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode', + 'sphinx.ext.mathjax', ] -import sphinx -if sphinx.__version__ >= "1.4.1": - extensions.append('sphinx.ext.imgmath') - imgmath_image_format = 'svg' -else: - extensions.append('sphinx.ext.pngmath') - # Be picky about warnings nitpicky = True -- GitLab