prepare-release-version:
extends:
- .variables:default
+ - .rules:nightly-only-for-release
cache: {}
# Docker image uploaded to dockerhub by user eriklindahl
# TODO: Get DockerFile for admin/dockerfiles
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
-
- only:
- refs:
- - merge_requests
- - schedules
- - web
- variables:
- - $GROMACS_RELEASE
script:
- cmake -P cmake/gmxVersionInfo.cmake &> version.json
regressiontests:prepare:
extends:
- .variables:default
+ - .rules:not-for-release
cache: {}
image: biophysics/gcc-gromacs
stage: configure-build
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
- only:
- refs:
- - web
- - pushes
- - merge_requests
- - schedules
- except:
- variables:
- - $GROMACS_RELEASE
# Always clone the default version for this branch, master in this case
script:
- export REGTESTBRANCH=master
regressiontests:package:
extends:
- .variables:default
+ - .rules:nightly-only-for-release
cache: {}
# Docker image uploaded to dockerhub by user eriklindahl
# TODO: Get DockerFile for admin/dockerfiles
needs:
- job: prepare-release-version
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
script:
- VERSION=`cat version.json |
python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
- regressiontests-*.tar.gz
archive:configure:nightly:
+ extends:
+ - .docs:configure
+ - .rules:nightly-not-for-release
stage: nightly-configure
- only:
- - web
- - triggers
- - schedules
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
- extends:
- - .docs:configure
variables:
BUILD_DIR: build-package
CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
archive:configure:release:
- only:
- refs:
- - web
- - triggers
- - schedules
- variables:
- - $GROMACS_RELEASE
extends:
- .docs:configure
+ - .rules:nightly-only-for-release
variables:
BUILD_DIR: build-package
CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
- .docs:build
# Dockerfiles are from dockerhub, user eriklindahl
image: gromacs/ci-docs-clang:master
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
variables:
KUBERNETES_CPU_LIMIT: 4
KUBERNETES_CPU_REQUEST: 2
archive:build:
extends:
- .archive:build
+ - .rules:nightly-not-for-release
stage: nightly-build
needs:
- job: simple-build
artifacts: false
- job: archive:configure:nightly
artifacts: true
- only:
- - web
- - triggers
- - schedules
- except:
- variables:
- - $GROMACS_RELEASE
variables:
BUILD_DIR: build-package
archive:package:
extends:
- .archive:build
+ - .rules:nightly-only-for-release
stage: release-package
needs:
- job: archive:configure:release
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
variables:
BUILD_DIR: build-package
stage: release-verify
extends:
- .variables:default
+ - .rules:nightly-only-for-release
cache: {}
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
-
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
script:
- VERSION=`cat version.json |
python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
archive:nightly-webpage:
extends:
- .webpage:build
+ - .rules:nightly-not-for-release
stage: nightly-deploy
- only:
- - web
- - triggers
- - schedules
- except:
- variables:
- - $GROMACS_RELEASE
needs:
- job: simple-build
artifacts: false
archive:full-release:
extends:
- .webpage:build
+ - .rules:nightly-only-for-release
stage: release-deploy
- only:
- refs:
- - web
- - triggers
- - schedules
- variables:
- - $GROMACS_RELEASE
dependencies:
- webpage:build:release
- archive:package
# Build documentation and web page.
.docs:configure:
- # Built by admin/dockerfiles/ci-docs-clang
- # TODO this should be organized more like the current documentation.py script
- image: gromacs/ci-docs-clang:master
- stage: configure-build
extends:
- .gromacs:base:configure
- .variables:default
- .before_script:default
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
+ # Built by admin/dockerfiles/ci-docs-clang
+ # TODO this should be organized more like the current documentation.py script
+ image: gromacs/ci-docs-clang:master
+ stage: configure-build
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
- $BUILD_DIR
.docs:configure:release:
- # Built by admin/dockerfiles/ci-docs-clang
- # TODO this should be organized more like the current documentation.py script
- image: gromacs/ci-docs-clang:master
- stage: release-configure
extends:
- .gromacs:base:configure
- .variables:default
- .before_script:default
+ - .rules:nightly-only-for-release
+ # Built by admin/dockerfiles/ci-docs-clang
+ # TODO this should be organized more like the current documentation.py script
+ image: gromacs/ci-docs-clang:master
+ stage: release-configure
cache: {}
variables:
KUBERNETES_CPU_LIMIT: 1
RELEASE_BUILD_DIR: release-doc-builds
RELEASE_SOURCE: release-source-from-tarball
RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
-
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
script:
- if [[ $GROMACS_RELEASE == "true" ]] ; then
REL_OPTION="-DGMX_BUILD_TARBALL=ON" ;
docs:configure:
extends:
- .docs:configure
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
variables:
BUILD_DIR: build-docs
CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
- except:
- variables:
- - $GROMACS_RELEASE
.docs:build:
# Built by admin/dockerfiles/ci-docs-clang
# TODO this should be organized more like the current documentation.py script
image: gromacs/ci-docs-clang:master
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
script:
- cd $BUILD_DIR
- cmake --build . --target gmx -- -j8
- .use-ccache
- .docs:build
- .before_script:default
+ - .rules:not-for-release
stage: documentation
needs:
- job: simple-build
artifacts: true
variables:
BUILD_DIR: build-docs
- except:
- variables:
- - $GROMACS_RELEASE
# The manual build is built separately so that errors in converting
# Sphinx to LaTeX and compiling can always be found in the
# Built by admin/dockerfiles/ci-docs-clang
# TODO this should be organized more like the current documentation.py script
image: gromacs/ci-docs-clang:master
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
variables:
KUBERNETES_CPU_LIMIT: 4
KUBERNETES_CPU_REQUEST: 2
webpage:build:
extends:
- .webpage:build
+ - .rules:not-for-release
stage: post-test
needs:
- job: docs:build
artifacts: false
variables:
BUILD_DIR: build-docs
- except:
- variables:
- - $GROMACS_RELEASE
webpage:configure:
extends:
- .docs:configure:release
+ - .rules:nightly-only-for-release
cache: {}
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
- .use-ccache
- .docs:build
- .before_script:default
+ - .rules:nightly-only-for-release
stage: release-build
needs:
- job: webpage:configure
artifacts: true
variables:
BUILD_DIR: release-doc-builds
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
webpage:build:release:
extends:
- .webpage:build
+ - .rules:nightly-only-for-release
dependencies:
- webpage:dependencies
- webpage:configure
stage: release-prepare-deploy
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
variables:
BUILD_DIR: release-doc-builds
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:not-for-release
stage: pre-build
variables:
KUBERNETES_CPU_LIMIT: 8
CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
BUILD_DIR: simple-build
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
- except:
- variables:
- - $GROMACS_RELEASE
script:
- echo $CMAKE_COMPILER_SCRIPT
- echo $CMAKE_EXTRA_OPTIONS
- .variables:default
cache: {}
stage: configure-build
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
RELEASE_BUILD_DIR: release-builds
RELEASE_SOURCE: release-source-from-tarball
RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
script:
- VERSION=`cat version.json |
python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
extends:
- .gromacs:base:configure
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7:release:configure:
extends:
- .gromacs:base:release:configure
- .use-gcc7
+ - .rules:nightly-only-for-release
cache: {}
variables:
RELEASE_BUILD_DIR: release-builds-gcc
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
extends:
- .gromacs:base:configure
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
variables:
CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:configure:
extends:
- .gromacs:base:configure
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
variables:
CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:release:configure:
extends:
- .gromacs:base:release:configure
- .use-gcc7
+ - .rules:nightly-only-for-release
cache: {}
variables:
CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
RELEASE_BUILD_DIR: release-builds-gcc
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
extends:
- .gromacs:base:configure
- .use-gcc8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8:release:configure:
extends:
- .gromacs:base:release:configure
- .use-gcc8
+ - .rules:nightly-only-for-release
cache: {}
variables:
RELEASE_BUILD_DIR: release-builds-gcc
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
- .gromacs:base:configure
- .use-cuda
- .use-gcc8:cuda-10.2
+ - .rules:not-for-release
variables:
CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
# TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
# For version of clang before 7, we need to always provide the full version
# Use something like this instead in the download script:
extends:
- .gromacs:base:configure
- .use-clang6
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
variables:
COMPILER_MAJOR_VERSION: "6.0"
CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:configure:
extends:
- .gromacs:base:configure
- .use-clang7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:release:configure:
extends:
- .gromacs:base:release:configure
- .use-clang7
+ - .rules:nightly-only-for-release
cache: {}
variables:
RELEASE_BUILD_DIR: release-builds-clang
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
extends:
- .gromacs:base:configure
- .use-clang8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-8:release:configure:
extends:
- .gromacs:base:release:configure
- .use-clang8
+ - .rules:nightly-only-for-release
cache: {}
variables:
RELEASE_BUILD_DIR: release-builds-clang
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
dependencies:
- archive:package
- regressiontests:package
# Dockerfiles are from dockerhub, user eriklindahl
# image in admin/dockerimages/ci-docs-py27
stage: build
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
script:
- cd $BUILD_DIR
- cmake --build . -- -j8 2>&1 | tee buildLogFile.log
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-7:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7:release:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:nightly-only-for-release
stage: release-build
variables:
BUILD_DIR: release-builds-gcc
needs:
- job: gromacs:gcc-7:release:configure
artifacts: true
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-simd-sse41:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-7-simd-sse41:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-7-double:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:release:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc7
+ - .rules:nightly-only-for-release
stage: release-build
variables:
BUILD_DIR: release-builds-gcc
needs:
- job: gromacs:gcc-7-double:release:configure
artifacts: true
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-8:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8:release:build:
extends:
- .use-ccache
- .variables:default
- .use-gcc8
+ - .rules:nightly-only-for-release
stage: release-build
variables:
BUILD_DIR: release-builds-gcc
needs:
- job: gromacs:gcc-8:release:configure
artifacts: true
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8-cuda-10.2:build:
extends:
- .variables:default
- .use-cuda
- .use-gcc8:cuda-10.2
+ - .rules:not-for-release
variables:
CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
# TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
artifacts: false
- job: gromacs:gcc-8-cuda-10.2:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-6:build:
extends:
- .use-ccache
- .variables:default
- .use-clang6
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:clang-6:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:build:
extends:
- .use-ccache
- .variables:default
- .use-clang7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:clang-7:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:release:build:
extends:
- .use-ccache
- .variables:default
- .use-clang7
+ - .rules:nightly-only-for-release
stage: release-build
variables:
BUILD_DIR: release-builds-clang
needs:
- job: gromacs:clang-7:release:configure
artifacts: true
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
gromacs:clang-8:build:
extends:
- .use-ccache
- .variables:default
- .use-clang8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:clang-8:configure
artifacts: true
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-8:release:build:
extends:
- .use-ccache
- .variables:default
- .use-clang8
+ - .rules:nightly-only-for-release
stage: release-build
variables:
BUILD_DIR: release-builds-clang
needs:
- job: gromacs:clang-8:release:configure
artifacts: true
- only:
- refs:
- - web
- - schedules
- - triggers
- variables:
- - $GROMACS_RELEASE
-
# Jobs running during test stage
.gromacs:base:test:
+ extends:
+ - .variables:default
variables:
REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
REGRESSIONTEST_OMP_RANK_NUMBER: 2
stage: test
retry:
max: 2
- extends:
- - .variables:default
- only:
- refs:
- - web
- - pushes
- - schedules
- - merge_requests
script:
- cd $BUILD_DIR
- ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
extends:
- .gromacs:base:test
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-7:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7:release:test:
extends:
- .gromacs:base:test
- .use-gcc7
+ - .rules:nightly-only-for-release
stage: release-tests
variables:
BUILD_DIR: release-builds-gcc
artifacts: true
- job: gromacs:gcc-7:release:build
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-simd-sse41:test:
extends:
- .gromacs:base:test
- .use-gcc7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-7-simd-sse41:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:test:
extends:
- .gromacs:base:test
- .use-gcc7
+ - .rules:not-for-release
variables:
REGRESSIONTEST_DOUBLE: "-double"
needs:
artifacts: false
- job: gromacs:gcc-7-double:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-7-double:release:test:
extends:
- .gromacs:base:test
- .use-gcc7
+ - .rules:nightly-only-for-release
stage: release-tests
variables:
BUILD_DIR: release-builds-gcc
artifacts: true
- job: gromacs:gcc-7-double:release:build
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8:test:
extends:
- .gromacs:base:test
- .use-gcc8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-8:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8:release:test:
extends:
- .gromacs:base:test
- .use-gcc8
+ - .rules:nightly-only-for-release
stage: release-tests
variables:
BUILD_DIR: release-builds-gcc
artifacts: true
- job: gromacs:gcc-8:release:build
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
gromacs:gcc-8-cuda-10.2:test:
+ extends:
+ - .gromacs:base:test
+ - .use-cuda
+ - .use-gcc8:cuda-10.2
+ - .rules:not-for-release
variables:
KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
REGRESSIONTEST_OMP_RANK_NUMBER: 1
CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
# TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
- extends:
- - .gromacs:base:test
- - .use-cuda
- - .use-gcc8:cuda-10.2
needs:
- job: simple-build
artifacts: false
- job: gromacs:gcc-8-cuda-10.2:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-6:test:
extends:
- .gromacs:base:test
- .use-clang6
+ - .rules:not-for-release
variables:
REGRESSIONTEST_OMP_RANK_NUMBER: 0
needs:
artifacts: false
- job: gromacs:clang-6:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:test:
extends:
- .gromacs:base:test
- .use-clang7
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:clang-7:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-7:release:test:
extends:
- .gromacs:base:test
- .use-clang7
+ - .rules:nightly-only-for-release
stage: release-tests
variables:
BUILD_DIR: release-builds-clang
artifacts: true
- job: gromacs:clang-7:release:build
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
gromacs:clang-8:test:
extends:
- .gromacs:base:test
- .use-clang8
+ - .rules:not-for-release
needs:
- job: simple-build
artifacts: false
- job: gromacs:clang-8:build
- job: regressiontests:prepare
- except:
- variables:
- - $GROMACS_RELEASE
gromacs:clang-8:release:test:
extends:
- .gromacs:base:test
- .use-clang8
+ - .rules:nightly-only-for-release
stage: release-tests
variables:
BUILD_DIR: release-builds-clang
artifacts: true
- job: gromacs:clang-8:release:build
artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
directly, *extend* a *.use_<toolchain>* template from
:file:`admin/gitlab-ci/global.gitlab-ci.yml`
+ rules
+ only
+ except
+ when
+ *Job* parameters for controlling the circumstances under which jobs run.
+ (Some key words may have different meanings when occurring as elements
+ of other parameters, such as *archive:when*, to which this note is not
+ intended to apply.)
+ Instead of setting any of these directly in a job definition, try to use
+ one of the pre-defined behaviors (defined as ``.rules:<something>`` in
+ :file:`admin/gitlab-ci/global.gitlab-ci.yml`).
+ Errors or unexpected behavior will occur if you specify more than one
+ *.rules:...* template, or if you use these parameters in combination
+ with a *.rules...* template.
+ To reduce errors and unexpected behavior, restrict usage of these controls
+ to regular job definitions (don't use in "hidden" or parent jobs).
+
variables
Many job definitions will add or override keys in *variables*.
Refer to `GitLab <https://docs.gitlab.com/ee/ci/yaml/#variables>`__
for details of the merging behavior. Refer to :ref:`variables` for local usage.
+Schedules and triggers
+~~~~~~~~~~~~~~~~~~~~~~
+
+Pipeline `schedules <https://gitlab.com/help/ci/pipelines/schedules>`__ are
+configured through the GitLab web interface.
+Scheduled pipelines may provide different variable definitions through the
+environment to jobs that run under the ``schedules``
+`condition <https://gitlab.com/help/ci/pipelines/schedules#using-only-and-except>`__.
+
+Nightly scheduled pipelines run against ``master`` and *release* branches in
+the GROMACS repository.
+
+Pending resolution of :issue:`3272`,
+the repository hosted on Gerrit is mirrored to GitLab.
+Mirror updates trigger pipeline builds.
+
Global templates
~~~~~~~~~~~~~~~~
CMAKE_MPI_OPTIONS
Provide CMake command line arguments to define GROMACS MPI build options.
+ GROMACS_RELEASE
+ Read-only environment variable that can be checked to see if a job is
+ executing in a pipeline for preparing a tagged release.
+ Can be set when launching pipelines via the GitLab web interface.
+ For example, see *rules* mix-ins in :file:`admin/gitlab-ci/global.gitlab-ci.yml`.
+
EXTRA_INSTALLS
List additional OS package requirements. Used in *before_script* for some
mix-in job definitions to install additional software dependencies. If