Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.98 KiB
Newer Older
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# 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.
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed


# Definition of our build pipeline
stages:
  - build
  - test
  - docs
  - wheels
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  - deploy
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# ---------
# Templates
# ---------
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed

# 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
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - 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
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/build.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  after_script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/after_build.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  artifacts:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    expire_in: 1 week
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    paths:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
      - _ci/
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
      - dist/
      - sphinx/


Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Template for the test stage - re-installs from uploaded wheels
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Needs to run on all supported architectures, platforms and python versions
.test_template: &test_job
  stage: test
  before_script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/install.sh _ci #updates
    - ./_ci/before_test.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/test.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  after_script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/after_test.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed


# Template for the wheel uploading stage
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Needs to run against one supported architecture, platform and python version
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
.wheels_template: &wheels_job
  stage: wheels
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  environment: intranet
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  only:
    - master
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  before_script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/install.sh _ci #updates
    - ./_ci/before_wheels.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/wheels.sh
  after_script:
    - ./_ci/after_wheels.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed


# Template for (latest) documentation upload stage
# Only one real job needs to do this
.docs_template: &docs_job
  stage: docs
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  environment: intranet
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  only:
    - master
  before_script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_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
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  script:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - ./_ci/deploy.sh
  after_script:
    - ./_ci/after_deploy.sh
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# -------------
# Build Targets
# -------------
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed)
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
build_linux_27:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *build_job
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: &linux_27_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    PYTHON_VERSION: "2.7"
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    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
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: *linux_27_build_variables
  dependencies:
    - build_linux_27
  tags:
    - conda-linux

deploy_linux_27:
  <<: *deploy_job
  variables: *linux_27_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  dependencies:
    - build_linux_27
  tags:
    - conda-linux


Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Linux + Python 3.5: Builds, tests and uploads wheel
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
build_linux_35:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *build_job
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: &linux_35_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    PYTHON_VERSION: "3.5"
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    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
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: *linux_35_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  dependencies:
    - build_linux_35
  tags:
    - conda-linux

docs_linux_35:
  <<: *docs_job
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: *linux_35_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  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


Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
# Mac OSX + Python 2.7: Builds and tests
build_macosx_27:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *build_job
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  variables: &macosx_27_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    PYTHON_VERSION: "2.7"
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    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:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *build_job
  variables: &macosx_35_build_variables
    PYTHON_VERSION: "3.5"
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    WHEEL_TAG: "py3"
  tags:
    - conda-macosx

Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *test_job
  variables: *macosx_35_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  dependencies:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  tags:
    - conda-macosx


# Mac OSX + Python 3.6: Builds and tests
build_macosx_36:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *build_job
  variables: &macosx_36_build_variables
    PYTHON_VERSION: "3.6"
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    WHEEL_TAG: "py3"
  tags:
    - conda-macosx

Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  <<: *test_job
  variables: *macosx_36_build_variables
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  dependencies:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
  tags:
Tiago de Freitas Pereira's avatar
Tiago de Freitas Pereira committed
    - conda-macosx