Commit 2706ef9a authored by Paul McCarthy's avatar Paul McCarthy 🚵
Browse files

Merge branch 'paulmc-internal-patch-78967' into 'internal'

MNT: remove gitlab-ci, update readme

See merge request fsl/conda/manifest!10
parents d2c51e10 1224ec09
# CI / CD for the fsl/conda/manifest project
#
# The fsl/conda/manifest project is used to manage
# internal and public FSL releases. The FSL release
# manifest and environment files are generated
# whenever changes are made to this project.
#
# The scripts used to generate and test files files
# are contained in the fsl/conda/manifest-rules
# project. All jobs are executed in an environment
# in which conda is available.
default:
before_script:
- conda create -c conda-forge -p ./env python=3.9
- source activate ./env
- python -m pip install git+https://git.fmrib.ox.ac.uk/fsl/conda/manifest-rules.git
# Don't run pipeline on merge requests
workflow:
rules:
- if: '$CI_COMMIT_TAG != null || $CI_COMMIT_BRANCH != null'
# Manifest and environment files can only be published
# from tags, or from these branches. Attempts to run a
# publish job from a different branch will fail.
# Additionally, the test stages will only perform a
# full test on these branches - a fast test is
# performed on other branches. See these files for more
# details:
#
# - fsl/conda/manifest-rules:manifest_rules/test_environment.py
# - fsl/conda/manifest-rules:manifest_rules/deploy_files.py
variables:
PUBLISH_FROM_BRANCHES: "master internal"
stages:
# Generate FSL conda environment specification
# files for all platforms and CUDA versions
- generate-environment-files
# Do a test installation for all environment
# files, and calculate the number of expected
# output lines so that the fslinstaller
# script can report progress to the user.
- test-environments
# Generate release or development manifest.json
# files
- generate-manifest-files
# Run the fslinstaller.py script against
# the generated manifest files
- test-manifests
# Publish the manifest and/or environment files.
# All jobs in this stage must be manually triggered.
- publish
# Generate FSL conda environment.yml files, for
# all supported platforms and CUDA versions,
# from fsl-release.yml. Refer to the
# manifest_rules//generate_environment_files.py
# script for details.
generate-environment-files:
stage: generate-environment-files
image: continuumio/miniconda3
tags:
- fsl-ci
- docker
script:
- generate_environment_files fsl-release.yml ./environments
artifacts:
expire_in: 2 hrs
paths:
- environments
# Do a test install of all environment files on
# all platforms. Information about the
# installation of each environment file is saved
# to test_install/<environment_file>.install.txt.
# The macos-64 test job is run on a macOS shell
# runner - it is assumed that that conda is
# installed in the environment.
# This is a template. Concrete test jobs (below)
# specify a SUFFIX variable, denoting the
# environment file to test.
.test-environments:
stage: test-environments
dependencies:
- generate-environment-files
# tags and image is overridden by the macOS job
tags:
- fsl-ci
- docker
script:
- mkdir ./test_environments
- test_environment ./fsl-release.yml ./environments/*${SUFFIX}.yml 2>&1 | tee test_environments/${SUFFIX}.install.txt
artifacts:
expire_in: 2 hrs
when: always
paths:
- test_environments
test-environment:macos-64:
extends: .test-environments
tags:
- fsl-ci
- macOS
variables:
SUFFIX: "macos-64"
test-environment:linux-64:
extends: .test-environments
image: fsldevelopment/fsl-linux-64
variables:
SUFFIX: "linux-64"
test-environment:linux-64_cudaX.Y:
extends: .test-environments
image: fsldevelopment/fsl-linux-64
parallel:
matrix:
- CUDA: ["9.2", "10.2", "11.0"]
variables:
SUFFIX: "linux-64_cuda${CUDA}"
# Generate release manifest files. Both release
# and development manifest files are generated
# on every commit, but as the deploy jobs must
# be manually invoked, the user can choose which
# one they want to publish.
.generate-manifest-file:
stage: generate-manifest-files
image: continuumio/miniconda3
tags:
- fsl-ci
- docker
dependencies:
- generate-environment-files
- test-environment:linux-64
- test-environment:macos-64
- test-environment:linux-64_cudaX.Y
script:
- mkdir -p ./manifest
- generate_manifest_file ./fsl-release.yml "$OFFICIAL" ./manifest ./environments ./test_environments
artifacts:
expire_in: 2 hrs
paths:
- manifest
generate-release-manifest-file:
extends: .generate-manifest-file
variables:
OFFICIAL: "true"
generate-development-manifest-file:
extends: .generate-manifest-file
variables:
OFFICIAL: "false"
# Run the latest fslinstaller.py script
# on the generated manifest and environment
# files.
#
# This is a template. Each concrete job
# specifies a variable SUFFIX which denotes
# the environment file to be installed.
.test-manifest:
stage: test-manifests
script:
# there should only be one manifest file, so
# manifest/*.json will resolve to a single
# file. Concrete jobs should define SUFFIX
# so that environments/*${SUFFIX}.yml should
# also resolve to one file.
- test_manifest manifest/*.json environments/*${SUFFIX}.yml
test-release-manifest:linux-64:
stage: test-manifests
extends: .test-manifest
image: fsldevelopment/fsl-linux-64
variables:
SUFFIX: "linux-64"
tags:
- fsl-ci
- docker
dependencies:
- generate-environment-files
- generate-release-manifest-file
test-development-manifest:linux-64:
stage: test-manifests
extends: .test-manifest
image: fsldevelopment/fsl-linux-64
variables:
SUFFIX: "linux-64"
tags:
- fsl-ci
- docker
dependencies:
- generate-environment-files
- generate-development-manifest-file
test-release-manifest:linux-64_cudaX.Y:
stage: test-manifests
extends: .test-manifest
image: fsldevelopment/fsl-linux-64
parallel:
matrix:
- CUDA: ["9.2", "10.2", "11.0"]
variables:
SUFFIX: "linux-64_cuda$CUDA"
tags:
- fsl-ci
- docker
dependencies:
- generate-environment-files
- generate-release-manifest-file
test-development-manifest:linux-64_cudaX.Y:
stage: test-manifests
extends: .test-manifest
image: fsldevelopment/fsl-linux-64
parallel:
matrix:
- CUDA: ["9.2", "10.2", "11.0"]
variables:
SUFFIX: "linux-64_cuda${CUDA}"
tags:
- fsl-ci
- docker
dependencies:
- generate-environment-files
- generate-development-manifest-file
test-release-manifest:macos-64:
stage: test-manifests
extends: .test-manifest
variables:
SUFFIX: "macos-64"
tags:
- fsl-ci
- macOS
dependencies:
- generate-environment-files
- generate-release-manifest-file
test-development-manifest:macos-64:
stage: test-manifests
extends: .test-manifest
variables:
SUFFIX: "macos-64"
tags:
- fsl-ci
- macOS
dependencies:
- generate-environment-files
- generate-development-manifest-file
# Deploy/publish environment and manifest files.
# All deploy jobs must be manually invoked.
# Deployment destination is assumed to be
# available as a mount point at /releases/
.deploy-job-template:
stage: publish
image: continuumio/miniconda3
tags:
- fsl-ci
- fslconda-channel-host
when: manual
deploy-environment-files:
extends: .deploy-job-template
dependencies:
- generate-environment-files
script:
- deploy_files /releases/ ./environments/*.yml
deploy-development-manifest:
extends: .deploy-job-template
dependencies:
- generate-development-manifest-file
script:
- deploy_files /releases/ ./manifest/*.json
deploy-release-manifest:
extends: .deploy-job-template
dependencies:
- generate-release-manifest-file
script:
- deploy_files /releases/ ./manifest/*.json
......@@ -2,10 +2,11 @@
This repository is used to manage FSL releases. The `fsl-release.yml` file
defines the packages that are installed as part of a FSL release. FSL release
`manifest.json` and `environment.yml` files are automatically generated from
information stored in this repository, using scripts in the
fsl/conda/manifest-rules> repository.
defines the packages that are installed as part of a FSL release.
FSL release `manifest.json` and `environment.yml` files are automatically
generated from information stored in this repository, using CI rules and
scripts in the fsl/conda/manifest-rules> repository.
## The `fslinstaller.py` script
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment