Commit 71ec844f authored by Paul McCarthy's avatar Paul McCarthy 🚵
Browse files

DOC: more notes about staging channel

parent 7b5f15a4
......@@ -121,3 +121,23 @@ fsl/fsl-ci-rules> repository.
> recipe provides CPU executables, and the
> [`fsl/conda/fsl-fdt-gpu`](https://git.fmrib.ox.ac.uk/fsl/conda/fsl-fdt-gpu)
> recipe provides GPU/CUDA executables.
## Production and staging channels
FSL projects are published to two separate conda channels:
- The **production** channel contains stable packages for public release.
Every time a new tag is added to a project repository, a conda package is
built and published to the production channel.
- The **staging** channel contains development packages for internal use.
Every time new commits are added to the master branch of a project
repository, a conda package is built and published to the
staging channel.
These channels are currently hosted online at the following URLs, although
their location will potentially change in the future:
- http://3.9.49.129/fslconda/staging/
- http://3.9.49.129/fslconda/production/
......@@ -10,9 +10,9 @@ is described in [`fsl_conda_recipes.md`](fsl_conda_recipes.md).
Normally there should be no need to build FSL conda packages by hand, as
stable and development packages are automatically built using Gitlab
CI. However the need may arise for development, testing, or debugging
purposes, and hence the process is described here.
production/stable and staging/development packages are automatically built
using Gitlab CI. However the need may arise for development, testing, or
debugging purposes, and hence the process is described here.
In order to build a FSL conda package locally, all you need is a (mini)conda
......@@ -86,20 +86,37 @@ very important, and must be:
3. The FSL conda channel has the lowest priority.
> **Note:** The FSL conda channel URL is not yet finalised.
```bash
cd fsl-avwutils
conda build \
-c conda-forge \
-c defaults \
-c http://3.9.49.129/fslconda/production/ \
--output-folder=dist \
.
```
If you need to build against staging/development versions of your
dependencies, add the FSL conda staging channel **before** the production
channel, like so:
```bash
cd fsl-avwutils
conda build \
-c conda-forge \
-c defaults \
-c <fsl-conda-channel-url> \
--output-folder=dist \
conda build \
-c conda-forge \
-c defaults \
-c http://3.9.49.129/fslconda/staging/ \
-c http://3.9.49.129/fslconda/production/ \
--output-folder=dist \
.
```
> **Note:** THe staging and production channel URLs may change in the future.
If the build succeeds, the built package will be saved to the `dist`
directory - binary packages will be saved in either the `osx-64` or `linux-64`
sub-directories, and platform-independent (e.g. python) packages will be saved
......@@ -148,11 +165,11 @@ mkdir my_local_conda_channel
export FSLCONDA_REPOSITORY=$(pwd)/newimage
export FSLCONDA_REVISION=enh/my_local_newimage_development_branch
conda build \
-c conda-forge \
-c defaults \
-c <fsl-conda-channel-url> \
--output-folder=./my_local_conda_channel \
conda build \
-c conda-forge \
-c defaults \
-c http://3.9.49.129/fslconda/production/ \
--output-folder=./my_local_conda_channel \
./fsl-newimage
```
......@@ -167,11 +184,11 @@ channel URL, so that it takes precedence:
export FSLCONDA_REPOSITORY=$(pwd)/randomise
export FSLCONDA_REVISION=enh/my_local_randomimse_development_branch
conda build \
-c conda-forge \
-c defaults \
-c file://$(pwd)/my_local_conda_channel \
-c <fsl-conda-channel-url> \
--output-folder=./my_local_conda_channel \
conda build \
-c conda-forge \
-c defaults \
-c file://$(pwd)/my_local_conda_channel \
-c http://3.9.49.129/fslconda/production/ \
--output-folder=./my_local_conda_channel \
./fsl-randomise
```
......@@ -16,8 +16,9 @@ internal FMRIB conda channel, or on https://anaconda.org, via
Every FSL project comprises two git repositories<sup>1</sup>:
- The **project** repository contains the project source code/resources, and is
typically hosted at `https://git.fmrib.ox.ac.uk/fsl/<project>`<sup>2</sup>.
- The **project** repository contains the project source code/resources, and
is typically hosted at
`https://git.fmrib.ox.ac.uk/fsl/<project>`<sup>2</sup>.
- The **recipe** repository contains a conda recipe for the project, and is
hosted at `https://git.fmrib.ox.ac.uk/fsl/conda/fsl-<project>`<sup>3</sup>.
......@@ -43,7 +44,7 @@ developer wishes to release a new version.
> FSL projects and dependencies are hosted externally, such as
> [MSM](https://github.com/ecr05/MSM_HOCR) and
> [oxford_asl](https://github.com/ibme-qubic/oxford_asl/). The conda recipes
> for these projects are, however, hosted internally in the `fsl/conda/`
> for these projects are, however, all hosted internally in the `fsl/conda/`
> GitLab group.
......@@ -128,7 +129,7 @@ developers follow a similar process for their own projects.
and ready to release at any time.
- All development should occur on a separate branch within the project
repository, or personal fork of the project repository.
- All changes to the `master` branch should take place through Gitlab [merge
- All changes to the `master` branch should take place through GitLab [merge
requests](https://docs.gitlab.com/ee/user/project/merge_requests/) (MRs).
- When a MR is opened, it is reviewed, approved, and merged into the `master`
branch by the project maintainer, possibly after any requested changes to
......@@ -160,15 +161,11 @@ manually updated on an as-needed basis.
## Development (a.k.a. *staging*) releases
FSL projects are released as conda packages, and therefore need to adhere to
conda package versioning conventions, described at
https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/pkg-specs.html#version-ordering.
Conda packages for all FSL projects are published to two conda channels:
- The *production* channel, which contains conda packages built from the most
recently tagged version of each FSL project.
- The *staging* channel, which contains conda packages built from the most
recent state of the `master` branch on the project git repository.
......@@ -177,12 +174,18 @@ The production channel is used for official FSL installations, and for releasing
important changes and bug fixes to end users. The staging channel is used for
internal releases.
Every time a new tag is added to a project repository, a *production* package
is built and uploaded to the production channel. Every time new commits are
added to the master branch of a project repository, a *staging* package is
built and uploaded to the staging channel.
FSL projects are released as conda packages, and therefore must adhere to
conda package versioning conventions, described at
https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/pkg-specs.html#version-ordering.
Packages published to the production channel are versioned as described above
in the **FSL project versioning scheme** section. Packages published to the
staging channel are versioned slightly differently, to ensure a sensible
......
Markdown is supported
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