From a88d8dc64544f2995abc9de055825a217e2d6a6e Mon Sep 17 00:00:00 2001 From: Oliver Sanders Date: Mon, 3 Apr 2023 10:48:12 +0100 Subject: [PATCH] system tests * Partially addresses https://github.com/cylc/cylc-admin/issues/33 * Add a nightly build which installs the Cylc components for each supported Python version. This will help to detect metadata, dependency and branch conflict issues. * Future work can add end-to-end tests which engage all of the system components. --- .github/workflows/system.yml | 75 ++++++++++++++++++++++++++++++++++++ docs/status/branches.json | 3 +- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/system.yml diff --git a/.github/workflows/system.yml b/.github/workflows/system.yml new file mode 100644 index 00000000..889e39ca --- /dev/null +++ b/.github/workflows/system.yml @@ -0,0 +1,75 @@ +# THIS FILE IS PART OF THE CYLC WORKFLOW ENGINE. +# Copyright (C) NIWA & British Crown (Met Office) & Contributors. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +name: System Tests + +on: + workflow_dispatch: + schedule: + - cron: '55 0 * * *' + push: + branches: + - 'master' + paths: + - 'docs/status/branches.json' + - '.github/workflows/system.yml' + + +jobs: + set-meta-releases: + # read the meta-release versions from the branches.json file + runs-on: ubuntu-latest + timeout-minutes: 2 + outputs: + meta-releases: ${{ steps.set-meta-releases.outputs.meta-releases }} + steps: + - name: install libs + id: set-meta-releases + uses: cylc/release-actions/set-meta-releases@v1 + + install: + # test that the components can be pip-installed together + needs: set-meta-releases + runs-on: ubuntu-latest + timeout-minutes: 10 + + strategy: + fail-fast: false + matrix: + os: ['ubuntu-latest'] + python-version: ['3.7', '3.8', '3.9'] + meta_release: ${{ fromJson(needs.set-meta-releases.outputs.meta-releases) }} + + steps: + - name: configure python + uses: actions/setup-python@v4 + + - name: install libs + uses: cylc/release-actions/install-cylc-components@v1 + with: + meta_release: ${{ matrix.meta_release }} + cylc_flow: true + cylc_flow_opts: '' + cylc_uiserver: true + cylc_uiserver_opts: 'hub' + cylc_rose: true + cylc_rose_opts: '' + metomi_rose: true + metomi_rose_opts: '' + + - name: check version + run: cylc version --long diff --git a/docs/status/branches.json b/docs/status/branches.json index 3776b7b0..a7717528 100644 --- a/docs/status/branches.json +++ b/docs/status/branches.json @@ -23,6 +23,7 @@ "metomi/rose": ["test"] }, "nightly_actions": { - "cylc/cylc-doc": ["nightly"] + "cylc/cylc-doc": ["nightly"], + "cylc/cylc-admin": ["system"] } }