Skip to content
Snippets Groups Projects
.gitlab-ci.yml 6.77 KiB
Newer Older
Laurent Heirendt's avatar
Laurent Heirendt committed
  - generator
  - documentation
  - test-additional-v1.5
  - test-additional-v1.6
variables:
    GIT_STRATEGY: clone
Laurent Heirendt's avatar
Laurent Heirendt committed
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""
.global_settings: &global_settings_pull
  rules:
   - if: $CI_PIPELINE_SOURCE == "external_pull_request_event"
.global_settings: &global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  rules:
   - if: $CI_COMMIT_BRANCH == "master"
   - if: $CI_COMMIT_BRANCH == "develop"
   - if: $CI_COMMIT_TAG =~ /^v/
Laurent Heirendt's avatar
Laurent Heirendt committed
.global_testing_v15: &global_testing_v15
  variables:
    JULIA_VER: "v1.5.3"

.global_testing_v16: &global_testing_v16
  variables:
    JULIA_VER: "v1.6.0"

# platform-specific test settings
# --------------------------------------

.global_testing_linux: &global_testing_linux
  tags:
   - slave01
    - $ARTENOLIS_SOFT_PATH/julia/$JULIA_VER/bin/julia --inline=yes --check-bounds=yes --color=yes --project=@. -e 'import Pkg; Pkg.test(; coverage = true)'
Laurent Heirendt's avatar
Laurent Heirendt committed
.global_testing_win8: &global_testing_win8
  tags:
    - windows8

.global_testing_win10: &global_testing_win10
  tags:
    - windows10

.global_testing_win: &global_testing_win
  script:
    - $global:LASTEXITCODE = 0 # Note the global prefix.
    - Invoke-Expression $Env:ARTENOLIS_SOFT_PATH"\julia\"$Env:JULIA_VER"\bin\julia --inline=yes --check-bounds=yes --color=yes --project=@. -e 'import Pkg; Pkg.test(; coverage = true)'"
Laurent Heirendt's avatar
Laurent Heirendt committed
    - exit $LASTEXITCODE
Laurent Heirendt's avatar
Laurent Heirendt committed
.global_testing_mac: &global_testing_mac
Laurent Heirendt's avatar
Laurent Heirendt committed
  tags:
    - mac
Laurent Heirendt's avatar
Laurent Heirendt committed
  script:
    - $ARTENOLIS_SOFT_PATH/julia/$JULIA_VER/Contents/Resources/julia/bin/julia --inline=yes --check-bounds=yes --color=yes --project=@. -e 'import Pkg; Pkg.test(; coverage = true)'
Laurent Heirendt's avatar
Laurent Heirendt committed
# Check the format of the code
# --------------------------------------

format:
  image: docker:19.03.13
  tags:
    - privileged
  services:
    - name: docker:19.03.13-dind
      command: ["--tls=false", "--mtu=1458", "--registry-mirror", "https://docker-registry.lcsb.uni.lu"]
  before_script:
    - docker login -u $CI_USER_NAME -p $GITLAB_ACCESS_TOKEN $CI_REGISTRY
Laurent Heirendt's avatar
Laurent Heirendt committed
  script:
    - |
      docker run -v "$PWD":/project $CI_REGISTRY/r3/docker/julia-custom julia -e 'using JuliaFormatter; format("/project", verbose=true);'
    - |
      if [ `docker run -i -v "$PWD":/git alpine/git status -s | wc -l` -ne 0 ] ; then
        GITHUB_COMMENT=":red_square:  Commit ${CI_COMMIT_SHORT_SHA} requires formatting!\
      "$'\n\n'"Required formatting changes summary:\
      "$'\n```\n'"`docker run -i -v \"$PWD\":/git alpine/git diff --stat`"$'\n```'
        GITHUB_COMMENT=":green_circle:  Commit ${CI_COMMIT_SHORT_SHA} is formatted properly."
    - |
      export GITHUB_TOKEN="${GITHUB_ACCESS_TOKEN_FORMATTER}"
      export GITHUB_OWNER="lcsb-biocore"
      export GITHUB_REPO="cobrexa.jl"
      export GITHUB_COMMENT_TYPE=pr
      export GITHUB_PR_ISSUE_NUMBER="${CI_EXTERNAL_PULL_REQUEST_IID}"
      export GITHUB_COMMENT_FORMAT=""
      export GITHUB_COMMENT
Laurent Heirendt's avatar
Laurent Heirendt committed
    - |
      docker run -i --rm \
            -e GITHUB_TOKEN \
            -e GITHUB_OWNER \
            -e GITHUB_REPO \
            -e GITHUB_COMMENT_TYPE \
            -e GITHUB_PR_ISSUE_NUMBER \
            -e GITHUB_COMMENT_FORMAT \
            -e GITHUB_COMMENT \
            cloudposse/github-commenter
# Documentation history
# --------------------------------------

Laurent Heirendt's avatar
Laurent Heirendt committed
generator:gource:
  stage: generator
  image: docker:19.03.13
  tags:
    - privileged
Laurent Heirendt's avatar
Laurent Heirendt committed
  services:
    - name: docker:19.03.13-dind
Laurent Heirendt's avatar
Laurent Heirendt committed
      command: ["--tls=false", "--mtu=1458", "--registry-mirror", "https://docker-registry.lcsb.uni.lu"]
  before_script:
    - docker login -u $CI_USER_NAME -p $GITLAB_ACCESS_TOKEN $CI_REGISTRY
Laurent Heirendt's avatar
Laurent Heirendt committed
  script:
    - docker run -v "$PWD":/visualization $CI_REGISTRY/r3/docker/gource
  artifacts:
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
# Documentation tests
# --------------------------------------

doc-tests:v1.6:
  stage: documentation
  image: $CI_REGISTRY/r3/docker/julia-custom
  script:
    - julia --project=@. -e 'import Pkg; Pkg.instantiate();'
    - julia --project=@. --color=yes test/doctests.jl
Laurent Heirendt's avatar
Laurent Heirendt committed

# Deploy the documentation
# --------------------------------------

pages:
  stage: documentation
  dependencies:
    - generator:gource
  image: $CI_REGISTRY/r3/docker/julia-custom
  script:
    # resolve and build packages from the docs/Project.toml file
    - julia --project=docs -e 'using Pkg; Pkg.resolve(); Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate();'

    # deploy doc (without git history)
Laurent Heirendt's avatar
Laurent Heirendt committed
    - julia --project=docs --color=yes docs/make.jl

    # move to the directory picked up by Gitlab pages (with git history)
    - mv docs/build public
Laurent Heirendt's avatar
Laurent Heirendt committed
  artifacts:
    paths:
      - public
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed

Laurent Heirendt's avatar
Laurent Heirendt committed
# Test Docker run with Julia v1.6
# --------------------------------------

docker:v1.6:
Laurent Heirendt's avatar
Laurent Heirendt committed
  image: $CI_REGISTRY/r3/docker/julia-custom
  script:
    - julia --check-bounds=yes --inline=yes --project=@. -e "import Pkg; Pkg.test(; coverage = true)"
Laurent Heirendt's avatar
Laurent Heirendt committed
  after_script:
    - julia --project=test/coverage test/coverage/coverage-summary.jl
# Test Julia v1.5
# --------------------------------------

Laurent Heirendt's avatar
Laurent Heirendt committed
linux:v1.5:
  stage: test-required
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v15
  <<: *global_testing_linux
windows10:v1.5:
  stage: test-additional-v1.5
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v15
  <<: *global_testing_win10
  <<: *global_testing_win

windows8:v1.5:
  stage: test-additional-v1.5
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v15
  <<: *global_testing_win8
  <<: *global_testing_win

Laurent Heirendt's avatar
Laurent Heirendt committed
mac:v1.5:
  stage: test-additional-v1.5
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v15
  <<: *global_testing_mac
# Test Julia v1.6
# --------------------------------------

Laurent Heirendt's avatar
Laurent Heirendt committed
linux:v1.6:
  stage: test-additional-v1.6
  needs: ["linux:v1.5"]
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v16
  <<: *global_testing_linux

windows10:v1.6:
  stage: test-additional-v1.6
  needs: ["windows10:v1.5"]
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v16
  <<: *global_testing_win10
  <<: *global_testing_win

windows8:v1.6:
  stage: test-additional-v1.6
  needs: ["windows8:v1.5"]
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v16
  <<: *global_testing_win8
  <<: *global_testing_win

mac:v1.6:
  stage: test-additional-v1.6
  needs: ["mac:v1.5"]
  <<: *global_settings_comprehensive
Laurent Heirendt's avatar
Laurent Heirendt committed
  <<: *global_testing_v16
  <<: *global_testing_mac
# Trigger test pipelines in external repo
# --------------------------------------

trigger:
  stage: test-required
  image: curlimages/curl
  tags:
    - privileged
    - curl --silent --output /dev/null -X POST -F token=$EXTERNAL_REPO_TOKEN -F ref=$EXTERNAL_REPO_BRANCH $EXTERNAL_REPO
  <<: *global_settings_comprehensive