.gitlab-ci.yml 4.72 KB
Newer Older
1 2 3 4 5
# 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.
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
6 7


8 9 10
# 1) Generic instructions (only change if you know what you're doing)
# -------------------------------------------------------------------

Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
11 12 13 14 15 16 17 18
# Definition of our build pipeline
stages:
  - build
  - test
  - docs
  - wheels


19 20 21 22
# Global variables
variables:
  CONDA_PREFIX: env

Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
23 24 25 26 27 28 29

# 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
30 31 32 33 34
    - 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/"
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
35
  script:
36 37 38 39 40 41 42 43 44 45

    - ./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}
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
46
  after_script:
47
    - rm -rf ${CONDA_PREFIX}
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
48
  artifacts:
49
    expire_in: 1 day
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
50
    paths:
51
      - bootstrap-conda.sh
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
52 53
      - dist/
      - sphinx/
54
      - PythonFaceEvaluation/
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
55 56


57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
# 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
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
80 81 82 83
# Needs to run on all supported architectures, platforms and python versions
.test_template: &test_job
  stage: test
  before_script:
84 85 86 87
    - ./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
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
88
  script:
89 90 91 92 93
    - 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
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
94
  after_script:
95
    - rm -rf ${CONDA_PREFIX}
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
96 97 98


# Template for the wheel uploading stage
99 100 101
# 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)
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
102 103 104 105
.wheels_template: &wheels_job
  stage: wheels
  only:
    - master
106
    - tags
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
107
  before_script:
108 109
    - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/8/raw | tr -d '\r' > upload-wheel.sh
    - chmod 755 upload-wheel.sh
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
110
  script:
111
    - ./upload-wheel.sh
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
112 113 114 115 116 117 118 119 120


# Template for (latest) documentation upload stage
# Only one real job needs to do this
.docs_template: &docs_job
  stage: docs
  only:
    - master
  before_script:
121 122
    - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/9/raw | tr -d '\r' > upload-sphinx.sh
    - chmod 755 upload-sphinx.sh
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
123
  script:
124
    - ./upload-sphinx.sh
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
125 126


127 128
# 2) Package specific instructions (you may tune this if needed)
# --------------------------------------------------------------
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
129

130
# Linux + Python 2.7: Builds, tests, uploads wheel
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
131
build_linux_27:
132
  <<: *linux_build_job
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
133
  variables: &linux_27_build_variables
134 135
    <<: *linux_build_variables
    PYTHON_VER: "2.7"
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
136 137 138 139 140 141 142 143 144 145 146 147
    WHEEL_TAG: "py27"
  tags:
    - conda-linux

test_linux_27:
  <<: *test_job
  variables: *linux_27_build_variables
  dependencies:
    - build_linux_27
  tags:
    - conda-linux

148 149
docs_linux_27:
  <<: *docs_job
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
150
  dependencies:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
151
    - build_linux_27
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
152 153 154
  tags:
    - conda-linux

155 156
wheels_linux_27:
  <<: *wheels_job
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
157
  dependencies:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
158
    - build_linux_27
Amir MOHAMMADI's avatar
Amir MOHAMMADI committed
159 160 161
  tags:
    - conda-linux