From d8fb9400bbebefb812960a124640fb3fbb1c3c86 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira Date: Thu, 29 Sep 2016 14:16:10 +0200 Subject: [PATCH] Reverted to the old ci --- .gitlab-ci.yml | 160 +++++++++++++++++++++++++------------------------ 1 file changed, 83 insertions(+), 77 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e096cd8..01fc722 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,20 +1,25 @@ -# 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 is defined in two parts: 1) a generic set of instructions you +# probably **don't** need to change and 2) a part you may have to tune to your +# project. It heavily uses template features from YAML to help you in only +# changing a minimal part of it and avoid code duplication to a maximum while +# still providing a nice pipeline display on your package. +# 1) Generic instructions (only change if you know what you're doing) +# ------------------------------------------------------------------- + # Definition of our build pipeline stages: - build - test - docs - wheels - - deploy -# --------- -# Templates -# --------- +# Global variables +variables: + CONDA_PREFIX: env + # Template for the build stage # Needs to run on all supported architectures, platforms and python versions @@ -22,101 +27,112 @@ stages: 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 + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/7/raw | tr -d '\r' > bootstrap-conda.sh + - chmod 755 ./bootstrap-conda.sh + - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} + variables: &build_variables + BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/" script: - - cp build.sh ./_ci - - ./_ci/build.sh + + - ./bin/buildout -c buildout-before-patch.cfg + - wget https://www.idiap.ch/software/bob/databases/latest/PythonFaceEvaluation.tar.bz2 + - mkdir PythonFaceEvaluation + - tar -xjf PythonFaceEvaluation.tar.bz2 -C PythonFaceEvaluation + - ./bin/patch_CSU.py PythonFaceEvaluation + - ./bin/buildout buildout:csu-dir=./PythonFaceEvaluation + - if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi + - ./bin/sphinx-build doc sphinx + - ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} after_script: - - ./_ci/after_build.sh + - rm -rf ${CONDA_PREFIX} artifacts: - expire_in: 1 week + expire_in: 1 day paths: - - _ci/ + - bootstrap-conda.sh - dist/ - sphinx/ - PythonFaceEvaluation/ -# Template for the test stage - re-installs from uploaded wheels +# Template for building on a Linux machine +.build_linux_template: &linux_build_job + <<: *build_job + variables: &linux_build_variables + <<: *build_variables + CONDA_FOLDER: "/local/conda" + CFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage" + CXXFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage" + + +# Template for building on a Mac OSX machine +.build_mac_template: &macosx_build_job + <<: *build_job + variables: &macosx_build_variables + <<: *build_variables + CONDA_FOLDER: "/opt/conda" + MACOSX_DEPLOYMENT_TARGET: "10.9" + CFLAGS: "-pthread -coverage" + CXXFLAGS: "-pthread -coverage" + LDFLAGS: "-lpthread" + + +# Template for the test stage - re-install 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 + - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} + - source ${CONDA_FOLDER}/bin/activate ${CONDA_PREFIX} + - conda install --yes -c conda-forge -p ${CONDA_PREFIX} opencv==2.4.12 + - pip install --use-wheel --no-index --pre dist/*.whl script: - - cp test.sh ./_ci - - ./_ci/test.sh + - cd ${CONDA_PREFIX} + - python -c "from ${CI_PROJECT_NAME} import get_config; print(get_config())" + - coverage run --source=${CI_PROJECT_NAME} ./bin/nosetests -sv ${CI_PROJECT_NAME} + - coverage report + - sphinx-build -b doctest ../doc ../sphinx after_script: - - ./_ci/after_test.sh + - rm -rf ${CONDA_PREFIX} # Template for the wheel uploading stage -# Needs to run against one supported architecture, platform and python version +# Needs to run against one combination of python 2.x and 3.x if it is a python +# only package, otherwise, needs to run in both pythons to all supported +# architectures (Linux and Mac OSX 64-bit) .wheels_template: &wheels_job stage: wheels - environment: intranet only: - master - - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) + - tags before_script: - - ./_ci/install.sh _ci #updates - - ./_ci/before_wheels.sh + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/8/raw | tr -d '\r' > upload-wheel.sh + - chmod 755 upload-wheel.sh script: - - ./_ci/wheels.sh - after_script: - - ./_ci/after_wheels.sh + - ./upload-wheel.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 + - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/9/raw | tr -d '\r' > upload-sphinx.sh + - chmod 755 upload-sphinx.sh script: - - ./_ci/deploy.sh - after_script: - - ./_ci/after_deploy.sh + - ./upload-sphinx.sh -# ------------- -# Build Targets -# ------------- +# 2) Package specific instructions (you may tune this if needed) +# -------------------------------------------------------------- -# Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed) +# Linux + Python 2.7: Builds, tests, uploads wheel build_linux_27: - <<: *build_job + <<: *linux_build_job variables: &linux_27_build_variables - PYTHON_VERSION: "2.7" + <<: *linux_build_variables + PYTHON_VER: "2.7" WHEEL_TAG: "py27" tags: - conda-linux @@ -129,25 +145,15 @@ test_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 +docs_linux_27: + <<: *docs_job dependencies: - build_linux_27 tags: - conda-linux -docs_linux_27: - <<: *docs_job - variables: *linux_27_build_variables +wheels_linux_27: + <<: *wheels_job dependencies: - build_linux_27 tags: -- 2.21.0