Skip to content

Commit eb7691b

Browse files
Merge pull request #555 from MetRonnie/8.0.x-deconflict
8.0.x to master
2 parents 5a5aaa1 + 50d7ddc commit eb7691b

33 files changed

+428
-393
lines changed
Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Install dependencies
2-
description: apt-get dependencies
2+
description: Install dependencies and setup + activate conda env
33

44
runs:
55
using: composite
@@ -9,17 +9,30 @@ runs:
99
echo "[command]sudo apt-get update"
1010
sudo apt-get update
1111
12+
# Explanation of these dependencies:
13+
# - https://github.com/ImageMagick/ImageMagick/issues/374#issuecomment-279252866
14+
# - aspell-en for spellchecking
1215
- shell: bash
1316
run: |
1417
echo "[command]sudo apt-get install -y ..."
1518
sudo apt-get install -y \
1619
librsvg2-bin \
1720
ghostscript \
18-
graphviz \
1921
pkg-config \
2022
libgraphviz-dev \
2123
gsfonts \
2224
libfreetype6-dev \
23-
libfontconfig1-dev
24-
# Explanation of some of these dependencies:
25-
# https://github.com/ImageMagick/ImageMagick/issues/374#issuecomment-279252866
25+
libfontconfig1-dev \
26+
aspell-en
27+
28+
- uses: conda-incubator/setup-miniconda@35d1405e78aa3f784fe3ce9a2eb378d5eeb62169 # v2.1.1
29+
with:
30+
channels: conda-forge
31+
python-version: ${{ matrix.python-version || '' }}
32+
miniforge-version: latest
33+
34+
# use login shell for conda activation
35+
- shell: bash -leo pipefail {0}
36+
run: |
37+
echo "CONDA_PREFIX: ${CONDA_PREFIX}"
38+
conda install -y graphviz

.github/workflows/deploy.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ concurrency:
5757

5858
jobs:
5959
deploy:
60-
runs-on: ubuntu-18.04
60+
runs-on: ubuntu-latest
6161
timeout-minutes: 20
62+
defaults:
63+
run:
64+
# use login shell for conda activation
65+
shell: bash -leo pipefail {0}
6266
steps:
6367
- name: configure python
6468
uses: actions/setup-python@v4
@@ -120,7 +124,8 @@ jobs:
120124
html \
121125
slides \
122126
linkcheck \
123-
SPHINXOPTS='-Wn' \
127+
SPHINXOPTS='-Wn --keep-going' \
128+
FORCE_COLOR=true \
124129
STABLE=${{ inputs.set_stable }} \
125130
LATEST=${{ inputs.set_latest }}
126131

.github/workflows/nightly.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ concurrency:
3131

3232
jobs:
3333
deploy:
34-
runs-on: ubuntu-18.04
34+
runs-on: ubuntu-latest
3535
timeout-minutes: 10
36+
defaults:
37+
run:
38+
# use login shell for conda activation
39+
shell: bash -leo pipefail {0}
3640
steps:
3741
- name: configure python
3842
uses: actions/setup-python@v4
@@ -105,10 +109,11 @@ jobs:
105109
html \
106110
slides \
107111
linkcheck \
108-
SPHINXOPTS="-Wn -A sidebar_version_name=${version}" \
112+
SPHINXOPTS="-Wn --keep-going -A sidebar_version_name=${version}" \
109113
STABLE=false \
110114
LATEST=false \
111-
BUILDDIR='doc/nightly'
115+
BUILDDIR='doc/nightly' \
116+
FORCE_COLOR=true
112117
git -C gh-pages add 'nightly' 'versions.json'
113118
114119
- name: push changes

.github/workflows/test.yml

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ concurrency:
2525

2626
jobs:
2727
test:
28-
runs-on: ubuntu-18.04
28+
runs-on: ubuntu-latest
2929
timeout-minutes: 10
30+
defaults:
31+
run:
32+
# use login shell for conda activation
33+
shell: bash -leo pipefail {0}
3034
steps:
3135
- name: configure python
3236
uses: actions/setup-python@v4
@@ -47,7 +51,18 @@ jobs:
4751
- name: install cylc-doc
4852
run: pip install .[all]
4953

50-
- name: install libs to document
54+
- name: install libs to document (8.0.x)
55+
if: github.base_ref == '8.0.x'
56+
uses: ./.github/actions/install-libs
57+
with:
58+
# NOTE: these need to be manually updated as necessary:
59+
cylc-flow-tag: '8.0.x'
60+
cylc-rose-tag: '1.1.x'
61+
cylc-uis-tag: '1.1.x'
62+
metomi-rose-tag: '2.0.x'
63+
64+
- name: install libs to document (other branches)
65+
if: github.base_ref != '8.0.x'
5166
uses: ./.github/actions/install-libs
5267

5368
- name: install eslint
@@ -59,11 +74,21 @@ jobs:
5974
flake8
6075
eslint .
6176
62-
- name: build
77+
- name: (debug only) list language dictionaries
78+
if: runner.debug
79+
shell: python
80+
env:
81+
PYENCHANT_VERBOSE_FIND: true
82+
run: |
83+
import enchant
84+
print(enchant.list_dicts())
85+
86+
- name: build & test
6387
run: |
64-
make html slides spelling linkcheck doctest SPHINXOPTS='-Wn'
88+
make html slides spelling linkcheck doctest \
89+
SPHINXOPTS='-Wn --keep-going' FORCE_COLOR=true
6590
66-
- name: debug
91+
- name: debug sphinx failure
6792
if: failure()
6893
run: |
6994
cat /tmp/sphinx-err* || true # sphinx traceback

.github/workflows/undeploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ on:
2525
workflow_dispatch:
2626
inputs:
2727
tag:
28-
description: 'Tag present on both cylc-flow and cylc-docs.'
28+
description: 'Tag present on both cylc-flow and cylc-doc'
2929
required: true
3030

3131
concurrency:
3232
group: ${{ github.workflow }}-${{ github.ref }}
3333

3434
jobs:
3535
undeploy:
36-
runs-on: ubuntu-18.04
36+
runs-on: ubuntu-latest
3737
timeout-minutes: 10
3838
env:
3939
TAG: ${{ inputs.tag }}

src/7-to-8/caveats.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Multiple Selection
5858
* https://github.com/cylc/cylc-ui/issues/434
5959
Installing Workflows
6060
At present there is no way to view or install
61-
:term:`source workflows <source directory>`) in the UI.
61+
:term:`source workflows <source directory>` in the UI.
6262
Rose Edit
6363
Rose Edit is awaiting reimplementation in the UI.
6464
Trigger Edit

src/7-to-8/major-changes/cylc-install.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Remote Installation
8989

9090
Remote file installation does not occur until running the workflow.
9191
When the first task runs on a remote platform, Cylc will transfer files from
92-
the :term:`run directory` to the install target.
92+
the :term:`run directory` to the :term:`install target`.
9393

9494
If you have used Rose 2019, you may be used to all files and directories in
9595
the run directory being included.

src/7-to-8/major-changes/platforms.rst

Lines changed: 40 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,11 @@ Platforms
66
.. admonition:: Does This Change Affect Me?
77
:class: tip
88

9-
.. cylc-scope:: flow.cylc
9+
Cylc platforms are a new feature which replace the task ``job`` and
10+
``remote`` configuration sections:
1011

11-
Platforms replace the deprecated :cylc:conf:`[runtime][<namespace>][job]`
12-
and :cylc:conf:`[runtime][<namespace>][remote]`
13-
sections:
14-
15-
.. code-block:: cylc
16-
17-
[runtime]
18-
[[foo]]
19-
[[[job]]]
20-
batch system = slurm
21-
[[[remote]]]
22-
host = my_supercomputer
23-
24-
.. cylc-scope::
25-
26-
Read this section if your workflow's jobs run on a remote computer or if
27-
you see the following warning on running ``cylc validate``:
28-
29-
.. code-block:: console
30-
31-
WARNING - deprecated settings found (please replace with [runtime][foo]platform):
32-
[runtime][foo][remote]host
33-
[runtime][foo][job]batch system
34-
35-
If you currently use the ``rose host-select`` utility or a similar host
36-
selection or load balancing utility the intelligent host selection
37-
functionality of Cylc 8 may be used instead:
38-
39-
.. code-block:: cylc
40-
41-
[runtime]
42-
[[task1]]
43-
[[[remote]]]
44-
host = $(rose host-select my-computer)
45-
[[task2]]
46-
# An example of a home-rolled host selector
47-
[[[remote]]]
48-
host = $(test $((RANDOM%2)) -eq 0 && echo "host_a" || echo "host_b")
12+
* :cylc:conf:`[runtime][<namespace>][job]`
13+
* :cylc:conf:`[runtime][<namespace>][remote]`
4914

5015

5116
Overview
@@ -57,23 +22,18 @@ Overview
5722
- The terms :term:`job runner` (in Cylc 8 configurations) and batch system
5823
(in Cylc 7 configurations) are equivalent.
5924

60-
Cylc 7 defines settings for remote :term:`jobs <job>` in each
61-
:term:`task's <task>` definition.
25+
Submitting a job to a :term:`job runner` may require configuration.
6226

63-
Cylc 8 allows site administrators (and users) to configure
64-
:term:`platforms <platform>` in ``global.cylc``. A platform can have
65-
multiple hosts with associated platform-specific settings. Users only need to
66-
select the platform for their task jobs.
27+
In Cylc 7 this configuration must be provided for each task in the workflow
28+
configuration (``suite.rc``).
6729

68-
Platforms also define how hosts are selected from each platform:
69-
70-
- Randomly (default)
71-
- By definition order
30+
In Cylc 8 "platforms" can be defined in the global configuration
31+
(:cylc:conf:`global.cylc`) so that this configuration doesn't have to be
32+
repeated for each task in each workflow.
7233

7334
There may be cases where sets of platforms (for example a group of
7435
standalone compute servers, or a pair of mirrored HPC's) might be equally
75-
suitable for a task, but not share files systems to allow them to constitute
76-
a single platform. Such platforms can be set up to be ``platform groups``
36+
suitable for a task. Such platforms can be set up to be ``platform groups``
7737

7838
.. seealso::
7939

@@ -92,6 +52,20 @@ a single platform. Such platforms can be set up to be ``platform groups``
9252
Deprecated settings will be removed in a later release of Cylc.
9353

9454

55+
What is a Platform?
56+
-------------------
57+
58+
A "platform" represents one or more hosts from which jobs can be submitted to or
59+
polled from a common job submission system.
60+
61+
If a platform has multiple hosts Cylc will automatically select a host when
62+
needed and will fallback to other hosts if it is not contactable.
63+
64+
A "platform group" represents a collection of independent platforms. Cylc will
65+
automatically select a platform and will fallback to other platforms in the
66+
group (for appropriate operations) if the platform is not contactable.
67+
68+
9569
Examples
9670
--------
9771

@@ -194,7 +168,7 @@ At Cylc 8 the equivalent might be:
194168
195169
[[mytask_login_to_hpc_and_submit]]
196170
# Recommended:
197-
platform = just_run_it
171+
platform = slurm_supercomputer
198172
# ...but This is still legal:
199173
#platform = $(selector-script)
200174
@@ -210,13 +184,25 @@ And the platform settings for these examples might be:
210184
# A computer with PBS, that takes local job submissions
211185
job runner = pbs
212186
hosts = localhost
187+
install target = localhost
213188
214189
[[slurm_supercomputer]]
215190
# This computer with Slurm requires you to use a login node.
216191
hosts = login_node01, login_node02 # Cylc will pick a host.
217192
job runner = slurm
218193
219194
195+
Note that in these examples, it is assumed that ``linuxboxNN``, ``pbs_local`` and
196+
``slurm_supercomputer`` have distinct file systems.
197+
Sets of platforms which share a file system must specify
198+
a single :ref:`install target <Install Targets>`.
199+
200+
.. note::
201+
If an install target is not set, a platform will use its own platform name
202+
as the install target name. If multiple platforms share a file system
203+
but have separate :ref:`install targets <Install Targets>` task initialization
204+
will fail.
205+
220206
.. _host-to-platform-logic:
221207

222208
How Cylc 8 handles host-to-platform upgrades
@@ -243,6 +229,7 @@ platforms section:
243229
[[supercomputer_A]]
244230
hosts = localhost
245231
job runner = slurm
232+
install target = localhost
246233
[[supercomputer_B]]
247234
hosts = tigger, wol, eeyore
248235
job runner = pbs
@@ -257,7 +244,7 @@ And you have a workflow runtime configuration:
257244
batch system = slurm
258245
[[task2]]
259246
[[[remote]]]
260-
hosts = eeyore
247+
host = eeyore
261248
[[[job]]]
262249
batch system = pbs
263250

src/7-to-8/major-changes/task-job-states.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ the submission stage, real job scripts). A task can have multiple jobs, by
1414
automatic retries and manual re-triggering.
1515

1616
Cylc 7 had 13 task/job states. The GUI only showed tasks, with job data
17-
from the latest task job.
17+
from the latest job.
1818

1919
Cylc 8 has only 8 task/job states. The Cylc 8 UI shows both task and jobs.
2020
Task icons are monochrome circles; job icons are coloured squares. The running
2121
task icon incorporates a radial progress indicator.
2222

2323
.. image:: ../../img/task-job.png
24-
:align: center
24+
:align: center

src/7-to-8/summary.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Task/Job States
9797

9898
:term:`Tasks <task>` are nodes in the abstract workflow graph, representing
9999
applications to run at the appropriate point in the workflow. A :term:`job <job>`
100-
(or a *task job*) is the script (and subsequent process) submitted by Cylc to
100+
is the script (and subsequent process) submitted by Cylc to
101101
actually run the application. A task can have multiple jobs as the result of
102102
automatic retries or manual re-triggering.
103103

@@ -146,7 +146,7 @@ Cylc 8 is aware of sets of host settings called
146146

147147
Hosts of a platform must share a file system and :term:`job runner`:
148148
If one host is unavailable Cylc 8 can use other hosts
149-
on the same platform to interact with task jobs.
149+
on the same platform to interact with jobs.
150150

151151
The same hosts can belong to multiple platforms, for example
152152
you might be able to use the same host to launch both background and Slurm
@@ -250,7 +250,7 @@ Queues
250250
Time Zones
251251
:cylc:conf:`[scheduler]cycle point time zone` now defaults to UTC, unless you
252252
are working in :ref:`cylc_7_compat_mode`.
253-
Task Job Scripts
253+
Job Scripts
254254
All user-defined task scripting now runs in a subshell, so you can safely
255255
switch Python environments inside tasks without affecting Cylc.
256256
Further information is available in the User Guide: :ref:`JobScripts`.

0 commit comments

Comments
 (0)