CI

# Do not edit these workflows directly as the changes made will be overwritten.
# Instead, edit the template '.github/workflows/templates/ci.yml.jinja'
---
name: CI
run-name: "CI (${{ github.event_name == 'pull_request' && format('pr: #{0}', github.event.number) || format('{0}: {1}', startsWith(github.event.ref, 'refs/tags') && 'tag' || 'branch', github.ref_name) }})"

on:
  push: {}
  pull_request:
    types:
      - labeled
      - unlabeled
      - opened
      - reopened
      - synchronize

env:
  COLUMNS: 190
  CACHE_SEED: SEED-2  # Bump the number to invalidate all caches
  RELENV_DATA: "${{ github.workspace }}/.relenv"
  PIP_DISABLE_PIP_VERSION_CHECK: "1"
  RAISE_DEPRECATIONS_RUNTIME_ERRORS: "1"

permissions:
  contents: read  # for dorny/paths-filter to fetch a list of changed files
  pull-requests: read  # for dorny/paths-filter to read pull requests
  actions: read  # for technote-space/workflow-conclusion-action to get the job statuses

concurrency:
  # Concurrency is defined in a way that concurrent builds against branches do
  # not cancel previous builds.
  # However, for every new build against the same pull request source branch,
  # all older builds against that same branch get canceled.
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:

  prepare-workflow:
    name: Prepare Workflow Run
    runs-on: ubuntu-latest
    outputs:
      jobs: ${{ steps.define-jobs.outputs.jobs }}
      runners: ${{ steps.runner-types.outputs.runners }}
      changed-files: ${{ steps.process-changed-files.outputs.changed-files }}
      os-labels: ${{ steps.get-pull-labels.outputs.os-labels }}
      pull-labels: ${{ steps.get-pull-labels.outputs.test-labels }}
      testrun: ${{ steps.define-testrun.outputs.testrun }}
      salt-version: ${{ steps.setup-salt-version.outputs.salt-version }}
      cache-seed: ${{ steps.set-cache-seed.outputs.cache-seed }}
      latest-release: ${{ steps.get-salt-releases.outputs.latest-release }}
      releases: ${{ steps.get-salt-releases.outputs.releases }}
      release-changelog-target: ${{ steps.get-release-changelog-target.outputs.release-changelog-target }}
      testing-releases: ${{ steps.get-testing-releases.outputs.testing-releases }}
      nox-archive-hash: ${{ steps.nox-archive-hash.outputs.nox-archive-hash }}
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Full clone to also get the tags to get the right salt version

      - name: Get Changed Files
        if: ${{ github.event_name == 'pull_request'}}
        id: changed-files
        uses: dorny/paths-filter@v3
        with:
          token: ${{ github.token }}
          list-files: json
          filters: |
            repo:
              - added|modified:
                - '**'
            doc-requirements:
              - added|modified: &doc_requirements
                - requirements/static/ci/py3.*/docs.txt
            lint-requirements:
              - added|modified: &lint_requirements
                - requirements/static/ci/py3.*/lint.txt
            pkg_requirements:
              - added|modified: &pkg_requirements
                - requirements/static/pkg/py3.*/darwin.txt
                - requirements/static/pkg/py3.*/linux.txt
                - requirements/static/pkg/py3.*/freebsd.txt
                - requirements/static/pkg/py3.*/windows.txt
            test_requirements:
              - added|modified: &test_requirements
                - requirements/static/ci/py3.*/darwin.txt
                - requirements/static/ci/py3.*/linux.txt
                - requirements/static/ci/py3.*/freebsd.txt
                - requirements/static/ci/py3.*/windows.txt
                - requirements/static/ci/py3.*/darwin-crypto.txt
                - requirements/static/ci/py3.*/linux-crypto.txt
                - requirements/static/ci/py3.*/freebsd-crypto.txt
                - requirements/static/ci/py3.*/windows-crypto.txt
            deleted:
              - deleted:
                - '**'
            docs:
              - added|modified:
                - doc/**
                - .github/workflows/build-docs.yml
                - *doc_requirements
            workflows:
              - added|modified:
                - cicd/shared-gh-workflows-context.yml
                - .github/actions/**/action.yml
                - .github/workflows/*.yml
                - .github/workflows/templates/*.yml.jinja2
                - tools/precommit/workflows.py
            salt:
              - added|modified: &salt_added_modified
                - setup.py
                - noxfile.py
                - salt/**/*.py
                - tasks/**/*.py
                - tools/**/*.py
            tests:
              - added|modified: &tests_added_modified
                - tests/**/*.py
            lint:
              - added|modified:
                - .pylintrc
                - *lint_requirements
            golden_images:
              - added|modified:
                - cicd/golden-images.json
            pkg_tests:
              - added|modified: &pkg_tests_added_modified
                - pkg/**
                - *pkg_requirements
                - *salt_added_modified
            testrun:
              - added|modified:
                - *pkg_requirements
                - *test_requirements
                - *salt_added_modified
                - *tests_added_modified
                - *pkg_tests_added_modified

      - name: Set up Python 3.10
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Setup Python Tools Scripts
        uses: ./.github/actions/setup-python-tools-scripts
        with:
          cache-prefix: ${{ env.CACHE_SEED }}

      - name: Pretty Print The GH Actions Event
        run:
          tools ci print-gh-event

      - name: Set Cache Seed Output
        id: set-cache-seed
        run: |
          tools ci define-cache-seed ${{ env.CACHE_SEED }}

      - name: Setup Salt Version
        id: setup-salt-version
        uses: ./.github/actions/setup-salt-version
        with:
          salt-version: ""
          validate-version: true

      - name: Get Pull Request Test Labels
        id: get-pull-labels
        if: ${{ github.event_name == 'pull_request'}}
        env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          tools ci get-pr-test-labels --repository ${{ github.repository }}

      - name: Get Hash For Nox Tarball Cache
        id: nox-archive-hash
        run: |
          echo "nox-archive-hash=${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py', 'pkg/common/env-cleanup-rules.yml', '.github/workflows/build-deps-ci-action.yml') }}" | tee -a "$GITHUB_OUTPUT"

      - name: Write Changed Files To A Local File
        run:
          echo '${{ toJSON(steps.changed-files.outputs) }}' > changed-files.json

      - name: Check Local Changed Files Contents
        if: ${{ github.event_name == 'pull_request' }}
        run:
          cat changed-files.json

      - name: Process Changed Files
        id: process-changed-files
        run: |
          tools ci process-changed-files ${{ github.event_name }} changed-files.json

      - name: Check Collected Changed Files
        if: ${{ github.event_name == 'pull_request' }}
        run: |
          echo '${{ steps.process-changed-files.outputs.changed-files }}' | jq -C '.'

      - name: Define Runner Types
        id: runner-types
        run: |
          tools ci runner-types ${{ github.event_name }}

      - name: Define Jobs To Run
        id: define-jobs
        run: |
          tools ci define-jobs ${{ github.event_name }} changed-files.json

      - name: Get Salt Releases
        id: get-salt-releases
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          tools ci get-releases

      - name: Get Latest Salt Releases for Testing
        id: get-testing-releases
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          tools ci get-testing-releases ${{ join(fromJSON(steps.get-salt-releases.outputs.releases), ' ') }} --salt-version ${{ steps.setup-salt-version.outputs.salt-version }}

      - name: Define Testrun
        id: define-testrun
        run: |
          tools ci define-testrun ${{ github.event_name }} changed-files.json

      - name: Check Contents of generated testrun-changed-files.txt
        if: ${{ fromJSON(steps.define-testrun.outputs.testrun)['type'] != 'full' }}
        run: |
          cat testrun-changed-files.txt || true

      - name: Upload testrun-changed-files.txt
        if: ${{ fromJSON(steps.define-testrun.outputs.testrun)['type'] != 'full' }}
        uses: actions/upload-artifact@v4
        with:
          name: testrun-changed-files.txt
          path: testrun-changed-files.txt

      - name: Get Release Changelog Target
        id: get-release-changelog-target
        run: |
          tools ci get-release-changelog-target ${{ github.event_name }}

  pre-commit:
    name: Pre-Commit
    if: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    uses: ./.github/workflows/pre-commit-action.yml
    needs:
      - prepare-workflow
    with:
      cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
      changed-files: ${{ needs.prepare-workflow.outputs.changed-files }}
      pre-commit-version: "3.0.4"

  lint:
    name: Lint
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['lint'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    uses: ./.github/workflows/lint-action.yml
    needs:
      - prepare-workflow
    with:
      changed-files: ${{ needs.prepare-workflow.outputs.changed-files }}

  prepare-release:
    name: "Prepare Release: ${{ needs.prepare-workflow.outputs.salt-version }}"
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['prepare-release'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    runs-on: ubuntu-latest
    needs:
      - prepare-workflow
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python 3.10
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Setup Python Tools Scripts
        uses: ./.github/actions/setup-python-tools-scripts
        with:
          cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}-changelog

      - name: Setup Salt Version
        id: setup-salt-version
        uses: ./.github/actions/setup-salt-version
        with:
          salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"

      - name: Update Debian changelog
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          tools changelog update-deb --draft
          tools changelog update-deb

      - name: Update RPM changelog
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          tools changelog update-rpm --draft
          tools changelog update-rpm

      - name: Create Release Notes Template
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          if [ "${{ needs.prepare-workflow.outputs.release-changelog-target }}" == "next-major-release" ]; then
            tools changelog update-release-notes --next-release --template-only
          else
            tools changelog update-release-notes --template-only
          fi

      - name: Update Release Notes
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          if [ "${{ needs.prepare-workflow.outputs.release-changelog-target }}" == "next-major-release" ]; then
              tools changelog update-release-notes --draft --next-release
              tools changelog update-release-notes --next-release
          else
              tools changelog update-release-notes --draft
              tools changelog update-release-notes
          fi

      - name: Generate MAN Pages
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        env:
          LATEST_RELEASE: "${{ needs.prepare-workflow.outputs.salt-version }}"
          SALT_ON_SALTSTACK: "1"
        run: |
          tools docs man

      - name: Update Changelog
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          tools changelog update-changelog-md --draft
          tools changelog update-changelog-md

      - name: Show Changes Diff
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          git diff --color

      - name: Configure Git
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          git config --global user.name "Salt Project Packaging"
          git config --global user.email saltproject-packaging@vmware.com

      - name: Setup Pre-Commit
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        uses: ./.github/actions/setup-pre-commit
        with:
          version: "3.0.4"
          cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}

      - name: Commit Changes
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        env:
          SKIP: lint-salt,lint-tests
          PRE_COMMIT_COLOR: always
        run: |
          # Run it twice so that pre-commit can fix anything that can be automatically fixed.
          git commit -am "Release v${{ needs.prepare-workflow.outputs.salt-version }}" || \
            git commit -am "Release v${{ needs.prepare-workflow.outputs.salt-version }}"

      - name: Create release changes patch
        shell: bash
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        run: |
          git format-patch --keep-subject --binary --stdout HEAD^ > salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch

      - name: Upload Changes Diff Artifact
        uses: actions/upload-artifact@v4
        if: ${{ startsWith(github.event.ref, 'refs/tags') == false }}
        with:
          name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch
          path: salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch
          retention-days: 7
          if-no-files-found: error

  build-docs:
    name: Documentation
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-docs'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-source-tarball
    uses: ./.github/workflows/build-docs.yml
    with:
      cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"

  build-source-tarball:
    name: Build Source Tarball
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-source-tarball'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    needs:
      - prepare-workflow
      - prepare-release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python 3.10
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Setup Python Tools Scripts
        uses: ./.github/actions/setup-python-tools-scripts
        with:
          cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}-build

      - name: Setup Salt Version
        id: setup-salt-version
        uses: ./.github/actions/setup-salt-version
        with:
          salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"

      - name: Build Source Tarball
        uses: ./.github/actions/build-source-tarball
        with:
          salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"

  build-deps-onedir:
    name: Build Dependencies Onedir
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-onedir'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
    uses: ./.github/workflows/build-deps-onedir.yml
    with:
      cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
      github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
      relenv-version: "0.16.0"
      python-version: "3.10.14"

  build-salt-onedir:
    name: Build Salt Onedir
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }}
    needs:
      - prepare-workflow
      - build-deps-onedir
      - build-source-tarball
    uses: ./.github/workflows/build-salt-onedir.yml
    with:
      cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
      github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
      relenv-version: "0.16.0"
      python-version: "3.10.14"

  build-pkgs-onedir:
    name: Build Packages
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-salt-onedir
    uses: ./.github/workflows/build-packages.yml
    with:
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
      relenv-version: "0.16.0"
      python-version: "3.10.14"
      source: "onedir"

  build-pkgs-src:
    name: Build Packages
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-salt-onedir
    uses: ./.github/workflows/build-packages.yml
    with:
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
      relenv-version: "0.16.0"
      python-version: "3.10.14"
      source: "src"
  build-ci-deps:
    name: CI Deps
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-salt-onedir
    uses: ./.github/workflows/build-deps-ci-action.yml
    with:
      nox-session: ci-test-onedir
      nox-version: 2022.8.7
      python-version: "3.10"
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      nox-archive-hash: "${{ needs.prepare-workflow.outputs.nox-archive-hash }}"

  rockylinux-8-pkg-tests:
    name: Rocky Linux 8 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-8') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: rockylinux-8
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  rockylinux-8-arm64-pkg-tests:
    name: Rocky Linux 8 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-8-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: rockylinux-8-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  rockylinux-9-pkg-tests:
    name: Rocky Linux 9 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: rockylinux-9
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  rockylinux-9-arm64-pkg-tests:
    name: Rocky Linux 9 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-9-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: rockylinux-9-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  amazonlinux-2-pkg-tests:
    name: Amazon Linux 2 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: amazonlinux-2
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  amazonlinux-2-arm64-pkg-tests:
    name: Amazon Linux 2 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: amazonlinux-2-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  amazonlinux-2023-pkg-tests:
    name: Amazon Linux 2023 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2023') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: amazonlinux-2023
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  amazonlinux-2023-arm64-pkg-tests:
    name: Amazon Linux 2023 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: amazonlinux-2023-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  centos-7-pkg-tests:
    name: CentOS 7 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'centos-7') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: centos-7
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  debian-11-pkg-tests:
    name: Debian 11 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-11') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: debian-11
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  debian-11-arm64-pkg-tests:
    name: Debian 11 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-11-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: debian-11-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  debian-12-pkg-tests:
    name: Debian 12 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-12') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: debian-12
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  debian-12-arm64-pkg-tests:
    name: Debian 12 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-12-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: debian-12-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  photonos-4-pkg-tests:
    name: Photon OS 4 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-4
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  photonos-4-arm64-pkg-tests:
    name: Photon OS 4 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-4-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  photonos-4-pkg-tests-fips:
    name: Photon OS 4 Package Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-4
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
      fips: true

  photonos-4-arm64-pkg-tests-fips:
    name: Photon OS 4 Arm64 Package Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-4-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
      fips: true

  photonos-5-pkg-tests:
    name: Photon OS 5 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-5') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-5
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  photonos-5-arm64-pkg-tests:
    name: Photon OS 5 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-5-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  photonos-5-pkg-tests-fips:
    name: Photon OS 5 Package Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-5') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-5
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
      fips: true

  photonos-5-arm64-pkg-tests-fips:
    name: Photon OS 5 Arm64 Package Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: photonos-5-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: rpm
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
      fips: true

  ubuntu-2004-pkg-tests:
    name: Ubuntu 20.04 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-20.04') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-20.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  ubuntu-2004-arm64-pkg-tests:
    name: Ubuntu 20.04 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-20.04-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-20.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  ubuntu-2204-pkg-tests:
    name: Ubuntu 22.04 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-22.04') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-22.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  ubuntu-2204-arm64-pkg-tests:
    name: Ubuntu 22.04 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-22.04-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-22.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  ubuntu-2404-pkg-tests:
    name: Ubuntu 24.04 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-24.04') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-24.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  ubuntu-2404-arm64-pkg-tests:
    name: Ubuntu 24.04 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-linux.yml
    with:
      distro-slug: ubuntu-24.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: deb
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  macos-12-pkg-tests:
    name: macOS 12 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-macos.yml
    with:
      distro-slug: macos-12
      runner: macos-12
      nox-session: ci-test-onedir
      platform: macos
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: macos
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  macos-13-pkg-tests:
    name: macOS 13 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'macos-13') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-macos.yml
    with:
      distro-slug: macos-13
      runner: macos-13
      nox-session: ci-test-onedir
      platform: macos
      arch: x86_64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: macos
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  macos-13-arm64-pkg-tests:
    name: macOS 13 Arm64 Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'macos-13-arm64') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-macos.yml
    with:
      distro-slug: macos-13-arm64
      runner: macos-13-xlarge
      nox-session: ci-test-onedir
      platform: macos
      arch: arm64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: macos
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2016-nsis-pkg-tests:
    name: Windows 2016 NSIS Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2016') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2016
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: NSIS
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2016-msi-pkg-tests:
    name: Windows 2016 MSI Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2016') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2016
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: MSI
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2019-nsis-pkg-tests:
    name: Windows 2019 NSIS Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2019') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2019
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: NSIS
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2019-msi-pkg-tests:
    name: Windows 2019 MSI Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2019') }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2019
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: MSI
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2022-nsis-pkg-tests:
    name: Windows 2022 NSIS Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2022
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: NSIS
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2022-msi-pkg-tests:
    name: Windows 2022 MSI Package Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-pkgs-onedir
      - build-ci-deps
    uses: ./.github/workflows/test-packages-action-windows.yml
    with:
      distro-slug: windows-2022
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      pkg-type: MSI
      nox-version: 2022.8.7
      python-version: "3.10"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}

  windows-2016:
    name: Windows 2016 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2016') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-windows.yml
    with:
      distro-slug: windows-2016
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 210 || 360 }}

  windows-2019:
    name: Windows 2019 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'windows-2019') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-windows.yml
    with:
      distro-slug: windows-2019
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 210 || 360 }}

  windows-2022:
    name: Windows 2022 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-windows.yml
    with:
      distro-slug: windows-2022
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 210 || 360 }}

  macos-12:
    name: macOS 12 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-macos.yml
    with:
      distro-slug: macos-12
      runner: macos-12
      nox-session: ci-test-onedir
      platform: macos
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  macos-13:
    name: macOS 13 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'macos-13') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-macos.yml
    with:
      distro-slug: macos-13
      runner: macos-13
      nox-session: ci-test-onedir
      platform: macos
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  macos-13-arm64:
    name: macOS 13 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'macos-13-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-macos.yml
    with:
      distro-slug: macos-13-arm64
      runner: macos-13-xlarge
      nox-session: ci-test-onedir
      platform: macos
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  rockylinux-8:
    name: Rocky Linux 8 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-8') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: rockylinux-8
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  rockylinux-8-arm64:
    name: Rocky Linux 8 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-8-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: rockylinux-8-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  rockylinux-9:
    name: Rocky Linux 9 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: rockylinux-9
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  rockylinux-9-arm64:
    name: Rocky Linux 9 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'rockylinux-9-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: rockylinux-9-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  amazonlinux-2:
    name: Amazon Linux 2 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: amazonlinux-2
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  amazonlinux-2-arm64:
    name: Amazon Linux 2 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: amazonlinux-2-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  amazonlinux-2023:
    name: Amazon Linux 2023 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'amazonlinux-2023') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: amazonlinux-2023
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  amazonlinux-2023-arm64:
    name: Amazon Linux 2023 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: amazonlinux-2023-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  archlinux-lts:
    name: Arch Linux LTS Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: archlinux-lts
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  centos-7:
    name: CentOS 7 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'centos-7') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: centos-7
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  debian-11:
    name: Debian 11 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-11') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: debian-11
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  debian-11-arm64:
    name: Debian 11 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-11-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: debian-11-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  debian-12:
    name: Debian 12 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-12') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: debian-12
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  debian-12-arm64:
    name: Debian 12 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'debian-12-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: debian-12-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  fedora-40:
    name: Fedora 40 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'fedora-40') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: fedora-40
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  opensuse-15:
    name: Opensuse 15 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'opensuse-15') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: opensuse-15
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  photonos-4:
    name: Photon OS 4 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-4
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  photonos-4-arm64:
    name: Photon OS 4 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-4-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  photonos-4-fips:
    name: Photon OS 4 Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-4
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}
      fips: true

  photonos-4-arm64-fips:
    name: Photon OS 4 Arm64 Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-4-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-4-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}
      fips: true

  photonos-5:
    name: Photon OS 5 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-5') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-5
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  photonos-5-arm64:
    name: Photon OS 5 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-5-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  photonos-5-fips:
    name: Photon OS 5 Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'photonos-5') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-5
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}
      fips: true

  photonos-5-arm64-fips:
    name: Photon OS 5 Arm64 Test (fips)
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: photonos-5-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}
      fips: true

  ubuntu-2004:
    name: Ubuntu 20.04 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-20.04') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-20.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  ubuntu-2004-arm64:
    name: Ubuntu 20.04 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-20.04-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-20.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  ubuntu-2204:
    name: Ubuntu 22.04 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-22.04') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-22.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  ubuntu-2204-arm64:
    name: Ubuntu 22.04 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-22.04-arm64') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-22.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  ubuntu-2404:
    name: Ubuntu 24.04 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), 'ubuntu-24.04') }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-24.04
      nox-session: ci-test-onedir
      platform: linux
      arch: x86_64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  ubuntu-2404-arm64:
    name: Ubuntu 24.04 Arm64 Test
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: ubuntu-24.04-arm64
      nox-session: ci-test-onedir
      platform: linux
      arch: arm64
      nox-version: 2022.8.7
      gh-actions-python-version: "3.10"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.14
      skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}
      workflow-slug: ci
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }}

  combine-all-code-coverage:
    name: Combine Code Coverage
    if: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] == false }}
    runs-on: ubuntu-latest
    needs:
      - prepare-workflow
      - build-ci-deps
      - windows-2016
      - windows-2019
      - windows-2022
      - macos-12
      - macos-13
      - macos-13-arm64
      - rockylinux-8
      - rockylinux-8-arm64
      - rockylinux-9
      - rockylinux-9-arm64
      - amazonlinux-2
      - amazonlinux-2-arm64
      - amazonlinux-2023
      - amazonlinux-2023-arm64
      - archlinux-lts
      - centos-7
      - debian-11
      - debian-11-arm64
      - debian-12
      - debian-12-arm64
      - fedora-40
      - opensuse-15
      - photonos-4
      - photonos-4-arm64
      - photonos-4-fips
      - photonos-4-arm64-fips
      - photonos-5
      - photonos-5-arm64
      - photonos-5-fips
      - photonos-5-arm64-fips
      - ubuntu-2004
      - ubuntu-2004-arm64
      - ubuntu-2204
      - ubuntu-2204-arm64
      - ubuntu-2404
      - ubuntu-2404-arm64
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python 3.10
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Setup Python Tools Scripts
        id: python-tools-scripts
        uses: ./.github/actions/setup-python-tools-scripts
        with:
          cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}-coverage

      - name: Install Nox
        run: |
          python3 -m pip install 'nox==2022.8.7'

      - name: Merge All Code Coverage Test Run Artifacts
        continue-on-error: true
        uses: actions/upload-artifact/merge@v4
        with:
          name: all-testrun-coverage-artifacts
          pattern: all-testrun-coverage-artifacts-*
          separate-directories: false
          delete-merged: true

      - name: Get coverage reports
        id: get-coverage-reports
        uses: actions/download-artifact@v4
        with:
          name: all-testrun-coverage-artifacts
          path: artifacts/coverage/

      - name: Display structure of downloaded files
        run: tree -a artifacts/

      - name: Install Codecov CLI
        run: |
          # We can't yet use tokenless uploads with the codecov CLI
          # python3 -m pip install codecov-cli
          #
          curl https://keybase.io/codecovsecurity/pgp_keys.asc | gpg --no-default-keyring --import
          curl -Os https://uploader.codecov.io/latest/linux/codecov
          curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
          curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
          gpg --verify codecov.SHA256SUM.sig codecov.SHA256SUM
          shasum -a 256 -c codecov.SHA256SUM
          chmod +x codecov
          mv ./codecov /usr/local/bin/

      - name: Create XML Coverage Reports
        run: |
          nox --force-color -e create-xml-coverage-reports

      - name: Upload Code Coverage To Codecov
        if: ${{ ! github.event.repository.private && ! github.event.repository.fork }}
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
        run: |
          tools ci upload-coverage --commit-sha=${{ github.event.pull_request.head.sha || github.sha }} artifacts/coverage/

      - name: Combine Code Coverage
        run: |
          nox --force-color -e combine-coverage

      - name: Report Salt Code Coverage
        run: |
          nox --force-color -e coverage-report -- salt

      - name: Create Salt Code Coverage HTML Report
        run: |
          nox --force-color -e create-html-coverage-report -- salt

      - name: Create Salt Code Coverage HTML Report
        run: |
          nox --force-color -e create-html-coverage-report -- salt

      - name: Upload Salt Code Coverage HTML Report
        uses: actions/upload-artifact@v4
        with:
          name: code-coverage-salt-html-report
          path: artifacts/coverage/html/salt
          retention-days: 7
          if-no-files-found: error

      - name: Report Combined Code Coverage
        run: |
          nox --force-color -e coverage-report

      - name: Create Combined Code Coverage JSON Report
        run: |
          nox --force-color -e create-json-coverage-reports

      - name: Upload Combined Code Coverage JSON Report
        uses: actions/upload-artifact@v4
        with:
          name: code-coverage-full-json-report
          path: artifacts/coverage/coverage.json
          retention-days: 7
          if-no-files-found: error

      - name: Create Combined Code Coverage HTML Report
        run: |
          nox --force-color -e create-html-coverage-report

      - name: Upload Combined Code Coverage HTML Report
        uses: actions/upload-artifact@v4
        with:
          name: code-coverage-full-html-report
          path: artifacts/coverage/html/full
          retention-days: 7
          if-no-files-found: error

  set-pipeline-exit-status:
    # This step is just so we can make github require this step, to pass checks
    # on a pull request instead of requiring all
    name: Set the ${{ github.workflow }} Pipeline Exit Status
    if: always()
    runs-on: ubuntu-latest
    needs:
      - prepare-workflow
      - pre-commit
      - lint
      - build-docs
      - build-deps-onedir
      - build-salt-onedir
      - build-pkgs-src
      - combine-all-code-coverage
      - build-ci-deps
      - windows-2016
      - windows-2019
      - windows-2022
      - macos-12
      - macos-13
      - macos-13-arm64
      - rockylinux-8
      - rockylinux-8-arm64
      - rockylinux-9
      - rockylinux-9-arm64
      - amazonlinux-2
      - amazonlinux-2-arm64
      - amazonlinux-2023
      - amazonlinux-2023-arm64
      - archlinux-lts
      - centos-7
      - debian-11
      - debian-11-arm64
      - debian-12
      - debian-12-arm64
      - fedora-40
      - opensuse-15
      - photonos-4
      - photonos-4-arm64
      - photonos-4-fips
      - photonos-4-arm64-fips
      - photonos-5
      - photonos-5-arm64
      - photonos-5-fips
      - photonos-5-arm64-fips
      - ubuntu-2004
      - ubuntu-2004-arm64
      - ubuntu-2204
      - ubuntu-2204-arm64
      - ubuntu-2404
      - ubuntu-2404-arm64
      - rockylinux-8-pkg-tests
      - rockylinux-8-arm64-pkg-tests
      - rockylinux-9-pkg-tests
      - rockylinux-9-arm64-pkg-tests
      - amazonlinux-2-pkg-tests
      - amazonlinux-2-arm64-pkg-tests
      - amazonlinux-2023-pkg-tests
      - amazonlinux-2023-arm64-pkg-tests
      - centos-7-pkg-tests
      - debian-11-pkg-tests
      - debian-11-arm64-pkg-tests
      - debian-12-pkg-tests
      - debian-12-arm64-pkg-tests
      - photonos-4-pkg-tests
      - photonos-4-arm64-pkg-tests
      - photonos-4-pkg-tests-fips
      - photonos-4-arm64-pkg-tests-fips
      - photonos-5-pkg-tests
      - photonos-5-arm64-pkg-tests
      - photonos-5-pkg-tests-fips
      - photonos-5-arm64-pkg-tests-fips
      - ubuntu-2004-pkg-tests
      - ubuntu-2004-arm64-pkg-tests
      - ubuntu-2204-pkg-tests
      - ubuntu-2204-arm64-pkg-tests
      - ubuntu-2404-pkg-tests
      - ubuntu-2404-arm64-pkg-tests
      - macos-12-pkg-tests
      - macos-13-pkg-tests
      - macos-13-arm64-pkg-tests
      - windows-2016-nsis-pkg-tests
      - windows-2016-msi-pkg-tests
      - windows-2019-nsis-pkg-tests
      - windows-2019-msi-pkg-tests
      - windows-2022-nsis-pkg-tests
      - windows-2022-msi-pkg-tests
    steps:
      - name: Get workflow information
        id: get-workflow-info
        uses: im-open/workflow-conclusion@v2

      - name: Set Pipeline Exit Status
        shell: bash
        run: |
          if [ "${{ steps.get-workflow-info.outputs.workflow_conclusion }}" != "success" ]; then
            exit 1
          else
            exit 0
          fi

      - name: Done
        if: always()
        run:
          echo "All worflows finished"


New Issues Triage Assignment

---
name: New Issues Triage Assignment
concurrency: 1
on:
  issues:
    types: [opened]

env:
  PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/
  PIP_EXTRA_INDEX_URL: https://pypi.org/simple

permissions:
  contents: read

jobs:
  label-and-assign:
    permissions:
      actions: read  # for dawidd6/action-download-artifact to query and download artifacts
      contents: read  # for actions/checkout to fetch code
      issues: write
      pull-requests: read  # for dawidd6/action-download-artifact to query commit hash
    name: Triage New Issue
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.8

      - name: Install Dependencies
        run: |
          pip install pygithub

      - name: Download last assignment cache
        continue-on-error: true
        uses: dawidd6/action-download-artifact@v2
        with:
          workflow: triage.yml
          name: last-assignment
          path: .cache

      - name: Label And Assign
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          READ_ORG_TOKEN: ${{ secrets.READ_ORG_TEAM_MEMBERS_ISSUE_TRIAGE }}
        run: |
          python .github/workflows/scripts/label-and-assign.py \
            --org ${{ github.repository_owner }} \
            --repo ${{ github.event.repository.name }} \
            --team team-triage \
            --label needs-triage \
            --issue ${{ github.event.issue.number }}

      - name: Upload last assignment cache
        uses: actions/upload-artifact@v4
        with:
          name: last-assignment
          path: .cache