Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  .gitlab-ci.yml   Sprache: unbekannt

 
image: $BASE_IMAGE

include:
  - local: '/dev/ci/gitlab-modes/protected-mode.yml'
    rules:
      - if: $CI_COMMIT_BRANCH == "master"
      - if: $CI_COMMIT_BRANCH =~ /^v.*\..*$/

  - local: "/dev/ci/gitlab-modes/normal-mode.yml"
    rules:
      - if: $CI_COMMIT_BRANCH != "master" && $CI_COMMIT_BRANCH !~ /^v.*\..*$/

  - local: "/dev/ci/gitlab-modes/tagged-runners.yml"
    rules:
      - if: $TAGGED_RUNNERS

  - local: "/dev/ci/gitlab-modes/untagged-runners.yml"
    rules:
      - if: $TAGGED_RUNNERS == null

  - local: '/dev/bench/gitlab-bench.yml'

stages:
  - docker
  - build-0
  - build-1
  - build-2
  - build-3+
  - deploy
  - stats

# We set "needs" to contain all transitive dependencies. We include the
# transitive dependencies as otherwise we don't get their artifacts
# (eg if color had just needs: bignums it wouldn't get the artifact containing coq)

# some default values
variables:
  # Format: image_name-V$DATE-$hash
  # $DATE is so we can tell what's what in the image list
  # The $hash is the first 10 characters of the md5 of the Dockerfile. e.g.
  # echo $(md5sum dev/ci/docker/old_ubuntu_lts/Dockerfile | head -c 10)
  # echo $(md5sum dev/ci/docker/edge_ubuntu/Dockerfile | head -c 10)
  BASE_CACHEKEY: "old_ubuntu_lts-v9.1-V2025-04-29-b90c41d539"
  EDGE_CACHEKEY: "edge_ubuntu-v9.1-V2025-04-07-dee2054641"
  BASE_IMAGE: "$CI_REGISTRY_IMAGE:$BASE_CACHEKEY"
  EDGE_IMAGE: "$CI_REGISTRY_IMAGE:$EDGE_CACHEKEY"

  # Used to select special compiler switches such as flambda, 32bits, etc...
  OPAM_VARIANT: ""
  GIT_DEPTH: "10"

before_script:
  - dev/ci/gitlab-section.sh start before_script before_script
  - cat /proc/{cpu,mem}info || true
  - ulimit -s
  - ls -a # figure out if artifacts are around
  - printenv -0 | sort -z | tr '\0' '\n'
  - opam switch set -y "${COMPILER}${OPAM_VARIANT}"
  - eval $(opam env)
  - opam list
  - opam config list
  - dune printenv --root .
  - dev/tools/check-cachekey.sh
  - dev/tools/list-potential-artifacts.sh > downloaded_artifacts.txt
  - if [ -d saved_build_ci ]; then mv saved_build_ci _build_ci; fi
  - dev/ci/gitlab-section.sh end before_script

# Regular "release" build of Rocq, with final installed layout
.build-template:
  stage: build-0
  interruptible: true
  extends: .auto-use-tags
  variables:
    ROCQIDE: "opt"
  artifacts:
    name: "$CI_JOB_NAME"
    paths:
      - _install_ci
      # All those are for the test-suite jobs, to be discarded soon
      - config/Makefile
      - config/coq_config.py
      - config/coq_config.ml
      - config/coq_byte_config.ml
      - config/dune.c_flags
    expire_in: 1 week
  script:
    - cp dev/ci/dune-workspace.ci dune-workspace

    - PKGS=rocq-runtime,coq-core,rocq-core,coqide-server,rocq-devtools
    - if [ "$ROCQIDE" != "no" ]; then PKGS=${PKGS},rocqide; fi
    - dev/ci/gitlab-section.sh start coq.clean coq.clean
    - make clean # ensure that `make clean` works on a fresh clone
    - dev/ci/gitlab-section.sh end coq.clean

    - dev/ci/gitlab-section.sh start coq.config coq.config
    - ./configure -relocatable $COQ_EXTRA_CONF
    - dev/ci/gitlab-section.sh end coq.config

    - dev/ci/gitlab-section.sh start coq.build coq.build
    - make dunestrap
    - dune build -p $PKGS
    - dev/ci/gitlab-section.sh end coq.build

    - dev/ci/gitlab-section.sh start coq.install coq.install
    - dune install --prefix="$(pwd)/_install_ci" $(sed -e 's/,/ /g' <<< ${PKGS})
    - dev/ci/gitlab-section.sh end coq.install

# Developer build, with build layout. Faster and useful for those
# jobs needing _build
.build-template:base:dev:
  stage: build-0
  interruptible: true
  extends: .auto-use-tags
  script:
    - cp dev/ci/dune-workspace.ci dune-workspace
    - make $DUNE_TARGET
    - tar cfj _build.tar.bz2 _build
  variables:
    DUNE_TARGET: "world rocqide"
  artifacts:
    name: "$CI_JOB_NAME"
    when: always
    paths:
      - _build/log
      - _build.tar.bz2
      - theories/Corelib/dune
      - theories/Ltac2/dune
    expire_in: 1 day

.doc-template:
  stage: build-1
  interruptible: true
  extends: .auto-use-tags
  needs:
    - build:base:dev
  script:
    - ulimit -S -s 16384
    - tar xfj _build.tar.bz2
    - make "$DUNE_TARGET"
  artifacts:
    when: always
    name: "$CI_JOB_NAME"
    expire_in: 2 months

# The used Rocq must be set explicitly for each job with "needs:".
# We add a spurious dependency `not-a-real-job` that must be
# overridden otherwise the CI will fail (to help debugging missing needs).

# set "needs" when using
.test-suite-template:
  stage: build-1
  interruptible: true
  extends: .auto-use-tags
  needs:
    - not-a-real-job
  script:
    - cd test-suite
    - make clean
    - export OCAMLPATH=$(readlink -f ../_install_ci/lib/):"$OCAMLPATH"
    - COQEXTRAFLAGS="${COQEXTRAFLAGS}" make -j "$NJOBS" TIMED=1 all ROCQ_EXE=$(pwd)/../_install_ci/bin/rocq
  artifacts:
    name: "$CI_JOB_NAME.logs"
    when: on_failure
    paths:
      - test-suite/logs
    expire_in: 1 week

# set "needs" when using
.validate-template:
  stage: build-2
  interruptible: true
  extends: .auto-use-tags
  needs:
    - not-a-real-job
  script:
    - for target in $CI_TARGETS; do dev/ci/ci-wrapper.sh "$target"; done
    - cd _install_ci
    - find lib/coq/ -name '*.vo' -fprint0 vofiles
    - xargs -0 --arg-file=vofiles bin/coqchk -o -m -coqlib lib/coq/ > ../coqchk.log 2>&1 || touch coqchk.failed
    - tail -n 1000 ../coqchk.log # the log is too big for gitlab so pipe to a file and display the tail
    - "[ ! -f coqchk.failed ]" # needs quoting for yml syntax reasons
  artifacts:
    name: "$CI_JOB_NAME.logs"
    when: always
    paths:
      - coqchk.log
    expire_in: 1 week

# This template defaults to "needs: build:base"
# Remember to include it as a transitive dependency if you want additional "needs:"
.ci-template:
  stage: build-1
  interruptible: true
  extends: .auto-use-tags
  script:
    - ulimit -S -s 16384           # For flambda + native
    # set CI_TARGETS from job name if not already provided, then print
    - echo CI_TARGETS = ${CI_TARGETS:=${CI_JOB_NAME#*:ci-}}
    - for target in $CI_TARGETS; do dev/ci/ci-wrapper.sh "$target"; done
    - touch ci-success
  after_script:
    - if { [ "$SAVE_BUILD_CI" ] || ! [ -e ci-success ]; } && [ -d _build_ci ]; then mv _build_ci saved_build_ci; fi
    - dev/tools/list-potential-artifacts.sh > available_artifacts.txt
    - dev/tools/cleanup-artifacts.sh downloaded_artifacts.txt available_artifacts.txt
  artifacts:
    name: "$CI_JOB_NAME"
    paths:
      - _install_ci
      - saved_build_ci
    exclude: # reduce artifact size
      - saved_build_ci/**/.git # exclude .git directory itself as well
      - saved_build_ci/**/.git/**/*
    when: always
    expire_in: 1 week
  needs:
    - build:base
  only: &full-ci
    variables:
      - $FULL_CI == "true"

.ci-template-flambda:
  extends: .ci-template
  image: $EDGE_IMAGE
  needs:
    - build:edge+flambda
  variables:
    OPAM_VARIANT: "+flambda"

.deploy-template:
  stage: deploy
  extends: .auto-use-tags
  before_script:
    - which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
    - eval $(ssh-agent -s)
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
    - git config --global user.name "coqbot"
    - git config --global user.email "coqbot@users.noreply.github.com"

.pkg:opam-template:
  stage: build-0
  image: $EDGE_IMAGE
  interruptible: true
  extends: .auto-use-tags
  # OPAM will build out-of-tree so no point in importing artifacts
  script:
    - if [ "$ROCQ_CI_NATIVE" = true ]; then opam install -y rocq-native; fi
    - opam pin add --kind=path rocq-runtime.dev .
    - opam pin add --kind=path rocq-core.dev .
    - if [ "$ROCQ_CI_NATIVE" = true ]; then echo "Definition f x := x + x." > test_native.v; fi
    - if [ "$ROCQ_CI_NATIVE" = true ]; then rocq c test_native.v; fi
    - if [ "$ROCQ_CI_NATIVE" = true ]; then test -f .coq-native/Ntest_native.cmxs; fi
    - opam pin add --kind=path coqide-server.dev .
    - opam pin add --kind=path rocqide.dev .
    - opam pin add --kind=path rocq-devtools .
    - opam pin add --kind=path rocq-test-suite.dev . -v
    - if command -v coqc; then exit 1; fi # coq-core didn't get autoinstalled
    - opam pin add --kind=path coq-core.dev .
  after_script:
    - eval $(opam env)
    - du -ha "$(coqc -where)" > files.listing
  artifacts:
    name: "$CI_JOB_NAME"
    paths:
      - files.listing
    when: always
    expire_in: 1 week
  variables:
    OPAM_VARIANT: "+flambda"
  only: *full-ci

.nix-template:
  stage: build-0
  needs: []
  interruptible: true
  image: nixos/nix:latest
  extends: .auto-use-tags
  variables:
    GIT_STRATEGY: none # Required because we don't have git
    USER: root # Variable required by Cachix
  before_script:
    - cat /proc/{cpu,mem}info || true
    # Use current worktree as tmpdir to allow exporting artifacts in case of failure
    - export TMPDIR=$PWD
    # Install Cachix
    - nix-env -iA nixpkgs.cachix
    - cachix use coq
  artifacts:
    name: "$CI_JOB_NAME.logs"
    when: on_failure
    paths:
      - nix-build-coq.drv-0/*/test-suite/logs
    expire_in: 1 week

##############################################################################
########################## End of templates ##################################
##############################################################################

docker-boot:
  stage: docker
  image: docker:stable
  services:
    - docker:dind
  before_script: []
  script:
    - dev/tools/check-cachekey.sh
    - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
    - cd dev/ci/docker/old_ubuntu_lts
    - if docker pull "$BASE_IMAGE"; then echo "Base image prebuilt!"; else docker build -t "$BASE_IMAGE" .; docker push "$BASE_IMAGE"; fi
    - cd ../edge_ubuntu
    - if docker pull "$EDGE_IMAGE"; then echo "Edge image prebuilt!"; else docker build -t "$EDGE_IMAGE" .; docker push "$EDGE_IMAGE"; fi
  except:
    variables:
      - $SKIP_DOCKER == "true"
  extends: .auto-use-docker-tags
  timeout: 2h

build:base:
  extends: .build-template
  variables:
    COQ_EXTRA_CONF: "-native-compiler yes"
  only: *full-ci

# no rocqide for 32bit: libgtk installation problems
build:base+32bit:
  extends: .build-template
  variables:
    OPAM_VARIANT: "+32bit"
    COQ_EXTRA_CONF: "-native-compiler yes"
    ROCQIDE: "no"
  only: *full-ci

build:edge+flambda:
  extends: .build-template
  image: $EDGE_IMAGE
  variables:
    OPAM_VARIANT: "+flambda"
    COQ_EXTRA_CONF: "-native-compiler yes"
  only: *full-ci

build:base:dev:
  extends: .build-template:base:dev

# Build using native dune rules
build:base:dev:dune:
  stage: build-0
  image: $EDGE_IMAGE
  variables:
    OPAM_VARIANT: "+flambda"
  interruptible: true
  extends: .auto-use-tags
  script:
    - cp theories/Corelib/dune.disabled theories/Corelib/dune
    - cp theories/Ltac2/dune.disabled theories/Ltac2/dune
    - dune build -p rocq-runtime,coq-core,rocq-core,coqide-server
    - ls _build/install/default/lib/coq/theories/Init/Prelude.vo
    - ls _build/install/default/lib/coq/user-contrib/Ltac2/Ltac2.vo
  only: *full-ci

build:base+async:
  extends: .build-template
  variables:
    COQ_EXTRA_CONF: "-native-compiler yes"
    COQ_DUNE_EXTRA_OPT: "-async"
  after_script:
    - dmesg > dmesg.txt
  allow_failure: true # See https://github.com/coq/coq/issues/9658
  only:
    variables:
      - $UNRELIABLE =~ /enabled/ && $FULL_CI == "true"
  artifacts:
    when: always
    paths:
      - _install_ci
      # All those are for the test-suite jobs, to be discarded once we have dune for the test-suite
      - config/Makefile
      - config/coq_config.py
      - config/coq_config.ml
      - config/coq_byte_config.ml
      - config/dune.c_flags
      - dmesg.txt
  timeout: 1h 30min

lint:
  stage: build-0
  image: $EDGE_IMAGE
  script: dev/lint-repository.sh
  extends: .auto-use-tags
  variables:
    GIT_DEPTH: "" # we need an unknown amount of history for per-commit linting
    OPAM_VARIANT: "+flambda"

# pkg:opam:
#   extends: .pkg:opam-template

pkg:opam:native:
  extends: .pkg:opam-template
  variables:
    ROCQ_CI_NATIVE: "true"

# broken, see eg https://gitlab.com/coq/coq/-/jobs/1754045983
# pkg:nix:deploy:
#   extends: .nix-template
#   environment:
#     name: cachix
#     url: https://coq.cachix.org
#   script:
#     - nix-build https://coq.inria.fr/nix/toolbox --argstr job coq --arg override "{coq = coq:$CI_COMMIT_SHA;}" -K | cachix push coq
#   only:
#     refs:
#       - master
#       - /^v.*\..*$/
#     variables:
#       - $CACHIX_AUTH_TOKEN

# pkg:nix:deploy:channel:
#   extends: .deploy-template
#   environment:
#     name: cachix
#     url: https://coq.cachix.org
#   only:
#     refs: # Repeat conditions from pkg:nix:deploy
#       - master
#       - /^v.*\..*$/
#     variables:
#       - $CACHIX_AUTH_TOKEN && $CACHIX_DEPLOYMENT_KEY
#        # if the $CACHIX_AUTH_TOKEN variable isn't set, the job it depends on doesn't exist
#   needs:
#     - pkg:nix:deploy
#   script:
#     - echo "$CACHIX_DEPLOYMENT_KEY" | tr -d '\r' | ssh-add - > /dev/null
#     # Remove all pr branches because they could be missing when we run git fetch --unshallow
#     - git branch --list 'pr-*' | xargs -r git branch -D
#     - git fetch --unshallow
#     - git branch -v
#     - git push git@github.com:coq/coq-on-cachix "${CI_COMMIT_SHA}":"refs/heads/${CI_COMMIT_REF_NAME}"

pkg:nix:
  extends: .nix-template
  script:
    - nix-build "$CI_PROJECT_URL/-/archive/$CI_COMMIT_SHA.tar.gz" -K
  only: *full-ci

doc:refman:
  extends: .doc-template
  variables:
    DUNE_TARGET: refman-html
  artifacts:
    paths:
      - _build/log
      - _build/default/doc/refman-html

doc:refman-pdf:
  extends: .doc-template
  variables:
    DUNE_TARGET: refman-pdf
  artifacts:
    paths:
      - _build/log
      - _build/default/doc/refman-pdf

doc:init:
  extends: .doc-template
  variables:
    DUNE_TARGET: corelib-html
  artifacts:
    paths:
      - _build/log
      - _build/default/doc/corelib/html

doc:refman:deploy:
  extends: .deploy-template
  environment:
    name: deployment
    url: https://coq.github.io/
  only:
    variables:
      - $DOCUMENTATION_DEPLOY_KEY
  needs:
    - doc:ml-api:odoc
    - doc:ci-refman
    - doc:init
    - library:ci-stdlib_doc
  script:
    - echo "$DOCUMENTATION_DEPLOY_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - git clone git@github.com:coq/doc.git _deploy
    - rm -rf _deploy/$CI_COMMIT_REF_NAME/api
    - rm -rf _deploy/$CI_COMMIT_REF_NAME/refman
    - rm -rf _deploy/$CI_COMMIT_REF_NAME/corelib
    - rm -rf _deploy/$CI_COMMIT_REF_NAME/refman-stdlib
    - rm -rf _deploy/$CI_COMMIT_REF_NAME/stdlib
    - mkdir -p _deploy/$CI_COMMIT_REF_NAME
    - cp -rv _build/default/_doc/_html _deploy/$CI_COMMIT_REF_NAME/api
    - cp -rv _build/default/doc/refman-html _deploy/$CI_COMMIT_REF_NAME/refman
    - cp -rv _build/default/doc/corelib/html _deploy/$CI_COMMIT_REF_NAME/corelib
    - cp -rv saved_build_ci/stdlib/_build/default/doc/refman-html _deploy/$CI_COMMIT_REF_NAME/refman-stdlib
    - cp -rv saved_build_ci/stdlib/_build/default/doc/stdlib/html _deploy/$CI_COMMIT_REF_NAME/stdlib
    - cd _deploy/$CI_COMMIT_REF_NAME/
    - git add api refman corelib refman-stdlib stdlib
    - git commit -m "Documentation of branch “$CI_COMMIT_REF_NAME” at $CI_COMMIT_SHORT_SHA"
    - git push # TODO: rebase and retry on failure

doc:ml-api:odoc:
  extends: .doc-template
  variables:
    DUNE_TARGET: apidoc
  artifacts:
    paths:
      - _build/log
      - _build/default/_doc/

test-suite:base:
  extends: .test-suite-template
  needs:
    - build:base
  only: *full-ci

test-suite:base+32bit:
  extends: .test-suite-template
  needs:
    - build:base+32bit
  variables:
    OPAM_VARIANT: "+32bit"
  only: *full-ci

test-suite:edge+flambda:
  extends: .test-suite-template
  image: $EDGE_IMAGE
  needs:
    - build:edge+flambda
  variables:
    OPAM_VARIANT: "+flambda"
  only: *full-ci

test-suite:base:dev:
  stage: build-1
  interruptible: true
  extends: .auto-use-tags
  needs:
    - build:base:dev
  script:
    - tar xfj _build.tar.bz2
    - make test-suite
  artifacts:
    name: "$CI_JOB_NAME.logs"
    when: on_failure
    paths:
      - _build/default/test-suite/logs
    expire_in: 1 week

.test-suite:ocaml+beta+dune-template:
  stage: build-1 # even though it has no deps we put it with the other test suite jobs
  needs:
    - docker-boot
  interruptible: true
  script:
    - opam switch create $OCAMLVER --empty
    - eval $(opam env)
    - opam repo add ocaml-beta https://github.com/ocaml/ocaml-beta-repository.git
    - opam update
    - opam install ocaml-variants=$OCAMLVER
    - opam install dune zarith
    - eval $(opam env)
    - export COQ_UNIT_TEST=noop
    - make test-suite
  artifacts:
    name: "$CI_JOB_NAME.logs"
    when: always
    paths:
      - _build/log
      - _build/default/test-suite/logs
    expire_in: 1 week
  allow_failure: true

test-suite:base+async:
  extends: .test-suite-template
  needs:
    - build:base
  variables:
    COQEXTRAFLAGS: "-async-proofs on -async-proofs-cache force"
  allow_failure: true
  only:
    variables:
      - $UNRELIABLE =~ /enabled/ && $FULL_CI == "true"

validate:base:
  extends: .validate-template
  variables:
    CI_TARGETS: "stdlib"
  needs:
    - build:base
    - library:ci-stdlib
  only: *full-ci

# we currently don't have a stdlib+32bit job
validate:base+32bit:
  extends: .validate-template
  needs:
    - build:base+32bit
  variables:
    OPAM_VARIANT: "+32bit"
  only: *full-ci

validate:edge+flambda:
  extends: .validate-template
  image: $EDGE_IMAGE
  variables:
    CI_TARGETS: "stdlib"
  needs:
    - build:edge+flambda
    - library:ci-stdlib+flambda
  variables:
    OPAM_VARIANT: "+flambda"
  only: *full-ci

# Libraries are by convention the projects that depend on Rocq
# but not on its ML API

library:ci-argosy:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-autosubst:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-bbv:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-bedrock2:
  extends: .ci-template-flambda
  variables:
    NJOBS: "1"
    SAVE_BUILD_CI: "1" # for bedrock2_examples
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  - library:ci-kami
  - library:ci-riscv_coq
  stage: build-3+

library:ci-bedrock2_examples:
  extends: .ci-template-flambda
  variables:
    NJOBS: "1"
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  - library:ci-kami
  - library:ci-riscv_coq
  - library:ci-bedrock2
  stage: build-3+
  timeout: 2h

library:ci-category_theory:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-equations
  stage: build-2

library:ci-color:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-bignums
  stage: build-2

library:ci-compcert:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-flocq
  - library:ci-menhir
  stage: build-2

library:ci-coq_performance_tests:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-coq_tools:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-coqprime:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-bignums
  stage: build-2

library:ci-coqtail:
  extends: .ci-template

library:ci-coquelicot:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-coqutil:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-cross_crypto:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-engine_bench:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-ext_lib:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-fcsl_pcm:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-2

library:ci-fiat_crypto:
  extends: .ci-template-flambda
  variables:
    COQEXTRAFLAGS: "-async-proofs-tac-j 0"
    SAVE_BUILD_CI: "1" # for fiat_crypto_ocaml
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  - library:ci-kami
  - library:ci-riscv_coq
  - library:ci-bedrock2
  - library:ci-coqprime
  - library:ci-rupicola
  - plugin:ci-rewriter
  stage: build-3+
  timeout: 3h

library:ci-fiat_crypto_legacy:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  timeout: 1h 30min

# We cannot use flambda due to
https://github.com/ocaml/ocaml/issues/7842, see
https://github.com/coq/coq/pull/11916#issuecomment-609977375
library:ci-fiat_crypto_ocaml:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  - library:ci-kami
  - library:ci-riscv_coq
  - library:ci-bedrock2
  - library:ci-coqprime
  - library:ci-rupicola
  - plugin:ci-rewriter
  - library:ci-fiat_crypto
  stage: build-3+
  artifacts:
    paths: [] # These artifacts would go over the size limit

library:ci-flocq:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-kami:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-menhir:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-oddorder:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-fourcolor:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-corn:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-bignums
  - plugin:ci-elpi_hb # CoRN uses elpi only (not HB) - depending on ci-elpi_hb reduces CI package count
  - library:ci-math_classes
  stage: build-3+

library:ci-hott:
  extends: .ci-template-flambda

library:ci-iris:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-autosubst
  stage: build-2

library:ci-math_classes:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-bignums
  stage: build-2

library:ci-mathcomp:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb  # for Hierarchy Builder
  stage: build-2
  variables:
    SAVE_BUILD_CI: "1" # for mathcomp_test

library:ci-mathcomp_test:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-mczify:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-algebra_tactics:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - library:ci-mczify
  stage: build-3+

library:ci-finmap:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-bigenough:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-analysis:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-mathcomp
  - library:ci-finmap
  - library:ci-bigenough
  - plugin:ci-elpi_hb  # for Hierarchy Builder
  stage: build-3+
  variables:
    SAVE_BUILD_CI: "1" # for analysis_stdlib

library:ci-analysis_stdlib:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-mathcomp
  - library:ci-finmap
  - library:ci-bigenough
  - library:ci-analysis
  - plugin:ci-elpi_hb  # for Hierarchy Builder
  - library:ci-stdlib+flambda
  stage: build-3+

library:ci-neural_net_interp:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-paco:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-itree:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-ext_lib
  - library:ci-paco
  stage: build-2

library:ci-itree_io:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-ext_lib
  - library:ci-paco
  - library:ci-simple_io
  - library:ci-itree
  stage: build-3+

library:ci-simple_io:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-ext_lib
  stage: build-2

library:ci-sf:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-stdlib:
  extends: .ci-template
  variables:
    SAVE_BUILD_CI: "1" # for test suite

library:ci-stdlib+flambda:
  extends: .ci-template-flambda
  variables:
    CI_TARGETS: "stdlib"
    SAVE_BUILD_CI: "1" # for test suite

library:ci-stdlib_test:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib
  stage: build-2

library:ci-stdlib_doc:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib
  stage: build-2
  variables:
    SAVE_BUILD_CI: "1" # for doc:refman:deploy

library:ci-tlc:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

library:ci-unimath:
  extends: .ci-template-flambda

library:ci-verdi_raft:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-vst:
  extends: .ci-template-flambda
  variables:
    NJOBS: "1"
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-flocq
  - library:ci-menhir
  - library:ci-compcert
  stage: build-3+
  timeout: 2h

library:ci-deriving:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+

library:ci-mathcomp_word:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-2

.library:ci-jasmin:  # disabled until repaired
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - library:ci-mathcomp_word
  - library:ci-mczify
  - library:ci-algebra_tactics
  - library:ci-ext_lib
  - library:ci-paco
  - library:ci-itree
  stage: build-3+

library:ci-http:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - library:ci-menhir
  - library:ci-ext_lib
  - library:ci-simple_io
  - library:ci-paco
  - library:ci-itree
  - library:ci-itree_io
  - plugin:ci-quickchick
  stage: build-3+
  variables:
    CI_TARGETS: "ceres parsec json async_test http"

library:ci-trakt:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  stage: build-2

# Plugins are by definition the projects that depend on Rocq's ML API

plugin:ci-aac_tactics:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-atbr:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-autosubst_ocaml:
  extends: .ci-template-flambda

plugin:ci-itauto:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-bignums:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-coinduction:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-coq_dpdgraph:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-coqhammer:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-elpi_hb:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  variables:
    CI_TARGETS: "elpi hb"
    SAVE_BUILD_CI: "1" # for elpi_test and hb_test

plugin:ci-elpi_test:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  stage: build-2

plugin:ci-hb_test:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  stage: build-2

plugin:ci-equations:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  variables:
    SAVE_BUILD_CI: "1" # for equations_test

plugin:ci-equations_test:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-equations
  stage: build-2

plugin:ci-fiat_parsers:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

plugin:ci-lean_importer:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

plugin:ci-ltac2_compiler:
  extends: .ci-template

plugin:ci-metarocq:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-equations
  stage: build-2
  timeout: 1h 30min

plugin:ci-mtac2:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  variables:
    CI_TARGETS: "unicoq mtac2"

plugin:ci-paramcoq:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-perennial:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:plugin-tutorial:
  stage: build-0
  interruptible: true
  extends: .auto-use-tags
  script:
    - ./configure -prefix "$(pwd)/_install_ci"
    - make -j "$NJOBS" plugin-tutorial

plugin:ci-quickchick:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-ext_lib
  - library:ci-simple_io
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  stage: build-3+
  variables:
    SAVE_BUILD_CI: "1" # for quickchick_test

plugin:ci-quickchick_test:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-ext_lib
  - library:ci-simple_io
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - plugin:ci-quickchick
  stage: build-3+

plugin:ci-reduction_effects:
  extends: .ci-template-flambda

plugin:ci-relation_algebra:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - plugin:ci-aac_tactics
  stage: build-3+

plugin:ci-rewriter:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

library:ci-riscv_coq:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  stage: build-2

library:ci-rupicola:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - library:ci-coqutil
  - library:ci-kami
  - library:ci-riscv_coq
  - library:ci-bedrock2
  stage: build-3+

plugin:ci-coq_lsp:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

plugin:ci-vsrocq:
  extends: .ci-template-flambda

plugin:ci-smtcoq:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

plugin:ci-smtcoq_trakt:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-trakt
  stage: build-3+

plugin:ci-stalmarck:
  extends: .ci-template
  needs:
  - build:base
  - library:ci-stdlib

plugin:ci-tactician:
  extends: .ci-template-flambda

plugin:ci-waterproof:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda

doc:ci-refman:
  extends: .ci-template-flambda
  needs:
  - build:edge+flambda
  - library:ci-stdlib+flambda
  - plugin:ci-elpi_hb
  - library:ci-mathcomp
  - library:ci-mczify
  stage: build-3+
  artifacts:
    paths:
      - _build/log
      - _build/default/doc/refman-html
      - _build/default/doc/refman-pdf

pipeline-stats:
  image: $EDGE_IMAGE
  extends: .auto-use-tags
  stage: stats
  dependencies: []
  before_script: []
  script:
  - dev/tools/pipeline-stats.py
  when: always

[ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge