.gitlab-ci.yml 3 KB
Newer Older
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
1 2 3 4 5
# WARNING!
# OTB uses Git-LFS to store the (large) tests data.
# Git-LFS is mostly transparent for the user and recent versions
# are able to use Git-LFS quite efficiently.
# But Git fails to manage efficiently numerous LFS data.
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
6
# We have to use directly git-lfs wrapping commands to have an
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
7 8 9 10
# efficient cloning step.
# Furthermore, Git-LFS and Gitlab sufer a bug preventing usage of 
# GIT_STRATEGY=fetch (https://gitlab.com/gitlab-org/gitlab-runner/issues/3318)

Sébastien Dinot's avatar
Sébastien Dinot committed
11
variables:
12
  BUILD_IMAGE_REGISTRY: $CI_REGISTRY/gbonnefille/otb-build-env
Sébastien Dinot's avatar
Sébastien Dinot committed
13
  DOCKER_DRIVER: overlay2
14
  GIT_DEPTH: "3"
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
15
  # Disable automatic checkout to let us fetch LFS before
16
  GIT_CHECKOUT: "false"
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
17
  # The fetch strategy fails with LFS and GitLab
18
  GIT_STRATEGY: "clone"
19 20

before_script:
21 22
  # make sure LFS hooks are installed
  - git lfs install
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
23
  # Provision efficiently the local LFS cache before checkout
24
  - git lfs fetch origin $CI_COMMIT_SHA
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
25
  # Checkout the expected branch
26
  - git checkout $CI_COMMIT_REF_NAME
Sébastien Dinot's avatar
Sébastien Dinot committed
27 28 29 30

stages:
  - build

31
.general:
Sébastien Dinot's avatar
Sébastien Dinot committed
32 33 34 35 36 37
  retry:
    max: 2
    when:
      - runner_system_failure
      - stuck_or_timeout_failure

Antoine Regimbeau's avatar
Typo  
Antoine Regimbeau committed
38
native-build:
39
  extends: .general
40
  only: [merge_requests]
Sébastien Dinot's avatar
Sébastien Dinot committed
41
  stage: build
42
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-native:18.04
Sébastien Dinot's avatar
Sébastien Dinot committed
43
  script:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
44
    - ctest -VV -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-gcc
Antoine Regimbeau's avatar
Antoine Regimbeau committed
45

Antoine Regimbeau's avatar
Antoine Regimbeau committed
46 47
debian-build:
  extends: .general
48
  only: [merge_requests]
Antoine Regimbeau's avatar
Antoine Regimbeau committed
49
  stage: build
50
  image: $BUILD_IMAGE_REGISTRY/otb-debian-native:unstable
Antoine Regimbeau's avatar
Antoine Regimbeau committed
51 52 53
  script:
    - ctest -VV -S CI/main_ci.cmake -DIMAGE_NAME:string=debian-unstable-gcc

54
.common-build:
55
  extends: .general
Antoine Regimbeau's avatar
Antoine Regimbeau committed
56
  stage: build
57
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-shark:18.04
Antoine Regimbeau's avatar
Antoine Regimbeau committed
58
  script:
Guillaume Pasero's avatar
Guillaume Pasero committed
59
    - ctest -VV -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-llvm-shark
60 61 62 63 64 65 66 67 68

build:ubuntu-llvm:
  only: [merge_requests]
  extends: .common-build

build:ubuntu-llvm-wip:
  except: [merge_requests]
  extends: .common-build

aregimbe's avatar
aregimbe committed
69
superbuild-prepare:
70 71
  only: [merge_requests]
  extends: .common-build
aregimbe's avatar
aregimbe committed
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
  stage: prepare
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
  before_script:
# This override the previous before_script
    - git checkout $CI_COMMIT_REF_NAME
# We are now doing the git-lfs install
# This is done after the checkout so we avoid downloading Data
# But we need it to upload the archive
    - git-lfs install
    - git config --global user.email "otbbot@orfeo-toolbox.org"
    - git config --global user.name "otbbot"
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$K8S_SECRET_SSH")
# This is for debug, we are checking the owner of the ssh key
# - ssh -o StrictHostKeyChecking=no -T git@gitlab.orfeo-toolbox.org
  script:
    - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base
  artifacts:
    expire_in: 24 hrs
    paths:
      # This recovers logs from superbuild build
      - build/*/*/*/*.log

95 96 97 98 99 100 101
superbuild:
  only: [merge_requests]
  extends: .common-build
  stage: build
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
  script:
    - ctest -VV -S CI/build_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base