Skip to content
This repository has been archived by the owner on Mar 29, 2021. It is now read-only.

Latest commit

 

History

History
144 lines (110 loc) · 3.89 KB

README.md

File metadata and controls

144 lines (110 loc) · 3.89 KB

Cylc 8 Conda Installation Instructions

Conda recipe to install the cylc-8.0a1 alpha-1 preview release of Cylc 8.

You do not need to download the code in this repository, just follow these instructions.

The recipe includes:

  • Python 3.7
  • cylc-flow-8.0a1 - Python 3 Workflow Service and CLI
  • cylc-uiserver-0.1 - Python 3 UI Server component of the Cylc 8 architecture
  • cylc-ui-0.1 - Vue.js web UI
  • JupyterHub - authenticates users and launches their Cylc UI Servers
  • configurable-http-proxy - node.js proxy
  • (and all software dependencies of the above)

Current Limitations

Cylc-8.0a1 is an early full-system Cylc 8 preview release

  • It has a fully functional Python 3 workflow service and CLI that can run existing Cylc workflows

BUT:

  • It is not production-ready yet
    • Use the latest cylc-7.8 release in production
  • Do not use it where security is a concern
  • The UI includes a prototype "tree view" with no control capability
    • we are working on other views, and controls
  • Data update in the UI is via polling at 5 second intervals, and monolithic
    • future releases will use WebSockets and incremental update

Instructions

Installation

Enable the kinow Conda channel in your .condarc file (pending package availability on conda-forge):

channels:
  - defaults
  - conda-forge
  - kinow
ssl_verify: true
auto_activate_base: false
anaconda_upload: false

Create a new Conda environment, e.g. cylc1.

  • conda create -n cylc1
  • conda activate cylc1

Install Cylc

  • conda install cylc

You should now be able to run Cylc commands, e.g.:

  • cylc --version
  • cylc run --no-detach my.suite
  • cylc-uiserver --help

Usage

Start the Hub (JupyterHub gets installed with the "cylc" package):

mkdir -p "${HOME}/srv/cylc/"  # the hub will store session information here
cd "${HOME}/srv/cylc/"
jupyterhub \
    --JupyterHub.spawner_class="jupyterhub.spawner.LocalProcessSpawner" \
    --JupyterHub.logo_file="${CONDA_PREFIX}/work/cylc-ui/img/logo.svg" \
    --Spawner.args="['-s', '${CONDA_PREFIX}/work/cylc-ui']" \
    --Spawner.cmd="cylc-uiserver"

Voilà 🎉. Go to http://localhost:8000, log in to the Hub with your local user credentials, and enjoy Cylc 8 Alpha-1!

  • Start a workflow with the CLI (a good example is shown below
  • Log in at the Hub to authenticate and launch your UI Server

Hub Image

  • Note that much of the UI Dashboard is not functional yet. The functional links are:
    • Cylc Hub
    • Suite Design Guide (web link)
    • Documentation (web link)

Dashboard Image

  • In the left side-bar, click on Workflows to view your running workflows
  • In the workflows view, click on icons under "Actions" to view the corresponding workflow.

Workflows Image

  • In the tree view:
    • click on task names to see the list of task jobs
    • click on job icons to see the detail of a specific job

Workflows Image

To deactivate and/or remove the conda environment:

  • conda deactivate
  • conda env remove -n cylc1

An Example Workflow to View

The following workflow generates a bunch of tasks that initially fail before succeeding after a random number of retries (this shows the new "Cylc 8 task/job separation" nicely):

[cylc]
   cycle point format = %Y
   [[parameters]]
      m = 0..5
      n = 0..2
[scheduling]
   initial cycle point = 3000
   [[graph]]
      P1Y = "foo[-P1Y] => foo => bar<m> => qux<m,n> => waz"
[runtime]
   [[root]]
      script = """
         sleep 20
         # fail 50% of the time if try number is less than 5
         if (( CYLC_TASK_TRY_NUMBER < 5 )); then
           if (( RANDOM % 2 < 1 )); then
              exit 1
           fi
         fi"""
      [[[job]]]
         execution retry delays = 6*PT2S