From 7616643598dd78cc684aaa042b0c3e3d1b2aa182 Mon Sep 17 00:00:00 2001 From: umarcor Date: Mon, 29 Nov 2021 03:16:06 +0100 Subject: [PATCH] generate matrix of jobs in workflow Params, instead of UnitTesting --- .github/workflows/Params.yml | 29 ++++++++++++++++++++++++++- .github/workflows/UnitTesting.yml | 33 +++---------------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/Params.yml b/.github/workflows/Params.yml index a87c387..cd68544 100644 --- a/.github/workflows/Params.yml +++ b/.github/workflows/Params.yml @@ -8,6 +8,11 @@ on: required: false default: '3.10' type: string + python_version_list: + description: 'Space separated list of Python versions to run tests with.' + required: false + default: '3.6 3.7 3.8 3.9 3.10' + type: string name: description: 'Name of the tool.' required: true @@ -16,6 +21,9 @@ on: params: description: "Parameters to be used in other jobs." value: ${{ jobs.Params.outputs.params }} + python_jobs: + description: "List of Python versions to be used in the matrix of other jobs." + value: ${{ jobs.Params.outputs.python_jobs }} jobs: @@ -23,9 +31,11 @@ jobs: runs-on: ubuntu-latest outputs: params: ${{ steps.params.outputs.params }} + python_jobs: ${{ steps.params.outputs.python_jobs }} steps: - - id: params + - name: Generate 'params' and 'python_jobs' + id: params shell: python run: | name = '${{ inputs.name }}' @@ -40,3 +50,20 @@ jobs: } } print(f'::set-output name=params::{params!s}') + print("Params:") + print(params) + + data = { + '3.6': { 'icon': '🔴', 'until': '23.12.2021' }, + '3.7': { 'icon': '🟠', 'until': '27.06.2023' }, + '3.8': { 'icon': '🟡', 'until': 'Oct. 2024' }, + '3.9': { 'icon': '🟢', 'until': 'Oct. 2025' }, + '3.10': { 'icon': '🟢', 'until': 'Oct. 2026' }, + } + jobs = [ + {'python': version, 'icon': data[version]['icon']} + for version in '${{ inputs.python_version_list }}'.split(' ') + ] + print(f'::set-output name=python_jobs::{jobs!s}') + print("Python jobs:") + print(jobs) diff --git a/.github/workflows/UnitTesting.yml b/.github/workflows/UnitTesting.yml index cf7bdba..45a83b0 100644 --- a/.github/workflows/UnitTesting.yml +++ b/.github/workflows/UnitTesting.yml @@ -3,10 +3,9 @@ name: Unit Testing on: workflow_call: inputs: - python_versions: + jobs: description: 'Space separated list of Python versions to run tests with.' - required: false - default: '3.6 3.7 3.8 3.9 3.10' + required: true type: string requirements: description: 'Python dependencies to be installed through pip.' @@ -21,40 +20,14 @@ on: jobs: - - Versions: - runs-on: ubuntu-latest - outputs: - jobs: ${{ steps.versions.outputs.jobs }} - steps: - - - id: versions - shell: python - run: | - icons = { - '3.6': '🔴', # until 23.12.2021 - '3.7': '🟠', # until 27.06.2023 - '3.8': '🟡', # until Oct. 2024 - '3.9': '🟢', # until Oct. 2025 - '3.10': '🟢', # until Oct. 2026 - } - jobs = [ - {'python': version, 'icon': icons[version]} - for version in '${{ inputs.python_versions }}'.split(' ') - ] - print(f'::set-output name=jobs::{jobs!s}') - - UnitTesting: name: ${{ matrix.icon }} Unit Tests using Python ${{ matrix.python }} runs-on: ubuntu-latest - needs: - - Versions strategy: fail-fast: false matrix: - include: ${{ fromJson(needs.Versions.outputs.jobs) }} + include: ${{ fromJson(inputs.jobs) }} steps: - name: ⏬ Checkout repository