diff --git a/.copier-answers.yml b/.copier-answers.yml new file mode 100644 index 00000000..cb439831 --- /dev/null +++ b/.copier-answers.yml @@ -0,0 +1,24 @@ +# Autogenerated. Do not edit this by hand, use `copier update`. +--- +_commit: 0.2.7 +_src_path: https://github.com/lkubb/salt-extension-copier +author: EITR Technologies, LLC +author_email: devops@eitr.tech +docs_url: '' +license: apache +loaders: + - module + - state + - utils +max_salt_version: 3006 +no_saltext_namespace: false +package_name: github +project_name: github +python_requires: '3.8' +salt_version: '3005' +source_url: https://github.com/salt-extensions/saltext-github +ssh_fixtures: false +summary: Salt Extension for interacting with Github +tracker_url: https://github.com/salt-extensions/saltext-github/issues +url: https://github.com/salt-extensions/saltext-github +workflows: org diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 3c066bd4..00000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,63 +0,0 @@ -# SALTSTACK CODE OWNERS - -# See https://help.github.com/articles/about-codeowners/ -# for more info about the CODEOWNERS file - -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. - -# This file uses an fnmatch-style matching pattern. - -# Team Core -* @saltstack/team-core - -# Team Boto -salt/*/*boto* @saltstack/team-core - -# Team Cloud -salt/cloud/* @saltstack/team-core -salt/utils/openstack/* @saltstack/team-core -salt/utils/aws.py @saltstack/team-core -salt/*/*cloud* @saltstack/team-core - -# Team NetAPI -salt/cli/api.py @saltstack/team-core -salt/client/netapi.py @saltstack/team-core -salt/netapi/* @saltstack/team-core - -# Team Network -salt/proxy/* @saltstack/team-core - -# Team SPM -salt/cli/spm.py @saltstack/team-core -salt/spm/* @saltstack/team-core - -# Team SSH -salt/cli/ssh.py @saltstack/team-core -salt/client/ssh/* @saltstack/team-core -salt/roster/* @saltstack/team-core -salt/runners/ssh.py @saltstack/team-core -salt/*/thin.py @saltstack/team-core - -# Team State -salt/state.py @saltstack/team-core - -# Team SUSE -salt/*/*btrfs* @saltstack/team-core -salt/*/*kubernetes* @saltstack/team-core -salt/*/*pkg* @saltstack/team-core -salt/*/*snapper* @saltstack/team-core -salt/*/*xfs* @saltstack/team-core -salt/*/*zypper* @saltstack/team-core - -# Team Transport -salt/transport/* @saltstack/team-core -salt/utils/zeromq.py @saltstack/team-core - -# Team Windows -salt/*/*win* @saltstack/team-core -salt/modules/reg.py @saltstack/team-core -salt/states/reg.py @saltstack/team-core -tests/*/*win* @saltstack/team-core -tests/*/test_reg.py @saltstack/team-core -tests/pytests/* @saltstack/team-core @s0undt3ch diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index f518f3d4..879568ea 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,5 @@ ### Description of Issue - + ### Setup (Please provide relevant configs and/or SLS files (Be sure to remove sensitive info).) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6f61f033..b232a42e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,7 +2,7 @@ name: Bug report about: Create a report to help us improve title: "[BUG]" -labels: Bug, needs-triage +labels: bug, needs-triage assignees: '' --- diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index c465f8de..4cf0d285 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -9,3 +9,6 @@ contact_links: - name: Salt on LiberaChat url: https://web.libera.chat/#salt about: Please ask and answer questions here. + - name: Security vulnerabilities + email: saltproject-security.pdl@broadcom.com + about: Please report security vulnerabilities here. diff --git a/.github/ISSUE_TEMPLATE/docs.md b/.github/ISSUE_TEMPLATE/docs.md index 311e9316..59af749e 100644 --- a/.github/ISSUE_TEMPLATE/docs.md +++ b/.github/ISSUE_TEMPLATE/docs.md @@ -2,7 +2,7 @@ name: Docs about: Issue related to Salt Documentation title: "[DOCS]" -labels: Documentation, needs-triage +labels: documentation, needs-triage assignees: '' --- @@ -14,10 +14,10 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate What did you expect to see in the documentation that is missing or needs updating? **Type of documentation** -This could be Salt documentation, Salt modules, the Salt Repo or the Getting Started guide. +This could be module documentation or a guide. **Location or format of documentation** Insert page URL if applicable. **Additional context** -Add any other context or screenshots about the feature request here. +Add any other context or screenshots here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index e35351f1..0e0a390d 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -2,7 +2,7 @@ name: Feature request about: Suggest an idea for this project title: "[FEATURE REQUEST]" -labels: Feature, needs-triage +labels: feature, needs-triage assignees: '' --- @@ -18,6 +18,3 @@ A clear and concise description of any alternative solutions or features you've **Additional context** Add any other context or screenshots about the feature request here. - -**Please Note** -If this feature request would be considered a substantial change or addition, this should go through a SEP process here https://github.com/saltstack/salt-enhancement-proposals, instead of a feature request. diff --git a/.github/ISSUE_TEMPLATE/tech-debt.md b/.github/ISSUE_TEMPLATE/tech-debt.md index a13303e3..5a546c67 100644 --- a/.github/ISSUE_TEMPLATE/tech-debt.md +++ b/.github/ISSUE_TEMPLATE/tech-debt.md @@ -8,7 +8,6 @@ assignees: '' --- ### Description of the tech debt to be addressed, include links and screenshots - ### Versions Report (Provided by running `salt --versions-report`. Please also mention any differences in master/minion versions.) diff --git a/.github/ISSUE_TEMPLATE/test-failure.md b/.github/ISSUE_TEMPLATE/test-failure.md deleted file mode 100644 index 6eec4274..00000000 --- a/.github/ISSUE_TEMPLATE/test-failure.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Test Failure -about: Jenkins Test Failure issues -title: "[TEST FAILURE]" -labels: 'Test-Failure' -assignees: '' - ---- - -Please paste the link from the specific build where the failure first started: diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml deleted file mode 100644 index f37fdbea..00000000 --- a/.github/actionlint.yaml +++ /dev/null @@ -1,14 +0,0 @@ -self-hosted-runner: - # Labels of self-hosted runner in array of string - labels: - - bastion - - x86_64 - - arm64 - - aarch64 - - amd64 - - repo-nightly - - repo-staging - - repo-release - - medium - - large - - macos-13-xlarge diff --git a/.github/actions/build-onedir-deps/action.yml b/.github/actions/build-onedir-deps/action.yml deleted file mode 100644 index 511fe5a5..00000000 --- a/.github/actions/build-onedir-deps/action.yml +++ /dev/null @@ -1,65 +0,0 @@ ---- -name: build-onedir-deps -description: Build Onedir Dependencies -inputs: - platform: - required: true - type: string - description: The platform to build - arch: - required: true - type: string - description: The platform arch to build - python-version: - required: true - type: string - description: The python version to build - package-name: - required: false - type: string - description: The onedir package name to create - default: salt - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - - -env: - COLUMNS: 190 - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - RELENV_BUILDENV: 1 - - -runs: - using: composite - - steps: - - - name: Cache Deps Onedir Package Directory - id: onedir-pkg-cache - uses: actions/cache@v3.3.1 - with: - path: artifacts/${{ inputs.package-name }} - key: > - ${{ inputs.cache-prefix }}|${{ inputs.python-version }}|deps|${{ inputs.platform }}|${{ inputs.arch }}|${{ inputs.package-name }}|${{ - hashFiles( - format('{0}/.relenv/**/*.xz', github.workspace), - 'requirements/static/pkg/*/*.txt', - '.github/actions/build-onedir-deps/action.yml', - '.github/workflows/build-deps-onedir-*.yml', - 'cicd/shared-gh-workflows-context.yml' - ) - }} - - - name: Install Salt Onedir Package Dependencies - shell: bash - if: steps.onedir-pkg-cache.outputs.cache-hit != 'true' - run: | - tools pkg build onedir-dependencies --arch ${{ inputs.arch }} --python-version ${{ inputs.python-version }} --package-name artifacts/${{ inputs.package-name }} --platform ${{ inputs.platform }} - - - name: Cleanup Salt Onedir Directory - shell: bash - run: | - tools pkg pre-archive-cleanup artifacts/${{ inputs.package-name }} diff --git a/.github/actions/build-onedir-salt/action.yml b/.github/actions/build-onedir-salt/action.yml deleted file mode 100644 index 50969bb8..00000000 --- a/.github/actions/build-onedir-salt/action.yml +++ /dev/null @@ -1,108 +0,0 @@ ---- -name: build-onedir-salt -description: Build Onedir Package -inputs: - platform: - required: true - type: string - description: The platform to build - arch: - required: true - type: string - description: The platform arch to build - package-name: - required: false - type: string - description: The onedir package name to create - default: salt - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - python-version: - required: true - type: string - description: The python version to build - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - - -env: - COLUMNS: 190 - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - RELENV_BUILDENV: 1 - - -runs: - using: composite - - steps: - - - name: Download Cached Deps Onedir Package Directory - id: onedir-bare-cache - uses: actions/cache@v3.3.1 - with: - path: artifacts/${{ inputs.package-name }} - key: > - ${{ inputs.cache-prefix }}|${{ inputs.python-version }}|deps|${{ inputs.platform }}|${{ inputs.arch }}|${{ inputs.package-name }}|${{ - hashFiles( - format('{0}/.relenv/**/*.xz', github.workspace), - 'requirements/static/pkg/*/*.txt', - '.github/actions/build-onedir-deps/action.yml', - '.github/workflows/build-deps-onedir-*.yml', - 'cicd/shared-gh-workflows-context.yml' - ) - }} - - - name: Download Source Tarball - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.tar.gz - - - name: Install Salt Into Onedir - shell: bash - run: | - tools pkg build salt-onedir salt-${{ inputs.salt-version }}.tar.gz --platform ${{ inputs.platform }} --package-name artifacts/${{ inputs.package-name }} - - - name: Cleanup Salt Onedir Directory - shell: bash - run: | - tools pkg pre-archive-cleanup artifacts/${{ inputs.package-name }} - - - name: Create Archive - shell: bash - run: | - cd artifacts/ - tar -cJf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz ${{ inputs.package-name }} - - - name: Create Archive (Zipfile) - if: ${{ inputs.platform == 'windows' }} - shell: powershell - run: | - cd artifacts - py -3 -m zipfile -c "${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.zip" ${{ inputs.package-name }} - - - name: Create Hash Files - shell: bash - run: | - tools pkg generate-hashes artifacts/${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.* - - - name: Upload Onedir Tarball as an Artifact - uses: actions/upload-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz* - retention-days: 7 - if-no-files-found: error - - - name: Upload Onedir Zipfile as an Artifact - if: ${{ inputs.platform == 'windows' }} - uses: actions/upload-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.zip - path: artifacts/${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.zip* - retention-days: 7 - if-no-files-found: error diff --git a/.github/actions/build-source-tarball/action.yml b/.github/actions/build-source-tarball/action.yml deleted file mode 100644 index f755951f..00000000 --- a/.github/actions/build-source-tarball/action.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -name: build-source-tarball -description: Build Source Tarball -inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building the tarball. - nox-version: - required: false - type: string - description: The version of Nox to install - default: "2022.8.7" - - -env: - COLUMNS: 190 - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -runs: - using: composite - - steps: - - - name: Download Release Patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.patch - - - name: Configure Git - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - shell: bash - run: | - tools pkg configure-git - - - name: Apply Release Patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - shell: bash - run: | - tools pkg apply-release-patch salt-${{ inputs.salt-version }}.patch --delete - - - name: Create Source Tarball - shell: bash - run: | - tools pkg source-tarball - - - name: Create Hash Files - shell: bash - run: | - tools pkg generate-hashes dist/salt-${{ inputs.salt-version }}.tar.gz - - - name: Upload Source Tarball as an Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.tar.gz - path: dist/salt-*.tar.gz* - retention-days: 7 - if-no-files-found: error diff --git a/.github/actions/cached-virtualenv/action.yml b/.github/actions/cached-virtualenv/action.yml deleted file mode 100644 index f135d911..00000000 --- a/.github/actions/cached-virtualenv/action.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -name: cached-virtualenv -description: Setup a cached python virtual environment - -inputs: - name: - required: true - type: string - description: The Virtualenv Name - cache-seed: - required: true - type: string - description: Seed used to invalidate caches -outputs: - cache-hit: - value: ${{ steps.cache-virtualenv.outputs.cache-hit }} - cache-key: - value: ${{ steps.setup-cache-key.outputs.cache-key }} - python-executable: - value: ${{ steps.define-python-executable.outputs.python-executable }} - - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -runs: - using: composite - - steps: - - - name: Get Python Version - id: get-python-version - uses: ./.github/actions/get-python-version - with: - python-binary: python3 - - - name: Setup Cache Key - shell: bash - id: setup-cache-key - run: | - echo "cache-key=${{ inputs.cache-seed }}|${{ runner.os }}|${{ runner.arch }}|cached-venv|${{ steps.get-python-version.outputs.version }}|${{ inputs.name }}" >> "${GITHUB_OUTPUT}" - - - name: Define VirtualEnv path - shell: bash - id: virtualenv-path - run: | - cd ${{ github.workspace }} > /dev/null 2>&1 || true - VENVS_PATH=$(echo ".venvs/py${{ steps.get-python-version.outputs.version }}" | python3 -c 'import sys, pathlib; sys.stdout.write(pathlib.Path.cwd().joinpath(sys.stdin.read()).as_posix())') - echo "venvs-path=$VENVS_PATH" | tee -a "$GITHUB_OUTPUT" - VENV_PATH=$(echo ".venvs/py${{ steps.get-python-version.outputs.version }}/${{ inputs.name }}" | python3 -c 'import sys, pathlib; sys.stdout.write(pathlib.Path.cwd().joinpath(sys.stdin.read()).as_posix())') - echo "venv-path=$VENV_PATH" | tee -a "$GITHUB_OUTPUT" - - - name: Cache VirtualEnv - id: cache-virtualenv - uses: actions/cache@v3.3.1 - with: - key: ${{ steps.setup-cache-key.outputs.cache-key }} - path: ${{ steps.virtualenv-path.outputs.venv-path }} - - - name: Create Virtualenv - shell: bash - if: ${{ steps.cache-virtualenv.outputs.cache-hit != 'true' }} - run: | - mkdir -p ${{ steps.virtualenv-path.outputs.venvs-path }} - python3 -m venv --upgrade ${{ steps.virtualenv-path.outputs.venv-path }} - - - name: Define python executable output - shell: bash - id: define-python-executable - run: | - shopt -s nocasematch - if [[ "${{ runner.os }}" =~ "win" ]]; then - BIN_DIR="${{ steps.virtualenv-path.outputs.venv-path }}/Scripts" - PY_EXE="$BIN_DIR/python.exe" - else - BIN_DIR="${{ steps.virtualenv-path.outputs.venv-path }}/bin" - PY_EXE="$BIN_DIR/python3" - if [ ! -f "$PY_EXE" ]; then - echo "The '${PY_EXE}' binary does not exist. Setting it to '$BIN_DIR/python' ..." - PY_EXE="$BIN_DIR/python" - fi - if [ ! -f "$PY_EXE" ]; then - echo "The '${PY_EXE}' binary does not exist. Showing the tree output for '${BIN_DIR}' ..." - tree -a "$BIN_DIR" - exit 1 - fi - fi - shopt -u nocasematch - $PY_EXE --version - echo "python-executable=$PY_EXE" | tee -a "${GITHUB_OUTPUT}" - echo "${BIN_DIR}" | tee -a "${GITHUB_PATH}" diff --git a/.github/actions/download-artifact/action.yml b/.github/actions/download-artifact/action.yml deleted file mode 100644 index 5646eb93..00000000 --- a/.github/actions/download-artifact/action.yml +++ /dev/null @@ -1,39 +0,0 @@ -# This actions was inspired by https://github.com/alehechka/download-tartifact ---- -name: Download Tar Artifact -description: > - Download and extract a tar artifact that was previously uploaded in the - workflow by the upload-tartifact action - -inputs: - name: - description: Artifact name - required: false - path: - description: Destination path - required: false - archive-name: - description: > - By default `inputs.name`(last resort, `archive`) is what's used to name the archive. - This parameter allows a customizing that archive name. This will allow uploading multiple - archives under the same 'name', like the underlying official action does - without overriding the existing archives. - required: false - -runs: - using: composite - steps: - - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.name }} - path: ${{ inputs.path }} - - - shell: bash - working-directory: ${{ inputs.path }} - run: | - tar -xvf ${{ inputs.archive-name || inputs.name || 'archive' }}.tar.gz - - - shell: bash - working-directory: ${{ inputs.path }} - run: | - rm -f ${{ inputs.archive-name || inputs.name || 'archive' }}.tar.gz diff --git a/.github/actions/get-python-version/action.yml b/.github/actions/get-python-version/action.yml deleted file mode 100644 index f2b045f7..00000000 --- a/.github/actions/get-python-version/action.yml +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: get-python-version -description: Setup Relenv -inputs: - python-binary: - required: true - type: string - description: The python binary to get the version from -outputs: - binary: - value: ${{ steps.get-python-version.outputs.binary }} - version: - value: ${{ steps.get-python-version.outputs.version }} - full-version: - value: ${{ steps.get-python-version.outputs.full-version }} - version-sha256sum: - value: ${{ steps.get-python-version.outputs.version-sha256sum }} - - -runs: - using: composite - - steps: - - - name: Install System Packages - if: ${{ runner.os == 'macOS' }} - shell: bash - run: | - brew install coreutils - - - name: Get Python Version - id: get-python-version - shell: bash - run: | - echo "Python Binary: ${{ inputs.python-binary }}" - echo "binary=${{ inputs.python-binary }}" >> "$GITHUB_OUTPUT" - PY_VERSION=$(${{ inputs.python-binary }} -c "import sys; sys.stdout.write('{}.{}'.format(*sys.version_info))") - echo "PY_VERSION=$PY_VERSION" - echo "version=$PY_VERSION" >> "$GITHUB_OUTPUT" - PY_FULL_VERSION=$(${{ inputs.python-binary }} -c "import sys; sys.stdout.write('{}.{}.{}'.format(*sys.version_info))") - echo "PY_FULL_VERSION=$PY_FULL_VERSION" - echo "full-version=$PY_FULL_VERSION" >> "$GITHUB_OUTPUT" - VERSION_SHA256SUM=$(${{ inputs.python-binary }} --version --version | sha256sum | cut -d ' ' -f 1) - echo "VERSION_SHA256SUM=$VERSION_SHA256SUM" - echo "version-sha256sum=$VERSION_SHA256SUM" >> "$GITHUB_OUTPUT" diff --git a/.github/actions/setup-actionlint/action.yml b/.github/actions/setup-actionlint/action.yml deleted file mode 100644 index f1a81aaf..00000000 --- a/.github/actions/setup-actionlint/action.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: setup-actionlint -description: Setup actionlint -inputs: - version: - description: The version of actionlint - default: 1.6.26 - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - -runs: - using: composite - steps: - - - name: Cache actionlint Binary - uses: actions/cache@v3.3.1 - with: - path: /usr/local/bin/actionlint - key: ${{ inputs.cache-seed }}|${{ runner.os }}|${{ runner.arch }}|actionlint|${{ inputs.version }} - - - name: Setup actionlint - shell: bash - run: | - if ! command -v actionlint; then - bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) ${{ inputs.version }} - mv ./actionlint /usr/local/bin/actionlint - fi - - name: Show actionlint Version - shell: bash - run: | - actionlint --version diff --git a/.github/actions/setup-pre-commit/action.yml b/.github/actions/setup-pre-commit/action.yml deleted file mode 100644 index 82b8eef5..00000000 --- a/.github/actions/setup-pre-commit/action.yml +++ /dev/null @@ -1,48 +0,0 @@ ---- -name: setup-pre-commit -description: Setup 'pre-commit' - -inputs: - version: - type: string - description: Pre-commit version to install - required: true - default: 3.0.3 - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -runs: - using: composite - - steps: - - - uses: ./.github/actions/cached-virtualenv - id: pre-commit-virtualenv - with: - name: pre-commit - cache-seed: ${{ inputs.cache-seed }} - - - name: Install Pre-Commit - if: ${{ steps.pre-commit-virtualenv.outputs.cache-hit != 'true' }} - shell: bash - run: | - ${{ steps.pre-commit-virtualenv.outputs.python-executable }} -m pip install pre-commit==${{ inputs.version }} - - - name: Cache Pre-Commit Hooks - uses: actions/cache@v3.3.1 - id: pre-commit-hooks-cache - with: - key: ${{ steps.pre-commit-virtualenv.outputs.cache-key }}|${{ inputs.version }}|${{ hashFiles('.pre-commit-config.yaml') }} - path: ~/.cache/pre-commit - - - name: Install Pre-Commit Hooks - shell: bash - run: | - pre-commit install --install-hooks diff --git a/.github/actions/setup-python-tools-scripts/action.yml b/.github/actions/setup-python-tools-scripts/action.yml deleted file mode 100644 index 9d5ff710..00000000 --- a/.github/actions/setup-python-tools-scripts/action.yml +++ /dev/null @@ -1,78 +0,0 @@ ---- -name: setup-python-tools-scripts -description: Setup 'python-tools-scripts' - -inputs: - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - cwd: - type: string - description: The directory the salt checkout is located in - default: "." - -outputs: - version: - value: ${{ steps.get-version.outputs.version }} - - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -runs: - using: composite - - steps: - - - name: Get Python Version - id: get-python-version - uses: ./.github/actions/get-python-version - with: - python-binary: python3 - - - name: Define Cache Hash - id: venv-hash - shell: bash - run: | - VENV_NAME_HASH=$(echo "${{ inputs.cache-prefix }}|${{ github.workflow }}|${{ - steps.get-python-version.outputs.version-sha256sum }}|${{ - hashFiles('requirements/**/*.txt', 'tools/**/*.py') }}" | sha256sum | cut -d ' ' -f 1) - echo "TOOLS_VIRTUALENV_CACHE_SEED=$VENV_NAME_HASH" | tee -a "${GITHUB_ENV}" - echo "venv-hash=$VENV_NAME_HASH" | tee -a "${GITHUB_OUTPUT}" - - - uses: ./.github/actions/cached-virtualenv - id: tools-virtualenv - with: - name: tools.${{ steps.venv-hash.outputs.venv-hash }} - cache-seed: tools|${{ steps.venv-hash.outputs.venv-hash }} - - - name: Restore Python Tools Virtualenvs Cache - uses: actions/cache@v3.3.1 - with: - path: ${{ inputs.cwd }}/.tools-venvs - key: ${{ inputs.cache-prefix }}|${{ steps.venv-hash.outputs.venv-hash }} - - - name: Install 'python-tools-scripts' - shell: bash - working-directory: ${{ inputs.cwd }} - run: | - PYTHON_EXE=${{ steps.tools-virtualenv.outputs.python-executable }} - (${PYTHON_EXE} -m pip install --help | grep break-system-packages > /dev/null 2>&1) && exitcode=0 || exitcode=1 - if [ $exitcode -eq 0 ]; then - ${PYTHON_EXE} -m pip install --break-system-packages -r requirements/static/ci/py${{ steps.get-python-version.outputs.version }}/tools.txt - else - ${PYTHON_EXE} -m pip install -r requirements/static/ci/py${{ steps.get-python-version.outputs.version }}/tools.txt - fi - - - name: Get 'python-tools-scripts' Version - id: get-version - shell: bash - working-directory: ${{ inputs.cwd }} - run: | - # The first time `tools` runs with newer virtual enviroments we need to disregard the output - tools --debug --version - VERSION=$(tools --version | tail -n 1) - echo "version=$VERSION" >> "${GITHUB_OUTPUT}" diff --git a/.github/actions/setup-relenv/action.yml b/.github/actions/setup-relenv/action.yml deleted file mode 100644 index c4cfd33f..00000000 --- a/.github/actions/setup-relenv/action.yml +++ /dev/null @@ -1,66 +0,0 @@ ---- -name: setup-relenv -description: Setup Relenv -inputs: - platform: - required: true - type: string - description: The platform to build - arch: - required: true - type: string - description: The platform arch to build - python-version: - required: true - type: string - description: The version of python to build - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - version: - required: false - type: string - description: The version of relenv to use - default: 0.13.2 - -outputs: - version: - value: ${{ inputs.version }} - - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -runs: - using: composite - - steps: - - - name: Install Relenv - shell: bash - run: | - python3 -m pip install relenv==${{ inputs.version }} - - - name: Cache Relenv Data Directory - uses: actions/cache@v3.3.1 - with: - path: ${{ github.workspace }}/.relenv - key: ${{ inputs.cache-seed }}|relenv|${{ inputs.version }}|${{ inputs.python-version }}|${{ inputs.platform }}|${{ inputs.arch }} - - - name: Fetch Toolchain - if: ${{ inputs.platform == 'linux' }} - shell: bash - env: - RELENV_FETCH_VERSION: "${{ inputs.version }}" - run: | - python3 -m relenv toolchain fetch --arch=${{ inputs.arch }} - - - name: Fetch Native Python Build - shell: bash - env: - RELENV_FETCH_VERSION: "${{ inputs.version }}" - run: | - python3 -m relenv fetch --arch=${{ inputs.arch }} --python=${{ inputs.python-version }} diff --git a/.github/actions/setup-salt-version/action.yml b/.github/actions/setup-salt-version/action.yml deleted file mode 100644 index 9f21d6f0..00000000 --- a/.github/actions/setup-salt-version/action.yml +++ /dev/null @@ -1,43 +0,0 @@ ---- -name: setup-salt-version -description: Setup Salt Version -inputs: - cwd: - type: string - default: "" - salt-version: - type: string - default: "" - description: > - The Salt version to set prior to running tests or building packages. - If not set, it is discover at run time, like, for example, capturing - the output of running `python3 salt/version.py` - validate-version: - type: boolean - default: false - description: Validate the passed version. - release: - type: boolean - default: false - description: This is a release of salt. -outputs: - salt-version: - value: ${{ steps.setup-salt-version.outputs.salt-version }} - description: The Salt version written to `salt/_version.txt` - -env: - COLUMNS: 190 - -runs: - using: composite - - steps: - - - name: Setup Salt Version - id: setup-salt-version - shell: bash - run: | - if [ "${{ inputs.cwd }}" != "" ]; then - cd "${{ inputs.cwd }}" - fi - tools pkg set-salt-version ${{ inputs.validate-version == 'true' && '--validate-version' || '' }} ${{ inputs.release == 'true' && '--release' || '' }} ${{ inputs.salt-version }} diff --git a/.github/actions/setup-shellcheck/action.yml b/.github/actions/setup-shellcheck/action.yml deleted file mode 100644 index 2c86c98a..00000000 --- a/.github/actions/setup-shellcheck/action.yml +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: setup-shellcheck -description: Setup shellcheck -inputs: - version: - description: The version of shellcheck - default: v0.9.0 - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - -runs: - using: composite - steps: - - - name: Cache shellcheck Binary - uses: actions/cache@v3.3.1 - with: - path: /usr/local/bin/shellcheck - key: ${{ inputs.cache-seed }}|${{ runner.os }}|${{ runner.arch }}|shellcheck|${{ inputs.version }} - - - name: Setup shellcheck - shell: bash - run: | - if ! command -v shellcheck; then - wget https://github.com/koalaman/shellcheck/releases/download/${{ inputs.version }}/shellcheck-${{ inputs.version }}.${{ runner.os }}.x86_64.tar.xz - tar xf shellcheck-${{ inputs.version }}.${{ runner.os }}.x86_64.tar.xz - mv shellcheck-${{ inputs.version }}/shellcheck /usr/local/bin/shellcheck - rm -rf shellcheck-${{ inputs.version }}.${{ runner.os }}.x86_64.tar.xz shellcheck-${{ inputs.version }} - fi - - name: Show shellcheck Version - shell: bash - run: | - shellcheck --version diff --git a/.github/actions/upload-artifact/action.yml b/.github/actions/upload-artifact/action.yml deleted file mode 100644 index 4afd8b3e..00000000 --- a/.github/actions/upload-artifact/action.yml +++ /dev/null @@ -1,57 +0,0 @@ -# This actions was inspired by https://github.com/alehechka/upload-tartifact ---- -name: Upload Tar Artifact -description: Compress files with tar prior to artifacting to keep file privileges. - -inputs: - name: - description: Artifact name - default: artifact - required: false - path: - description: > - A file, directory or wildcard pattern that describes what to upload. - Note: The path provided will be maintained through tar, so after - download-tartifact, and subfolder structure will remain intact. - required: true - if-no-files-found: - description: > - The desired behavior if no files are found using the provided path. - Available Options: - warn: Output a warning but do not fail the action - error: Fail the action with an error message - ignore: Do not output any warnings or errors, the action does not fail - default: 'warn' - required: false - retention-days: - description: > - Duration after which artifact will expire in days. 0 means using default retention. - Minimum 1 day. - Maximum 90 days unless changed from the repository settings page. - required: false - archive-name: - description: > - By default `archive` is what's used to name the archive. This parameter - allows a customizing that archive name. This will allow uploading multiple - archives under the same 'name', like the underlying official action does - without overriding the existing archives. - required: false - -runs: - using: composite - steps: - - shell: bash - run: | - shopt -s globstar || echo "'globstar' not available" - tar -cavf ${{ inputs.archive-name || inputs.name || 'archive' }}.tar.gz ${{ inputs.path }} - - - uses: actions/upload-artifact@v3 - with: - name: ${{ inputs.name }} - path: ${{ inputs.archive-name || inputs.name || 'archive' }}.tar.gz - if-no-files-found: ${{ inputs.if-no-files-found }} - retention-days: ${{ inputs.retention-days }} - - - shell: bash - run: | - rm -f ${{ inputs.archive-name || inputs.name || 'archive' }}.tar.gz diff --git a/.github/config.yml b/.github/config.yml deleted file mode 100644 index 6bf3cadf..00000000 --- a/.github/config.yml +++ /dev/null @@ -1,57 +0,0 @@ -# Configuration for welcome - https://github.com/behaviorbot/welcome -# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome -# Comment to be posted to on first time issues -newIssueWelcomeComment: > - Hi there! Welcome to the Salt Community! Thank you for making your first contribution. We have - a lengthy process for issues and PRs. Someone from the Core Team will follow up as soon as - possible. In the meantime, here’s some information that may help as you continue your Salt - journey. - - Please be sure to review our [Code of Conduct](https://github.com/saltstack/salt/blob/master/CODE_OF_CONDUCT.md). - Also, check out some of our community - resources including: - - - [Community Wiki](https://github.com/saltstack/community/wiki) - - [Salt’s Contributor Guide](https://docs.saltproject.io/en/master/topics/development/contributing.html) - - [Join our Community Slack](https://via.vmw.com/salt-slack) - - [IRC on LiberaChat](https://web.libera.chat/#salt) - - [Salt Project YouTube channel](https://www.youtube.com/channel/UCpveTIucFx9ljGelW63-BWg) - - [Salt Project Twitch channel](https://www.twitch.tv/saltprojectoss) - - There are lots of ways to get involved in our community. Every month, there are around a dozen - opportunities to meet with other contributors and the Salt Core team and collaborate in real - time. The best way to keep track is by subscribing to the Salt Community Events Calendar. - - If you have additional questions, email us at saltproject@vmware.com. We’re glad - you’ve joined our community and look forward to doing awesome things with - you! - -# Comment to be posted to on PRs from first time contributors in your repository -newPRWelcomeComment: > - Hi there! Welcome to the Salt Community! Thank you for making your first contribution. We have - a lengthy process for issues and PRs. Someone from the Core Team will follow up as soon as - possible. In the meantime, here’s some information that may help as you continue your Salt - journey. - - Please be sure to review our [Code of Conduct](https://github.com/saltstack/salt/blob/master/CODE_OF_CONDUCT.md). - Also, check out some of our community - resources including: - - - [Community Wiki](https://github.com/saltstack/community/wiki) - - [Salt’s Contributor Guide](https://docs.saltproject.io/en/master/topics/development/contributing.html) - - [Join our Community Slack](https://via.vmw.com/salt-slack) - - [IRC on LiberaChat](https://web.libera.chat/#salt) - - [Salt Project YouTube channel](https://www.youtube.com/channel/UCpveTIucFx9ljGelW63-BWg) - - [Salt Project Twitch channel](https://www.twitch.tv/saltprojectoss) - - There are lots of ways to get involved in our community. Every month, there are around a dozen - opportunities to meet with other contributors and the Salt Core team and collaborate in real - time. The best way to keep track is by subscribing to the Salt Community Events Calendar. - - If you have additional questions, email us at saltproject@vmware.com. We’re glad - you’ve joined our community and look forward to doing awesome things with - you! - -# Comment to be posted to on pull requests merged by a first time user -firstPRMergeComment: > - Congratulations on your first PR being merged! :tada: diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index b6b53613..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: 2 -updates: - # master branch - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - target-branch: master - labels: - - "test:full" - # Don't open PRs for regular version updates - open-pull-requests-limit: 0 - - # 3006.x release branch - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - target-branch: 3006.x - labels: - - "test:full" - # Don't open PRs for regular version updates - open-pull-requests-limit: 0 - - # freeze release branch - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - target-branch: freeze - labels: - - "test:full" - # Don't open PRs for regular version updates - open-pull-requests-limit: 0 diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index b34faf36..00000000 --- a/.github/stale.yml +++ /dev/null @@ -1,39 +0,0 @@ -# Probot Stale configuration file - -# Number of days of inactivity before an issue becomes stale -# 600 is approximately 1 year and 8 months -daysUntilStale: 90 - -# Number of days of inactivity before a stale issue is closed -daysUntilClose: false - -# Issues with these labels will never be considered stale -exemptLabels: - - Confirmed - - Release Blocker - - Critical - - P1 - - P2 - - Bug - - Feature - - Test Failure - -ZD - -# Label to use when marking an issue as stale -staleLabel: stale - -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: | - This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. - - If this issue is closed prematurely, please leave a comment and we will gladly reopen the issue. - -# Comment to post when removing the stale label. Set to `false` to disable -unmarkComment: | - Thank you for updating this issue. It is no longer marked as stale. - -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false - -# Limit to only `issues` or `pulls` -only: issues diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml deleted file mode 100644 index b70b84df..00000000 --- a/.github/workflows/backport.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Backport PR -run-name: "Backport PR #${{ github.event.number }}" - -on: - pull_request_target: - types: - - "labeled" - - "closed" - -permissions: - contents: write - pull-requests: write - -jobs: - backport: - name: Backport PR - runs-on: - - ubuntu-latest - if: | - github.event.pull_request.merged == true - && ( - contains(github.event.pull_request.labels.*.name, 'backport:master') || - contains(github.event.pull_request.labels.*.name, 'backport:3006.x') || - contains(github.event.pull_request.labels.*.name, 'backport:3005.x') - ) - && ( - (github.event.action == 'labeled' && ( - contains(github.event.pull_request.labels.*.name, 'backport:master') || - contains(github.event.pull_request.labels.*.name, 'backport:3006.x') || - contains(github.event.pull_request.labels.*.name, 'backport:3005.x') - )) - || (github.event.action == 'closed') - ) - steps: - - name: Backport Action - uses: sqren/backport-github-action@v8.9.7 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - auto_backport_label_prefix: "backport:" - add_original_reviewers: true - - - name: Info log - if: ${{ success() }} - run: jq -C '.' ~/.backport/backport.info.log - - - name: Debug log - if: ${{ failure() }} - run: jq -C '.' ~/.backport/backport.debug.log diff --git a/.github/workflows/build-deb-packages.yml b/.github/workflows/build-deb-packages.yml deleted file mode 100644 index 4d7bbdcc..00000000 --- a/.github/workflows/build-deb-packages.yml +++ /dev/null @@ -1,132 +0,0 @@ ---- -name: Build DEB Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - relenv-version: - type: string - required: true - description: The relenv version to set prior to building packages. - python-version: - required: true - type: string - description: The version of python to use with relenv - source: - required: true - type: string - description: The backend to build the packages with - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - build: - name: DEB - runs-on: - - self-hosted - - linux - - ${{ matrix.arch }} - strategy: - fail-fast: false - matrix: - arch: - - x86_64 - - aarch64 - source: - - ${{ inputs.source }} - - container: - image: ghcr.io/saltstack/salt-ci-containers/packaging:debian-12 - - steps: - # Checkout here so we can easily use custom actions - - uses: actions/checkout@v4 - - # Checkout here for the build process - - name: Checkout in build directory - uses: actions/checkout@v4 - with: - path: - pkgs/checkout/ - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch }}.tar.xz - path: pkgs/checkout/artifacts/ - - - name: Download Release Patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.patch - path: pkgs/checkout/ - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cwd: pkgs/checkout/ - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - cwd: pkgs/checkout/ - - - name: Configure Git - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - working-directory: pkgs/checkout/ - run: | - tools pkg configure-git - - - name: Apply release patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - working-directory: pkgs/checkout/ - run: | - tools pkg apply-release-patch salt-${{ inputs.salt-version }}.patch --delete - - - name: Build Deb - working-directory: pkgs/checkout/ - run: | - tools pkg build deb --relenv-version=${{ inputs.relenv-version }} --python-version=${{ inputs.python-version }} ${{ - inputs.source == 'onedir' && - format('--onedir=salt-{0}-onedir-linux-{1}.tar.xz', inputs.salt-version, matrix.arch) - || - format('--arch={0}', matrix.arch) - }} - - - name: Cleanup - run: | - rm -rf pkgs/checkout/ - - - name: Set Artifact Name - id: set-artifact-name - run: | - if [ "${{ inputs.source }}" != "src" ]; then - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-deb" >> "$GITHUB_OUTPUT" - else - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-deb-from-src" >> "$GITHUB_OUTPUT" - fi - - - name: Upload DEBs - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.artifact-name }} - path: ${{ github.workspace }}/pkgs/* - retention-days: 7 - if-no-files-found: error diff --git a/.github/workflows/build-deps-ci-action-macos.yml b/.github/workflows/build-deps-ci-action-macos.yml deleted file mode 100644 index 125a6713..00000000 --- a/.github/workflows/build-deps-ci-action-macos.yml +++ /dev/null @@ -1,135 +0,0 @@ ---- -name: Install Test Dependencies - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - nox-session: - required: true - type: string - description: The nox session to run - salt-version: - type: string - required: true - description: The Salt version to set prior to running tests. - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - - -env: - COLUMNS: 190 - PIP_INDEX_URL: "https://pypi-proxy.saltstack.net/root/local/+simple/" - PIP_EXTRA_INDEX_URL: "https://pypi.org/simple" - GITHUB_ACTIONS_PIPELINE: "1" - -jobs: - - dependencies: - name: Install - runs-on: ${{ inputs.distro-slug }} - timeout-minutes: 90 - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Cache nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - id: nox-dependencies-cache - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - - - name: Download Onedir Tarball as an Artifact - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: Set up Python ${{ inputs.python-version }} - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.python-version }}" - - - name: Install System Dependencies - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - brew install openssl@3 - - - name: Install Nox - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Install Dependencies - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - env: - PRINT_TEST_SELECTION: "0" - PRINT_SYSTEM_INFO: "0" - run: | - export PYCURL_SSL_LIBRARY=openssl - export LDFLAGS="-L/usr/local/opt/openssl@3/lib" - export CPPFLAGS="-I/usr/local/opt/openssl@3/include" - export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig" - nox --install-only -e ${{ inputs.nox-session }} - - - name: Cleanup .nox Directory - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - nox --force-color -e "pre-archive-cleanup(pkg=False)" - - - name: Compress .nox Directory - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - nox --force-color -e compress-dependencies -- ${{ inputs.distro-slug }} - - - name: Upload Nox Requirements Tarball - uses: actions/upload-artifact@v3 - with: - name: nox-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: nox.${{ inputs.distro-slug }}.tar.* diff --git a/.github/workflows/build-deps-ci-action.yml b/.github/workflows/build-deps-ci-action.yml deleted file mode 100644 index 0d596c0e..00000000 --- a/.github/workflows/build-deps-ci-action.yml +++ /dev/null @@ -1,160 +0,0 @@ ---- -name: Install Test Dependencies - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - nox-session: - required: true - type: string - description: The nox session to run - salt-version: - type: string - required: true - description: The Salt version to set prior to running tests. - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - dependencies: - name: Install - runs-on: - - self-hosted - - linux - - bastion - timeout-minutes: 90 - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Cache nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - id: nox-dependencies-cache - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - - - name: Download Onedir Tarball as an Artifact - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: PyPi Proxy - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - sed -i '7s;^;--index-url=https://pypi-proxy.saltstack.net/root/local/+simple/ --extra-index-url=https://pypi.org/simple\n;' requirements/static/ci/*/*.txt - - - name: Setup Python Tools Scripts - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }}-build-deps-ci - - - name: Get Salt Project GitHub Actions Bot Environment - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ inputs.distro-slug }} - - - name: List Free Space - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm ssh ${{ inputs.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm rsync ${{ inputs.distro-slug }} - - - name: Install Dependencies - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm install-dependencies --nox-session=${{ inputs.nox-session }} ${{ inputs.distro-slug }} - - - name: Cleanup .nox Directory - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm pre-archive-cleanup ${{ inputs.distro-slug }} - - - name: Compress .nox Directory - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm compress-dependencies ${{ inputs.distro-slug }} - - - name: Download Compressed .nox Directory - if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm download-dependencies ${{ inputs.distro-slug }} - - - name: Destroy VM - if: always() && steps.nox-dependencies-cache.outputs.cache-hit != 'true' - run: | - tools --timestamps vm destroy --no-wait ${{ inputs.distro-slug }} - - - name: Upload Nox Requirements Tarball - uses: actions/upload-artifact@v3 - with: - name: nox-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: nox.${{ inputs.distro-slug }}.tar.* diff --git a/.github/workflows/build-deps-onedir-linux.yml b/.github/workflows/build-deps-onedir-linux.yml deleted file mode 100644 index 8d149c46..00000000 --- a/.github/workflows/build-deps-onedir-linux.yml +++ /dev/null @@ -1,83 +0,0 @@ ---- -name: Build Packaging Dependencies Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-deps-linux: - name: Linux - if: ${{ inputs.self-hosted-runners }} - strategy: - fail-fast: false - matrix: - arch: - - x86_64 - - aarch64 - runs-on: - - self-hosted - - linux - - ${{ matrix.arch }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-deps-linux-${{ matrix.arch }} - - - name: Setup Relenv - id: setup-relenv - uses: ./.github/actions/setup-relenv - with: - platform: linux - arch: ${{ matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Install Salt Packaging Dependencies into Relenv Onedir - uses: ./.github/actions/build-onedir-deps - with: - platform: linux - arch: ${{ matrix.arch }} - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-deps-onedir-macos.yml b/.github/workflows/build-deps-onedir-macos.yml deleted file mode 100644 index 2886c3f9..00000000 --- a/.github/workflows/build-deps-onedir-macos.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -name: Build Packaging Dependencies Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-deps-macos: - name: macOS - if: ${{ inputs.github-hosted-runners }} - strategy: - fail-fast: false - max-parallel: 2 - matrix: - arch: - - x86_64 - - aarch64 - runs-on: - - ${{ matrix.arch == 'aarch64' && 'macos-13-xlarge' || 'macos-12' }} - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-deps-macos - - - name: Setup Relenv - id: setup-relenv - uses: ./.github/actions/setup-relenv - with: - platform: darwin - arch: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Install Salt Packaging Dependencies into Relenv Onedir - uses: ./.github/actions/build-onedir-deps - with: - platform: darwin - arch: ${{ matrix.arch }} - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-deps-onedir-windows.yml b/.github/workflows/build-deps-onedir-windows.yml deleted file mode 100644 index af741e06..00000000 --- a/.github/workflows/build-deps-onedir-windows.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -name: Build Packaging Dependencies Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-deps-windows: - name: Windows - if: ${{ inputs.github-hosted-runners }} - strategy: - fail-fast: false - max-parallel: 2 - matrix: - arch: - - x86 - - amd64 - runs-on: windows-latest - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-deps-windows-${{ matrix.arch }} - - - name: Setup Relenv - id: setup-relenv - uses: ./.github/actions/setup-relenv - with: - platform: windows - arch: ${{ matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Install Salt Packaging Dependencies into Relenv Onedir - uses: ./.github/actions/build-onedir-deps - with: - platform: windows - arch: ${{ matrix.arch }} - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml deleted file mode 100644 index 2afb5d8c..00000000 --- a/.github/workflows/build-docs.yml +++ /dev/null @@ -1,105 +0,0 @@ ---- -name: Build Documentation - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - build: - name: Build - runs-on: - - self-hosted - - linux - - medium - - x86_64 - strategy: - fail-fast: false - matrix: - docs-output: - - linkcheck - - spellcheck - - html - - epub - # - pdf - - steps: - - uses: actions/checkout@v4 - - - name: Download Release Patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.patch - - - name: Get Python Version - id: get-python-version - uses: ./.github/actions/get-python-version - with: - python-binary: python3 - - - name: Setup Python Tools Scripts - id: python-tools-scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }} - - - name: Configure Git - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - run: | - tools pkg configure-git - - - name: Apply release patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - run: | - tools pkg apply-release-patch salt-${{ inputs.salt-version }}.patch --delete - - - name: Cache Python Tools Docs Virtualenv - id: tools-venvs-dependencies-cache - uses: actions/cache@v3.3.1 - with: - path: .tools-venvs/docs - key: ${{ inputs.cache-seed }}|${{ github.workflow }}|${{ github.job }}|tools-venvs|${{ steps.python-tools-scripts.outputs.version }}|docs|${{ steps.get-python-version.outputs.version }}|${{ hashFiles('requirements/**/docs.txt') }} - - - name: Prepare Docs Build - run: | - git clone https://gitlab.com/saltstack/open/docs/builddocs.git .builddocs - sudo mkdir -p /usr/share/fonts/truetype /usr/share/fonts/opentype - sudo cp -rfv .builddocs/builddocs/files/fonts/truetype/*.ttf /usr/share/fonts/truetype/ - sudo cp -rfv .builddocs/builddocs/files/fonts/opentype/*.otf /usr/share/fonts/opentype/ - sudo fc-cache -f -v - - - name: Build Documentation (${{ matrix.docs-output }}) - id: build-docs - shell: bash - continue-on-error: ${{ matrix.docs-output == 'linkcheck' || matrix.docs-output == 'spellcheck' }} - env: - LATEST_RELEASE: "${{ inputs.salt-version }}" - SALT_ON_SALTSTACK: "1" - ARCHIVE_FILENAME: "${{ format('salt-{0}-docs-{1}.tar.xz', inputs.salt-version, matrix.docs-output) }}" - run: | - tools docs ${{ matrix.docs-output }} - - - name: Upload Built Documentation Artifact(${{ matrix.docs-output }}) - if: ${{ steps.build-docs.outputs.has-artifacts == 'true' }} - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.build-docs.outputs.artifact-name }} - path: ${{ steps.build-docs.outputs.artifact-path }} - retention-days: 7 - if-no-files-found: error diff --git a/.github/workflows/build-macos-packages.yml b/.github/workflows/build-macos-packages.yml deleted file mode 100644 index 9b332489..00000000 --- a/.github/workflows/build-macos-packages.yml +++ /dev/null @@ -1,158 +0,0 @@ ---- -name: Build macOS Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - relenv-version: - type: string - required: true - description: The relenv version to set prior to building packages. - python-version: - required: true - type: string - description: The version of python to use with relenv - sign-packages: - type: boolean - default: false - description: Sign Packages - environment: - type: string - description: The GitHub Environment where this workflow should run - default: ci - source: - required: true - type: string - description: The backend to build the packages with - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - -env: - COLUMNS: 190 - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-pkgs: - name: macOS - environment: ${{ inputs.environment }} - strategy: - fail-fast: false - matrix: - arch: - - x86_64 - - aarch64 - source: - - ${{ inputs.source }} - - runs-on: - - ${{ matrix.arch == 'aarch64' && 'macos-13-xlarge' || 'macos-12' }} - - steps: - - name: Check Package Signing Enabled - shell: bash - id: check-pkg-sign - run: | - if [ "${{ inputs.sign-packages }}" == "true" ]; then - if [ "${{ (secrets.MAC_SIGN_APPLE_ACCT != '' && contains(fromJSON('["nightly", "staging"]'), inputs.environment)) && 'true' || 'false' }}" != "true" ]; then - MSG="Secrets for signing packages are not available. The packages created will NOT be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=false" >> "$GITHUB_OUTPUT" - else - MSG="The packages created WILL be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=true" >> "$GITHUB_OUTPUT" - fi - else - MSG="The sign-packages input is false. The packages created will NOT be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=false" >> "$GITHUB_OUTPUT" - fi - - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-darwin-${{ matrix.arch }}.tar.xz - path: artifacts/ - - - name: Prepare Package Signing - if: ${{ steps.check-pkg-sign.outputs.sign-pkgs == 'true' }} - run: | - echo ${{ secrets.MAC_SIGN_DEV_APP_CERT_B64 }} | base64 --decode > app-cert.p12 - echo ${{ secrets.MAC_SIGN_DEV_INSTALL_CERT_B64 }} | base64 --decode > install-cert.p12 - # Create SaltSigning keychain. This will contain the certificates for signing - security create-keychain -p "${{ secrets.MAC_SIGN_DEV_PASSWORD }}" "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" - # Append SaltSigning keychain to the search list - security list-keychains -d user -s "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" "$(security list-keychains -d user | sed s/\"//g)" - # Unlock the keychain so we can import certs - security unlock-keychain -p "${{ secrets.MAC_SIGN_DEV_PASSWORD }}" "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" - # Developer Application Certificate - security import "app-cert.p12" -t agg -k "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" -P "${{ secrets.MAC_SIGN_DEV_PASSWORD }}" -A - rm app-cert.p12 - # Developer Installer Certificate - security import "install-cert.p12" -t agg -k "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" -P "${{ secrets.MAC_SIGN_DEV_PASSWORD }}" -A - rm install-cert.p12 - security set-key-partition-list -S apple-tool:,apple: -k "${{ secrets.MAC_SIGN_DEV_PASSWORD }}" "${{ secrets.MAC_SIGN_DEV_KEYCHAIN }}" &> /dev/null - - - name: Build MacOS Package - env: - DEV_APP_CERT: "${{ secrets.MAC_SIGN_DEV_APP_CERT }}" - DEV_INSTALL_CERT: "${{ secrets.MAC_SIGN_DEV_INSTALL_CERT }}" - APPLE_ACCT: "${{ secrets.MAC_SIGN_APPLE_ACCT }}" - APPLE_TEAM_ID: "${{ secrets.MAC_SIGN_APPLE_TEAM_ID }}" - APP_SPEC_PWD: "${{ secrets.MAC_SIGN_APP_SPEC_PWD }}" - run: | - tools pkg build macos --relenv-version=${{ inputs.relenv-version }} --python-version=${{ inputs.python-version }} ${{ - inputs.source == 'onedir' && - format( - '--onedir salt-{0}-onedir-darwin-{1}.tar.xz --salt-version {0} {2}', - inputs.salt-version, - matrix.arch, - steps.check-pkg-sign.outputs.sign-pkgs == 'true' && '--sign' || '' - ) - || - format('--salt-version {0}', inputs.salt-version) - }} - - - name: Set Artifact Name - id: set-artifact-name - run: | - if [ "${{ inputs.source }}" != "src" ]; then - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-macos" >> "$GITHUB_OUTPUT" - else - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-macos-from-src" >> "$GITHUB_OUTPUT" - fi - - - name: Upload ${{ matrix.arch }} Package - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.artifact-name }} - path: pkg/macos/salt-${{ inputs.salt-version }}-py3-*.pkg - retention-days: 7 - if-no-files-found: error diff --git a/.github/workflows/build-rpm-packages.yml b/.github/workflows/build-rpm-packages.yml deleted file mode 100644 index 1b210370..00000000 --- a/.github/workflows/build-rpm-packages.yml +++ /dev/null @@ -1,114 +0,0 @@ ---- -name: Build RPM Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - relenv-version: - type: string - required: true - description: The relenv version to set prior to building packages. - python-version: - required: true - type: string - description: The version of python to use with relenv - source: - required: true - type: string - description: The backend to build the packages with - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - build: - name: RPM - runs-on: - - self-hosted - - linux - - ${{ matrix.arch }} - strategy: - fail-fast: false - matrix: - arch: - - x86_64 - - aarch64 - source: - - ${{ inputs.source }} - - container: - image: ghcr.io/saltstack/salt-ci-containers/packaging:centosstream-9 - - steps: - - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch }}.tar.xz - path: artifacts/ - - - name: Download Release Patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}.patch - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Configure Git - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - run: | - tools pkg configure-git - - - name: Apply release patch - if: ${{ startsWith(github.event.ref, 'refs/tags') == false }} - run: | - tools pkg apply-release-patch salt-${{ inputs.salt-version }}.patch --delete - - - name: Build RPM - run: | - tools pkg build rpm --relenv-version=${{ inputs.relenv-version }} --python-version=${{ inputs.python-version }} ${{ - inputs.source == 'onedir' && - format('--onedir=salt-{0}-onedir-linux-{1}.tar.xz', inputs.salt-version, matrix.arch) - || - format('--arch={0}', matrix.arch) - }} - - - name: Set Artifact Name - id: set-artifact-name - run: | - if [ "${{ inputs.source }}" != "src" ]; then - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-rpm" >> "$GITHUB_OUTPUT" - else - echo "artifact-name=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-rpm-from-src" >> "$GITHUB_OUTPUT" - fi - - - name: Upload RPMs - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.artifact-name }} - path: ~/rpmbuild/RPMS/${{ matrix.arch }}/*.rpm - retention-days: 7 - if-no-files-found: error diff --git a/.github/workflows/build-salt-onedir-linux.yml b/.github/workflows/build-salt-onedir-linux.yml deleted file mode 100644 index a7e197b7..00000000 --- a/.github/workflows/build-salt-onedir-linux.yml +++ /dev/null @@ -1,90 +0,0 @@ ---- -name: Build Salt Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-salt-linux: - name: Linux - if: ${{ inputs.self-hosted-runners }} - strategy: - fail-fast: false - matrix: - arch: - - x86_64 - - aarch64 - runs-on: - - self-hosted - - linux - - ${{ matrix.arch }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-salt-onedir-windows - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Setup Relenv - uses: ./.github/actions/setup-relenv - id: setup-relenv - with: - platform: linux - arch: ${{ matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Install Salt into Relenv Onedir - uses: ./.github/actions/build-onedir-salt - with: - platform: linux - arch: ${{ matrix.arch }} - salt-version: "${{ inputs.salt-version }}" - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-salt-onedir-macos.yml b/.github/workflows/build-salt-onedir-macos.yml deleted file mode 100644 index 3697e51e..00000000 --- a/.github/workflows/build-salt-onedir-macos.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -name: Build Salt Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-salt-macos: - name: macOS - if: ${{ inputs.github-hosted-runners }} - strategy: - fail-fast: false - max-parallel: 2 - matrix: - arch: - - x86_64 - - aarch64 - runs-on: - - ${{ matrix.arch == 'aarch64' && 'macos-13-xlarge' || 'macos-12' }} - - steps: - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Setup Relenv - id: setup-relenv - uses: ./.github/actions/setup-relenv - with: - platform: darwin - arch: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-salt-onedir-macos - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Install Salt into Relenv Onedir - uses: ./.github/actions/build-onedir-salt - with: - platform: darwin - arch: ${{ matrix.arch }} - salt-version: "${{ inputs.salt-version }}" - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-salt-onedir-windows.yml b/.github/workflows/build-salt-onedir-windows.yml deleted file mode 100644 index aba0b424..00000000 --- a/.github/workflows/build-salt-onedir-windows.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -name: Build Salt Onedir - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages. - github-hosted-runners: - type: boolean - required: true - self-hosted-runners: - type: boolean - required: true - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - relenv-version: - required: true - type: string - description: The version of relenv to use - python-version: - required: true - type: string - description: The version of python to use with relenv - -env: - RELENV_DATA: "${{ github.workspace }}/.relenv" - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-salt-windows: - name: Windows - if: ${{ inputs.github-hosted-runners }} - strategy: - fail-fast: false - max-parallel: 2 - matrix: - arch: - - x86 - - amd64 - runs-on: windows-latest - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Setup Relenv - id: setup-relenv - uses: ./.github/actions/setup-relenv - with: - platform: windows - arch: ${{ matrix.arch }} - version: ${{ inputs.relenv-version }} - cache-seed: ${{ inputs.cache-seed }} - python-version: ${{ inputs.python-version }} - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-seed }}-build-salt-onedir-macos - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Install Salt into Relenv Onedir - uses: ./.github/actions/build-onedir-salt - with: - platform: windows - arch: ${{ matrix.arch }} - salt-version: "${{ inputs.salt-version }}" - python-version: "${{ inputs.python-version }}" - cache-prefix: ${{ inputs.cache-seed }}|relenv|${{ steps.setup-relenv.outputs.version }} diff --git a/.github/workflows/build-windows-packages.yml b/.github/workflows/build-windows-packages.yml deleted file mode 100644 index 5e8e4663..00000000 --- a/.github/workflows/build-windows-packages.yml +++ /dev/null @@ -1,164 +0,0 @@ ---- -name: Build Windows Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version to set prior to building packages - relenv-version: - type: string - required: true - description: The relenv version to set prior to building packages. - python-version: - required: true - type: string - description: The version of python to use with relenv - sign-packages: - type: boolean - default: false - description: Sign Packages - environment: - type: string - description: The GitHub Environment where this workflow should run - default: ci - source: - required: true - type: string - description: The backend to build the packages with - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - build-pkgs: - name: Windows - environment: ${{ inputs.environment }} - strategy: - fail-fast: false - max-parallel: 2 - matrix: - arch: - - x86 - - amd64 - source: - - ${{ inputs.source }} - - runs-on: - - windows-latest - env: - SM_HOST: "${{ secrets.WIN_SIGN_HOST_PROD }}" - SM_API_KEY: "${{ secrets.WIN_SIGN_API_KEY }}" - SM_CLIENT_CERT_FILE: "D:\\Certificate_pkcs12.p12" - SM_CLIENT_CERT_PASSWORD: "${{ secrets.WIN_SIGN_CERT_PASSWORD }}" - SM_CLIENT_CERT_FILE_B64: "${{ secrets.WIN_SIGN_CERT_FILE_B64 }}" - WIN_SIGN_CERT_SHA1_HASH: "${{ secrets.WIN_SIGN_CERT_SHA1_HASH }}" - - steps: - - name: Check Package Signing Enabled - shell: bash - id: check-pkg-sign - run: | - if [ "${{ inputs.sign-packages }}" == "true" ]; then - if [ "${{ (secrets.WIN_SIGN_API_KEY != '' && env.SM_HOST != '' && inputs.environment == 'staging') && 'true' || 'false' }}" != "true" ]; then - MSG="Secrets for signing packages are not available. The packages created will NOT be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=false" >> "$GITHUB_OUTPUT" - else - MSG="The packages created WILL be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=true" >> "$GITHUB_OUTPUT" - fi - else - MSG="The sign-packages input is false. The packages created will NOT be signed." - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "sign-pkgs=false" >> "$GITHUB_OUTPUT" - fi - - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-windows-${{ matrix.arch }}.zip - path: artifacts/ - - - name: Code signing with Software Trust Manager - if: ${{ steps.check-pkg-sign.outputs.sign-pkgs == 'true' }} - uses: digicert/ssm-code-signing@v0.0.2 - - - name: Setup Certificate - if: ${{ steps.check-pkg-sign.outputs.sign-pkgs == 'true' }} - shell: bash - run: | - echo "${{ secrets.WIN_SIGN_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12 - - - name: Build Windows Packages - run: | - tools pkg build windows --relenv-version=${{ inputs.relenv-version }} --python-version=${{ inputs.python-version }} ${{ - inputs.source == 'onedir' && - format( - '--onedir salt-{0}-onedir-windows-{1}.zip --salt-version {0} --arch {1} {2}', - inputs.salt-version, - matrix.arch, - steps.check-pkg-sign.outputs.sign-pkgs == 'true' && '--sign' || '' - ) - || - format('--salt-version {0} --arch {1}', inputs.salt-version, matrix.arch) - }} - - - name: Set Artifact Name - id: set-artifact-name - shell: bash - run: | - if [ "${{ inputs.source }}" != "src" ]; then - echo "artifact-name-nsis=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-NSIS" >> "$GITHUB_OUTPUT" - echo "artifact-name-msi=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-MSI" >> "$GITHUB_OUTPUT" - else - echo "artifact-name-nsis=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-NSIS-from-src" >> "$GITHUB_OUTPUT" - echo "artifact-name-msi=salt-${{ inputs.salt-version }}-${{ matrix.arch }}-MSI-from-src" >> "$GITHUB_OUTPUT" - fi - - - name: Upload ${{ matrix.arch }} NSIS Packages - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.artifact-name-nsis }} - path: pkg/windows/build/Salt-*.exe - retention-days: 7 - if-no-files-found: error - - - name: Upload ${{ matrix.arch }} MSI Package - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.artifact-name-msi }} - path: pkg/windows/build/Salt-*.msi - retention-days: 7 - if-no-files-found: error diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 86002b2e..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,3128 +0,0 @@ -# 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" - -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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - outputs: - jobs: ${{ steps.define-jobs.outputs.jobs }} - runners: ${{ steps.runner-types.outputs.runners }} - changed-files: ${{ steps.process-changed-files.outputs.changed-files }} - pull-labels: ${{ steps.get-pull-labels.outputs.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 }} - 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@v2 - 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/** - - *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@v4 - 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: 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: Check Defined Runners - run: | - echo '${{ steps.runner-types.outputs.runners }}' | jq -C '.' - - - name: Define Jobs - id: define-jobs - run: | - tools ci define-jobs ${{ github.event_name }} changed-files.json - - - name: Check Defined Jobs - run: | - echo '${{ steps.define-jobs.outputs.jobs }}' | jq -C '.' - - - 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: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - echo '${{ steps.get-testing-releases.outputs.testing-releases }}' | jq -C '.' - - - name: Define Testrun - id: define-testrun - run: | - tools ci define-testrun ${{ github.event_name }} changed-files.json - - - name: Check Defined Test Run - run: | - echo '${{ steps.define-testrun.outputs.testrun }}' | jq -C '.' - - - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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-linux: - 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-linux.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-windows: - 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-windows.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-macos: - 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-macos.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-linux: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-linux - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-linux.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-windows: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-windows - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-windows.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-macos: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-macos - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-macos.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.14.2" - python-version: "3.10.13" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-windows-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-windows-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-macos-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-macos-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - windows-2016-ci-deps: - name: Windows 2016 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2016 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2019-ci-deps: - name: Windows 2019 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2019 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2022-ci-deps: - name: Windows 2022 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2022 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - macos-12-ci-deps: - name: macOS 12 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-ci-deps: - name: macOS 13 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-xlarge-ci-deps: - name: macOS 13 Arm64 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - - almalinux-8-ci-deps: - name: Alma Linux 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-8-arm64-ci-deps: - name: Alma Linux 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - almalinux-9-ci-deps: - name: Alma Linux 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-9-arm64-ci-deps: - name: Alma Linux 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2-ci-deps: - name: Amazon Linux 2 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2-arm64-ci-deps: - name: Amazon Linux 2 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2023-ci-deps: - name: Amazon Linux 2023 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2023-arm64-ci-deps: - name: Amazon Linux 2023 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - archlinux-lts-ci-deps: - name: Arch Linux LTS 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: archlinux-lts - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-ci-deps: - name: CentOS 7 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-arm64-ci-deps: - name: CentOS 7 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-8-ci-deps: - name: CentOS Stream 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-8-arm64-ci-deps: - name: CentOS Stream 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-9-ci-deps: - name: CentOS Stream 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-9-arm64-ci-deps: - name: CentOS Stream 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-10-ci-deps: - name: Debian 10 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-10 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-ci-deps: - name: Debian 11 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-arm64-ci-deps: - name: Debian 11 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-12-ci-deps: - name: Debian 12 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-12-arm64-ci-deps: - name: Debian 12 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-37-ci-deps: - name: Fedora 37 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-37-arm64-ci-deps: - name: Fedora 37 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-38-ci-deps: - name: Fedora 38 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-38-arm64-ci-deps: - name: Fedora 38 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - opensuse-15-ci-deps: - name: Opensuse 15 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: opensuse-15 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-ci-deps: - name: Photon OS 3 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-arm64-ci-deps: - name: Photon OS 3 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-4-ci-deps: - name: Photon OS 4 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-4-arm64-ci-deps: - name: Photon OS 4 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-5-ci-deps: - name: Photon OS 5 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-5-arm64-ci-deps: - name: Photon OS 5 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2004-ci-deps: - name: Ubuntu 20.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2004-arm64-ci-deps: - name: Ubuntu 20.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2204-ci-deps: - name: Ubuntu 22.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2204-arm64-ci-deps: - name: Ubuntu 22.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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-rpm-pkgs-onedir - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centos-7-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-8-pkg-tests: - name: CentOS Stream 8 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-8-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-pkg-tests: - name: CentOS Stream 9 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-arm64-pkg-tests: - name: CentOS Stream 9 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - debian-10-pkg-tests: - name: Debian 10 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-10-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-pkg-tests: - name: Photon OS 3 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-arm64-pkg-tests: - name: Photon OS 3 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-5-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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-rpm-pkgs-onedir - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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-macos-pkgs-onedir - - macos-12-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - macos-13-xlarge-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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - windows-2016-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - windows-2019-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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 - - windows-2022-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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 - - macos-12-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - macos-13-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - macos-13-xlarge: - name: macOS 13 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-8: - name: Alma Linux 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-9: - name: Alma Linux 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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 - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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 - - archlinux-lts-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - centos-7-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-8: - name: CentOS Stream 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-9: - name: CentOS Stream 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - debian-10: - name: Debian 10 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - debian-10-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - debian-11-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - debian-12-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-37: - name: Fedora 37 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-37-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-37 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-38: - name: Fedora 38 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-38-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-38 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - opensuse-15-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3: - name: Photon OS 3 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3-arm64: - name: Photon OS 3 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - photonos-4-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - photonos-5-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - workflow-slug: ci - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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 - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }} - skip-junit-reports: ${{ github.event_name == 'pull_request' }} - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - if: ${{ github.event.repository.private == false }} - uses: actions/setup-python@v4 - 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: Get coverage reports - id: get-coverage-reports - uses: actions/download-artifact@v3 - 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 - 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@v3 - 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@v3 - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - - pre-commit - - lint - - build-docs - - build-deps-onedir-linux - - build-deps-onedir-windows - - build-deps-onedir-macos - - build-salt-onedir-linux - - build-salt-onedir-windows - - build-salt-onedir-macos - - build-rpm-pkgs-src - - build-deb-pkgs-src - - build-windows-pkgs-src - - build-macos-pkgs-src - - combine-all-code-coverage - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - - amazonlinux-2-pkg-tests - - amazonlinux-2-arm64-pkg-tests - - amazonlinux-2023-pkg-tests - - amazonlinux-2023-arm64-pkg-tests - - centos-7-pkg-tests - - centosstream-8-pkg-tests - - centosstream-9-pkg-tests - - centosstream-9-arm64-pkg-tests - - debian-10-pkg-tests - - debian-11-pkg-tests - - debian-11-arm64-pkg-tests - - debian-12-pkg-tests - - debian-12-arm64-pkg-tests - - photonos-3-pkg-tests - - photonos-3-arm64-pkg-tests - - photonos-4-pkg-tests - - photonos-4-arm64-pkg-tests - - photonos-5-pkg-tests - - photonos-5-arm64-pkg-tests - - ubuntu-2004-pkg-tests - - ubuntu-2004-arm64-pkg-tests - - ubuntu-2204-pkg-tests - - ubuntu-2204-arm64-pkg-tests - - macos-12-pkg-tests - - macos-13-pkg-tests - - macos-13-xlarge-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: technote-space/workflow-conclusion-action@v3 - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/lint-action.yml b/.github/workflows/lint-action.yml deleted file mode 100644 index 347ddd29..00000000 --- a/.github/workflows/lint-action.yml +++ /dev/null @@ -1,105 +0,0 @@ ---- -name: Lint - -on: - workflow_call: - inputs: - changed-files: - required: true - type: string - description: JSON string containing information about changed files - - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -jobs: - Salt: - name: Lint Salt's Source Code - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "large", "x86_64"]') || 'ubuntu-latest' }} - if: ${{ contains(fromJSON('["push", "schedule", "workflow_dispatch"]'), github.event_name) || fromJSON(inputs.changed-files)['salt'] || fromJSON(inputs.changed-files)['lint'] }} - - container: - image: ghcr.io/saltstack/salt-ci-containers/python:3.8 - - steps: - - name: Install System Deps - run: | - apt-get update - apt-get install -y enchant-2 git gcc make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev - - - name: Add Git Safe Directory - run: | - git config --global --add safe.directory "$(pwd)" - - - uses: actions/checkout@v4 - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Python Requirements - run: - nox --install-only --forcecolor -e lint-salt - - - name: Lint Changed Files - if: github.event_name == 'pull_request' && fromJSON(inputs.changed-files)['salt'] && ! fromJSON(inputs.changed-files)['lint'] - env: - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --forcecolor -e lint-salt -- ${{ join(fromJSON(inputs.changed-files)['salt_files'], ' ') }} - - - name: Lint ALL Files - if: github.event_name != 'pull_request' || fromJSON(inputs.changed-files)['lint'] - env: - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --forcecolor -e lint-salt - - - Tests: - name: Lint Salt's Test Suite - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "large", "x86_64"]') || 'ubuntu-latest' }} - if: ${{ contains(fromJSON('["push", "schedule", "workflow_dispatch"]'), github.event_name) || fromJSON(inputs.changed-files)['tests'] || fromJSON(inputs.changed-files)['lint'] }} - - container: - image: ghcr.io/saltstack/salt-ci-containers/python:3.8 - - steps: - - name: Install System Deps - run: | - echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/sources.list - apt-get update - apt-get install -y enchant-2 git gcc make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev - - - name: Add Git Safe Directory - run: | - git config --global --add safe.directory "$(pwd)" - - - uses: actions/checkout@v4 - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Python Requirements - run: - nox --install-only --forcecolor -e lint-tests - - - name: Lint Changed Files - if: github.event_name == 'pull_request' && fromJSON(inputs.changed-files)['tests'] && ! fromJSON(inputs.changed-files)['lint'] - env: - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --forcecolor -e lint-tests -- ${{ join(fromJSON(inputs.changed-files)['tests_files'], ' ') }} - - - name: Lint ALL Files - if: github.event_name != 'pull_request' || fromJSON(inputs.changed-files)['lint'] - env: - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --forcecolor -e lint-tests diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml deleted file mode 100644 index 39c17c49..00000000 --- a/.github/workflows/nightly.yml +++ /dev/null @@ -1,4073 +0,0 @@ -# Do not edit these workflows directly as the changes made will be overwritten. -# Instead, edit the template '.github/workflows/templates/nightly.yml.jinja' ---- - -name: Nightly -run-name: "Nightly (branch: ${{ github.ref_name }})" - -on: - workflow_dispatch: - inputs: - skip-salt-test-suite: - type: boolean - default: false - description: Skip running the Salt test suite. - skip-salt-pkg-test-suite: - type: boolean - default: false - description: Skip running the Salt packages test suite. - schedule: - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule - - cron: '0 0 * * *' # Every day at 0AM - -env: - COLUMNS: 190 - CACHE_SEED: SEED-2 # Bump the number to invalidate all caches - RELENV_DATA: "${{ github.workspace }}/.relenv" - -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: write # to trigger branch nightly builds - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: false - -jobs: - - workflow-requirements: - name: Check Workflow Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - outputs: - requirements-met: ${{ steps.check-requirements.outputs.requirements-met }} - steps: - - name: Check Requirements - id: check-requirements - run: | - if [ "${{ vars.RUN_SCHEDULED_BUILDS }}" = "1" ]; then - MSG="Running workflow because RUN_SCHEDULED_BUILDS=1" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - elif [ "${{ github.event.repository.fork }}" = "true" ]; then - MSG="Not running workflow because ${{ github.repository }} is a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=false" >> "${GITHUB_OUTPUT}" - else - MSG="Running workflow because ${{ github.repository }} is not a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - fi - - trigger-branch-nightly-builds: - name: Trigger Branch Workflows - if: ${{ github.event_name == 'schedule' && fromJSON(needs.workflow-requirements.outputs.requirements-met) }} - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - workflow-requirements - steps: - - name: Trigger 3006.x branch - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh workflow run nightly.yml --repo ${{ github.repository }} --ref 3006.x - - prepare-workflow: - name: Prepare Workflow Run - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - if: ${{ fromJSON(needs.workflow-requirements.outputs.requirements-met) }} - needs: - - workflow-requirements - outputs: - jobs: ${{ steps.define-jobs.outputs.jobs }} - runners: ${{ steps.runner-types.outputs.runners }} - changed-files: ${{ steps.process-changed-files.outputs.changed-files }} - pull-labels: ${{ steps.get-pull-labels.outputs.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 }} - 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@v2 - 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/** - - *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@v4 - 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: 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: Check Defined Runners - run: | - echo '${{ steps.runner-types.outputs.runners }}' | jq -C '.' - - - name: Define Jobs - id: define-jobs - run: | - tools ci define-jobs${{ inputs.skip-salt-test-suite && ' --skip-tests' || '' }}${{ inputs.skip-salt-pkg-test-suite && ' --skip-pkg-tests' || '' }} ${{ github.event_name }} changed-files.json - - - name: Check Defined Jobs - run: | - echo '${{ steps.define-jobs.outputs.jobs }}' | jq -C '.' - - - 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: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - echo '${{ steps.get-testing-releases.outputs.testing-releases }}' | jq -C '.' - - - name: Define Testrun - id: define-testrun - run: | - tools ci define-testrun ${{ github.event_name }} changed-files.json - - - name: Check Defined Test Run - run: | - echo '${{ steps.define-testrun.outputs.testrun }}' | jq -C '.' - - - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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-linux: - 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-linux.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-windows: - 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-windows.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-macos: - 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-macos.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-linux: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-linux - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-linux.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-windows: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-windows - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-windows.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-macos: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-macos - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-macos.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.14.2" - python-version: "3.10.13" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-windows-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - environment: nightly - sign-packages: false - secrets: inherit - - build-windows-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - environment: nightly - sign-packages: false - secrets: inherit - - build-macos-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - environment: nightly - sign-packages: true - secrets: inherit - - build-macos-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - environment: nightly - sign-packages: true - secrets: inherit - - windows-2016-ci-deps: - name: Windows 2016 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2016 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2019-ci-deps: - name: Windows 2019 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2019 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2022-ci-deps: - name: Windows 2022 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2022 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - macos-12-ci-deps: - name: macOS 12 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-ci-deps: - name: macOS 13 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-xlarge-ci-deps: - name: macOS 13 Arm64 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - - almalinux-8-ci-deps: - name: Alma Linux 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-8-arm64-ci-deps: - name: Alma Linux 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - almalinux-9-ci-deps: - name: Alma Linux 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-9-arm64-ci-deps: - name: Alma Linux 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2-ci-deps: - name: Amazon Linux 2 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2-arm64-ci-deps: - name: Amazon Linux 2 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2023-ci-deps: - name: Amazon Linux 2023 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2023-arm64-ci-deps: - name: Amazon Linux 2023 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - archlinux-lts-ci-deps: - name: Arch Linux LTS 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: archlinux-lts - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-ci-deps: - name: CentOS 7 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-arm64-ci-deps: - name: CentOS 7 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-8-ci-deps: - name: CentOS Stream 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-8-arm64-ci-deps: - name: CentOS Stream 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-9-ci-deps: - name: CentOS Stream 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-9-arm64-ci-deps: - name: CentOS Stream 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-10-ci-deps: - name: Debian 10 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-10 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-ci-deps: - name: Debian 11 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-arm64-ci-deps: - name: Debian 11 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-12-ci-deps: - name: Debian 12 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-12-arm64-ci-deps: - name: Debian 12 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-37-ci-deps: - name: Fedora 37 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-37-arm64-ci-deps: - name: Fedora 37 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-38-ci-deps: - name: Fedora 38 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-38-arm64-ci-deps: - name: Fedora 38 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - opensuse-15-ci-deps: - name: Opensuse 15 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: opensuse-15 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-ci-deps: - name: Photon OS 3 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-arm64-ci-deps: - name: Photon OS 3 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-4-ci-deps: - name: Photon OS 4 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-4-arm64-ci-deps: - name: Photon OS 4 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-5-ci-deps: - name: Photon OS 5 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-5-arm64-ci-deps: - name: Photon OS 5 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2004-ci-deps: - name: Ubuntu 20.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2004-arm64-ci-deps: - name: Ubuntu 20.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2204-ci-deps: - name: Ubuntu 22.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2204-arm64-ci-deps: - name: Ubuntu 22.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-rpm-pkgs-onedir - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centos-7-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-8-pkg-tests: - name: CentOS Stream 8 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-8-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-pkg-tests: - name: CentOS Stream 9 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-arm64-pkg-tests: - name: CentOS Stream 9 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - debian-10-pkg-tests: - name: Debian 10 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-10-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-pkg-tests: - name: Photon OS 3 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-arm64-pkg-tests: - name: Photon OS 3 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-5-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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-rpm-pkgs-onedir - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-macos-pkgs-onedir - - macos-12-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - macos-13-xlarge-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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - windows-2016-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - windows-2019-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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 - - windows-2022-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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 - - macos-12-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - macos-13-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - macos-13-xlarge: - name: macOS 13 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-8: - name: Alma Linux 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-9: - name: Alma Linux 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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 - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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 - - archlinux-lts-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - centos-7-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-8: - name: CentOS Stream 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-9: - name: CentOS Stream 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - debian-10: - name: Debian 10 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - debian-10-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - debian-11-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - debian-12-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-37: - name: Fedora 37 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-37-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-37 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-38: - name: Fedora 38 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-38-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-38 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - opensuse-15-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3: - name: Photon OS 3 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3-arm64: - name: Photon OS 3 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - photonos-4-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - photonos-5-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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 - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: nightly - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - if: ${{ github.event.repository.private == false }} - uses: actions/setup-python@v4 - 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: Get coverage reports - id: get-coverage-reports - uses: actions/download-artifact@v3 - 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 - 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@v3 - 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@v3 - 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@v3 - with: - name: code-coverage-full-html-report - path: artifacts/coverage/html/full - retention-days: 7 - if-no-files-found: error - - build-src-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-source-tarball - strategy: - fail-fast: false - matrix: - pkg-type: - - src - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Source Tarball - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create src --key-id=64CBBC8173D76B3F --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Copy Files For Source Only Artifact Uploads - run: | - mkdir artifacts/src - find artifacts/pkgs/repo -type f -print -exec cp {} artifacts/src \; - - - name: Upload Standalone Repository As An Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-src-repo - path: | - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.* - artifacts/src/*-GPG-* - retention-days: 7 - if-no-files-found: error - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: src-repo - - build-deb-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-deb-pkgs-onedir - strategy: - fail-fast: false - matrix: - include: - - pkg-type: deb - distro: debian - version: "10" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "10" - arch: aarch64 - - pkg-type: deb - distro: debian - version: "11" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "11" - arch: aarch64 - - pkg-type: deb - distro: debian - version: "12" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "12" - arch: aarch64 - - pkg-type: deb - distro: ubuntu - version: "20.04" - arch: x86_64 - - pkg-type: deb - distro: ubuntu - version: "20.04" - arch: aarch64 - - pkg-type: deb - distro: ubuntu - version: "22.04" - arch: x86_64 - - pkg-type: deb - distro: ubuntu - version: "22.04" - arch: aarch64 - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y devscripts apt-utils - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download DEB Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch }}-deb - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create deb --key-id=64CBBC8173D76B3F --distro-arch=${{ matrix.arch }} --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo - - build-rpm-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - strategy: - fail-fast: false - matrix: - include: - - pkg-type: rpm - distro: amazon - version: "2" - arch: x86_64 - - pkg-type: rpm - distro: amazon - version: "2" - arch: arm64 - - pkg-type: rpm - distro: amazon - version: "2" - arch: aarch64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: x86_64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: arm64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "3" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "3" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "3" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "4" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "4" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "4" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "5" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "5" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "5" - arch: aarch64 - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y rpm - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download RPM Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}-rpm - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo create rpm --key-id=64CBBC8173D76B3F --distro-arch=${{ matrix.arch }} --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo - - build-windows-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-windows-pkgs-onedir - strategy: - fail-fast: false - matrix: - pkg-type: - - windows - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Windows NSIS x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-MSI - path: artifacts/pkgs/incoming - - - name: Download Windows NSIS amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-MSI - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create windows --key-id=64CBBC8173D76B3F --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: windows-repo - - build-macos-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-macos-pkgs-onedir - strategy: - fail-fast: false - matrix: - pkg-type: - - macos - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download macOS x86_64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86_64-macos - path: artifacts/pkgs/incoming - - - name: Download macOS Arch64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-aarch64-macos - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create macos --key-id=64CBBC8173D76B3F --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: macos-repo - - build-onedir-repo: - name: Build Repository - environment: nightly - runs-on: - - self-hosted - - linux - - repo-nightly - needs: - - prepare-workflow - - build-salt-onedir-linux - - build-salt-onedir-macos - - build-salt-onedir-windows - strategy: - fail-fast: false - matrix: - pkg-type: - - onedir - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Linux x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Linux aarch64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS arm64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.zip - path: artifacts/pkgs/incoming - - - name: Download Windows x86 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.zip - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create onedir --key-id=64CBBC8173D76B3F --nightly-build-from=${{ github.ref_name }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: onedir-repo - - publish-repositories: - name: Publish Repositories - if: ${{ always() && ! failure() && ! cancelled() }} - runs-on: - - self-hosted - - linux - - repo-nightly - environment: nightly - needs: - - prepare-workflow - - build-src-repo - - build-deb-repo - - build-rpm-repo - - build-windows-repo - - build-macos-repo - - build-onedir-repo - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - - steps: - - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Download Repository Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-nightly-repo - path: repo/ - - - name: Decompress Repository Artifacts - run: | - find repo/ -type f -name '*.tar.gz' -print -exec tar xvf {} \; - find repo/ -type f -name '*.tar.gz' -print -exec rm -f {} \; - - - name: Show Repository - run: | - tree -a artifacts/pkgs/repo/ - - - name: Upload Repository Contents (nightly) - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo publish nightly --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} artifacts/pkgs/repo/ - - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: nightly - needs: - - workflow-requirements - - trigger-branch-nightly-builds - - prepare-workflow - - pre-commit - - lint - - build-docs - - build-deps-onedir-linux - - build-deps-onedir-windows - - build-deps-onedir-macos - - build-salt-onedir-linux - - build-salt-onedir-windows - - build-salt-onedir-macos - - build-rpm-pkgs-src - - build-deb-pkgs-src - - build-windows-pkgs-src - - build-macos-pkgs-src - - combine-all-code-coverage - - publish-repositories - - amazonlinux-2-pkg-tests - - amazonlinux-2-arm64-pkg-tests - - amazonlinux-2023-pkg-tests - - amazonlinux-2023-arm64-pkg-tests - - centos-7-pkg-tests - - centosstream-8-pkg-tests - - centosstream-9-pkg-tests - - centosstream-9-arm64-pkg-tests - - debian-10-pkg-tests - - debian-11-pkg-tests - - debian-11-arm64-pkg-tests - - debian-12-pkg-tests - - debian-12-arm64-pkg-tests - - photonos-3-pkg-tests - - photonos-3-arm64-pkg-tests - - photonos-4-pkg-tests - - photonos-4-arm64-pkg-tests - - photonos-5-pkg-tests - - photonos-5-arm64-pkg-tests - - ubuntu-2004-pkg-tests - - ubuntu-2004-arm64-pkg-tests - - ubuntu-2204-pkg-tests - - ubuntu-2204-arm64-pkg-tests - - macos-12-pkg-tests - - macos-13-pkg-tests - - macos-13-xlarge-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: technote-space/workflow-conclusion-action@v3 - - - name: Notify Slack - id: slack - if: always() - uses: slackapi/slack-github-action@v1.24.0 - with: - payload: | - { - "attachments": [ - { - "fallback": "${{ github.workflow }} Workflow build result for the `${{ github.ref_name }}` branch(attempt: ${{ github.run_attempt }}): `${{ steps.get-workflow-info.outputs.conclusion }}`\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", - "color": "${{ steps.get-workflow-info.outputs.conclusion != 'success' && 'ff3d00' || '00e676' }}", - "fields": [ - { - "title": "Workflow", - "short": true, - "value": "${{ github.workflow }}", - "type": "mrkdwn" - }, - { - "title": "Workflow Run", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>", - "type": "mrkdwn" - }, - { - "title": "Branch", - "short": true, - "value": "${{ github.ref_name }}", - "type": "mrkdwn" - }, - { - "title": "Commit", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>", - "type": "mrkdwn" - }, - { - "title": "Attempt", - "short": true, - "value": "${{ github.run_attempt }}", - "type": "mrkdwn" - }, - { - "title": "Status", - "short": true, - "value": "${{ steps.get-workflow-info.outputs.conclusion }}", - "type": "mrkdwn" - } - ], - "author_name": "${{ github.event.sender.login }}", - "author_link": "${{ github.event.sender.html_url }}", - "author_icon": "${{ github.event.sender.avatar_url }}" - } - ] - } - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..16819696 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,17 @@ +name: Pull Request or Push + +on: + push: + branches: + - 'main' # Run on pushes to main + tags-ignore: + - '*' # Ignore pushes to tags + pull_request: + +jobs: + call_central_workflow: + name: CI + uses: salt-extensions/central-artifacts/.github/workflows/ci.yml@main + permissions: + contents: write + pull-requests: read diff --git a/.github/workflows/pre-commit-action.yml b/.github/workflows/pre-commit-action.yml deleted file mode 100644 index 50b255b6..00000000 --- a/.github/workflows/pre-commit-action.yml +++ /dev/null @@ -1,73 +0,0 @@ ---- -name: Pre-Commit - -on: - workflow_call: - inputs: - changed-files: - required: true - type: string - description: JSON string containing information about changed files - pre-commit-version: - required: true - type: string - description: The pre-commit version to install - cache-seed: - required: true - type: string - description: Seed used to invalidate caches - -jobs: - Pre-Commit: - name: Run Pre-Commit Against Salt - - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - - container: - image: ghcr.io/saltstack/salt-ci-containers/python:3.10 - - env: - PRE_COMMIT_COLOR: always - - steps: - - - name: Install System Deps - run: | - apt-get update - apt-get install -y wget curl enchant-2 git gcc make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev rustc - - - name: Add Git Safe Directory - run: | - git config --global --add safe.directory "$(pwd)" - - - uses: actions/checkout@v4 - - uses: ./.github/actions/setup-actionlint - with: - cache-seed: ${{ inputs.cache-seed }} - - uses: ./.github/actions/setup-shellcheck - with: - cache-seed: ${{ inputs.cache-seed }} - - uses: ./.github/actions/setup-pre-commit - with: - version: ${{ inputs.pre-commit-version }} - cache-seed: ${{ inputs.cache-seed }} - - - name: Check ALL Files On Branch - if: github.event_name != 'pull_request' - env: - SKIP: lint-salt,lint-tests,remove-import-headers,pyupgrade - run: | - pre-commit run --show-diff-on-failure --color=always --all-files - - - name: Check Changed Files On PR - if: github.event_name == 'pull_request' && fromJSON(inputs.changed-files)['repo'] - env: - SKIP: lint-salt,lint-tests - GH_ACTIONS_ANNOTATE: "1" - run: | - pre-commit run --show-diff-on-failure --color=always --files ${{ join(fromJSON(inputs.changed-files)['repo_files'], ' ') }} - - - name: Check Docs On Deleted Files - if: github.event_name == 'pull_request' && fromJSON(inputs.changed-files)['deleted'] - run: | - pre-commit run --show-diff-on-failure --color=always check-docs --files ${{ join(fromJSON(inputs.changed-files)['deleted_files'], ' ') }} diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml deleted file mode 100644 index 2908fd96..00000000 --- a/.github/workflows/release-tag.yml +++ /dev/null @@ -1,83 +0,0 @@ ---- -name: Generate Tag and Github Release - -on: - workflow_dispatch: - inputs: - saltVersion: - description: 'Salt Version' - required: true - saltRepo: - description: 'Salt Repo' - default: saltstack/salt - saltBranch: - description: 'Salt Branch' - default: freeze - reTag: - description: 'Re Tag (Deletes tag and release)' - default: false - - -env: - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - - -permissions: - contents: read - -jobs: - GenerateTagRelease: - permissions: - contents: write # for dev-drprasad/delete-tag-and-release to delete tags or releases - name: Generate Tag and Github Release - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: dev-drprasad/delete-tag-and-release@v0.2.0 - if: github.event.inputs.reTag == 'true' - with: - delete_release: true # default: false - tag_name: v${{ github.event.inputs.saltVersion }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - uses: actions/checkout@v4 - with: - repository: ${{ github.event.inputs.saltRepo }} - ref: ${{ github.event.inputs.saltBranch }} - - name: Bump version and push tag - id: tag_version - uses: mathieudutour/github-tag-action@v5.6 - with: - create_annotated_tag: True - github_token: ${{ secrets.GITHUB_TOKEN }} - custom_tag: ${{ github.event.inputs.saltVersion }} - - - name: Set up Python 3.8 - uses: actions/setup-python@v4 - with: - python-version: 3.8 - - - uses: actions/checkout@v4 - - name: Install pypa/build - run: | - python -m pip install build --user - - name: Build a binary wheel and a source tarball - run: | - git fetch --tags origin - git checkout v${{ github.event.inputs.saltVersion }} - chmod 700 conf/cloud.*.d - chmod 600 conf/cloud - chmod 600 conf/cloud.profiles - chmod 600 conf/cloud.providers - python3 setup.py --ssh-packaging sdist - python -m build --sdist --outdir dist/ . - - name: Create a GitHub release - uses: ncipollo/release-action@v1 - with: - tag: ${{ steps.tag_version.outputs.new_tag }} - name: Release ${{ steps.tag_version.outputs.new_tag }} - body: | - WARNING: The tarball generated by GitHub will not have the correct version information when using a version not ending in .0 . Please use the tarball generated by SaltStack instead. See issue #41847 for more information. - Official Salt packages can be found at https://repo.saltproject.io/ - artifacts: dist/salt*.tar.gz diff --git a/.github/workflows/release-update-winrepo.yml b/.github/workflows/release-update-winrepo.yml deleted file mode 100644 index 417d0e6c..00000000 --- a/.github/workflows/release-update-winrepo.yml +++ /dev/null @@ -1,71 +0,0 @@ ---- -name: Update Winrepo - -on: - release: - types: [released] - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to set prior to building packages and staging the release. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - -permissions: - contents: read - -jobs: - update-winrepo: - name: Update Winrepo - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - steps: - - - name: Checkout Salt - uses: actions/checkout@v4 - with: - path: salt - - - name: Checkout WinRepo - uses: actions/checkout@v4 - with: - path: winrepo - repository: saltstack/salt-winrepo-ng - - - name: Set Up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Add Version to Minion Definition File - working-directory: salt - run: | - python .github/workflows/scripts/update_winrepo.py \ - --file ../winrepo/salt-minion.sls \ - --version ${{ inputs.salt-version || github.ref_name }} - - - name: Commit Changes - working-directory: winrepo - run: | - git status - git add . - git config user.name 'saltbot-open' - git config user.email 'saltbot-open@users.noreply.github.com' - git commit -m "Adding salt minion ${{ inputs.salt-version && format('v{0}', inputs.salt-version) || github.ref_name }}" - - - name: Create Pull Request - id: cpr - uses: peter-evans/create-pull-request@v5 - with: - path: winrepo - push-to-fork: saltbot-open/salt-winrepo-ng - token: ${{ secrets.SALTBOT_OPEN_SALT_WINREPO_NG }} - -# - name: Enable Pull Request Automerge -# if: steps.cpr.outputs.pull-request-operation == 'created' -# uses: peter-evans/enable-pull-request-automerge@v2 -# with: -# token: ${{ secrets.SALTBOT_OPEN_SALT_WINREPO_NG }} -# pull-request-number: ${{ steps.cpr.outputs.pull-request-number }} -# merge-method: squash diff --git a/.github/workflows/release-upload-virustotal.yml b/.github/workflows/release-upload-virustotal.yml deleted file mode 100644 index da13d83c..00000000 --- a/.github/workflows/release-upload-virustotal.yml +++ /dev/null @@ -1,53 +0,0 @@ ---- -name: Upload VirusTotal - -on: - release: - types: [released] - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to get from staging to upload to VirusTotal. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - -permissions: - contents: read - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - upload-virustotal: - name: Upload VirusTotal - environment: release - runs-on: - - self-hosted - - linux - - repo-release - steps: - - - name: Checkout Salt - uses: actions/checkout@v4 - - - name: Set Up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: virus-total - - - name: Upload to VirusTotal - env: - VIRUSTOTAL_API_KEY: ${{ secrets.VIRUSTOTAL_API_KEY }} - run: | - tools release upload-virustotal ${{ inputs.salt-version || github.ref_name }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index fd6cbda5..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,1192 +0,0 @@ -# Do not edit these workflows directly as the changes made will be overwritten. -# Instead, edit the template '.github/workflows/templates/release.yml.jinja' ---- - -name: Release -run-name: "Release (branch: ${{ github.ref_name }}; version: ${{ inputs.salt-version }})" - -on: - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to get from staging to publish the release. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - skip-salt-pkg-download-test-suite: - type: boolean - default: false - description: Skip running the Salt packages download test suite. - -env: - COLUMNS: 190 - CACHE_SEED: SEED-2 # Bump the number to invalidate all caches - RELENV_DATA: "${{ github.workspace }}/.relenv" - -permissions: - contents: write # To be able to publish the release - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }} - cancel-in-progress: false - -jobs: - - check-requirements: - name: Check Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: release-check - steps: - - name: Check For Admin Permission - uses: actions-cool/check-user-permission@v2 - with: - require: admin - username: ${{ github.triggering_actor }} - - prepare-workflow: - name: Prepare Workflow Run - runs-on: - - self-hosted - - linux - - repo-release - environment: release - needs: - - check-requirements - outputs: - 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 }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full clone to also get the tags to get the right salt version - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "${{ inputs.salt-version }}" - validate-version: true - - - name: Check Existing Releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-unreleased --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - if [ "${{ github.event.repository.private }}" = "true" ]; then - tools pkg repo confirm-unreleased --repository saltstack/salt ${{ steps.setup-salt-version.outputs.salt-version }} - fi - - - name: Check Release Staged - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-staged --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - - - name: Get Salt Releases - id: get-salt-releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools ci get-releases - - - name: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - - - name: Set Cache Seed Output - id: set-cache-seed - run: | - tools ci define-cache-seed ${{ env.CACHE_SEED }} - - download-onedir-artifact: - name: Download Staging Onedir Artifact - runs-on: - - self-hosted - - linux - - repo-release - environment: release - needs: - - prepare-workflow - strategy: - fail-fast: false - matrix: - include: - - platform: linux - arch: x86_64 - - platform: linux - arch: aarch64 - - platform: windows - arch: amd64 - - platform: windows - arch: x86 - - platform: darwin - arch: x86_64 - - platform: darwin - arch: aarch64 - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Onedir Tarball Artifact - run: | - tools release download-onedir-artifact --platform=${{ matrix.platform }} --arch=${{ matrix.arch }} ${{ inputs.salt-version }} - - - name: Upload Onedir Tarball as an Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-${{ matrix.platform }}-${{ matrix.arch }}.tar.xz - path: artifacts/salt-${{ inputs.salt-version }}-onedir-${{ matrix.platform }}-${{ matrix.arch }}.tar.xz* - retention-days: 7 - if-no-files-found: error - - windows-2016-ci-deps: - name: Windows 2016 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2016 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2019-ci-deps: - name: Windows 2019 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2019 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2022-ci-deps: - name: Windows 2022 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2022 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - macos-12-ci-deps: - name: macOS 12 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-ci-deps: - name: macOS 13 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-xlarge-ci-deps: - name: macOS 13 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - - almalinux-8-ci-deps: - name: Alma Linux 8 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-8-arm64-ci-deps: - name: Alma Linux 8 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - almalinux-9-ci-deps: - name: Alma Linux 9 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-9-arm64-ci-deps: - name: Alma Linux 9 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2-ci-deps: - name: Amazon Linux 2 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2-arm64-ci-deps: - name: Amazon Linux 2 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2023-ci-deps: - name: Amazon Linux 2023 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2023-arm64-ci-deps: - name: Amazon Linux 2023 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - archlinux-lts-ci-deps: - name: Arch Linux LTS Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: archlinux-lts - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-ci-deps: - name: CentOS 7 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-arm64-ci-deps: - name: CentOS 7 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-8-ci-deps: - name: CentOS Stream 8 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-8-arm64-ci-deps: - name: CentOS Stream 8 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-9-ci-deps: - name: CentOS Stream 9 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-9-arm64-ci-deps: - name: CentOS Stream 9 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-10-ci-deps: - name: Debian 10 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-10 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-ci-deps: - name: Debian 11 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-arm64-ci-deps: - name: Debian 11 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-12-ci-deps: - name: Debian 12 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-12-arm64-ci-deps: - name: Debian 12 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-37-ci-deps: - name: Fedora 37 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-37-arm64-ci-deps: - name: Fedora 37 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-38-ci-deps: - name: Fedora 38 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-38-arm64-ci-deps: - name: Fedora 38 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - opensuse-15-ci-deps: - name: Opensuse 15 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: opensuse-15 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-ci-deps: - name: Photon OS 3 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-arm64-ci-deps: - name: Photon OS 3 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-4-ci-deps: - name: Photon OS 4 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-4-arm64-ci-deps: - name: Photon OS 4 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-5-ci-deps: - name: Photon OS 5 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-5-arm64-ci-deps: - name: Photon OS 5 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2004-ci-deps: - name: Ubuntu 20.04 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2004-arm64-ci-deps: - name: Ubuntu 20.04 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2204-ci-deps: - name: Ubuntu 22.04 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2204-arm64-ci-deps: - name: Ubuntu 22.04 Arm64 Deps - needs: - - prepare-workflow - - download-onedir-artifact - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - backup: - name: Backup - runs-on: - - self-hosted - - linux - - repo-release - needs: - - prepare-workflow - environment: release - outputs: - backup-complete: ${{ steps.backup.outputs.backup-complete }} - - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - - - name: Setup Rclone - uses: AnimMouse/setup-rclone@v1 - with: - version: v1.61.1 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Backup Previous Releases - id: backup - run: | - tools pkg repo backup-previous-releases - - publish-repositories: - name: Publish Repositories - runs-on: - - self-hosted - - linux - - repo-release - needs: - - prepare-workflow - - backup - - download-onedir-artifact - environment: release - - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Publish Release Repository - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo publish release ${{ needs.prepare-workflow.outputs.salt-version }} - - pkg-download-tests: - name: Package Downloads - if: ${{ inputs.skip-salt-pkg-download-test-suite == false }} - needs: - - prepare-workflow - - publish-repositories - - almalinux-8-arm64-ci-deps - - almalinux-8-ci-deps - - almalinux-9-arm64-ci-deps - - almalinux-9-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2023-arm64-ci-deps - - amazonlinux-2023-ci-deps - - centos-7-arm64-ci-deps - - centos-7-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-9-arm64-ci-deps - - centosstream-9-ci-deps - - debian-10-ci-deps - - debian-11-arm64-ci-deps - - debian-11-ci-deps - - debian-12-arm64-ci-deps - - debian-12-ci-deps - - fedora-37-arm64-ci-deps - - fedora-37-ci-deps - - fedora-38-arm64-ci-deps - - fedora-38-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - photonos-3-arm64-ci-deps - - photonos-3-ci-deps - - photonos-4-arm64-ci-deps - - photonos-4-ci-deps - - photonos-5-arm64-ci-deps - - photonos-5-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2204-arm64-ci-deps - - ubuntu-2204-ci-deps - - windows-2022-ci-deps - - download-onedir-artifact - uses: ./.github/workflows/test-package-downloads-action.yml - with: - nox-session: ci-test-onedir - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.13 - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - environment: release - nox-version: 2022.8.7 - python-version: "3.10" - skip-code-coverage: true - latest-release: "${{ needs.prepare-workflow.outputs.latest-release }}" - secrets: inherit - - release: - name: Release v${{ needs.prepare-workflow.outputs.salt-version }} - if: ${{ always() && ! failure() && ! cancelled() }} - runs-on: - - self-hosted - - linux - - repo-release - needs: - - prepare-workflow - - backup - - publish-repositories - - pkg-download-tests - environment: release - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - with: - ssh-key: ${{ secrets.GHA_SSH_KEY }} - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Prepare Release - id: prepare-release - run: | - tools pkg repo publish github --repository ${{ github.repository }} --key-id=64CBBC8173D76B3F ${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Configure Git - shell: bash - run: | - git config --global --add safe.directory "$(pwd)" - git config --global user.name "Salt Project Packaging" - git config --global user.email saltproject-packaging@vmware.com - git config --global user.signingkey 64CBBC8173D76B3F - git config --global commit.gpgsign true - - - name: Apply The Release Patch - run: | - git am --committer-date-is-author-date release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - rm release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - - - name: Tag The v${{ needs.prepare-workflow.outputs.salt-version }} Release - run: | - git tag -m "Release v${{ needs.prepare-workflow.outputs.salt-version }}" -as v${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Push Changes - uses: ad-m/github-push-action@b87afee92c6e70ea888be6203a3e9426fda49839 - with: - ssh: true - tags: true - atomic: true - branch: ${{ github.ref }} - - - name: Create Github Release - uses: ncipollo/release-action@v1.12.0 - with: - artifactErrorsFailBuild: true - artifacts: ${{ steps.prepare-release.outputs.release-artifacts }} - bodyFile: ${{ steps.prepare-release.outputs.release-messsage-file }} - draft: false - generateReleaseNotes: false - makeLatest: fromJSON(${{ steps.prepare-release.outputs.make-latest }}) - name: v${{ needs.prepare-workflow.outputs.salt-version }} - prerelease: ${{ contains(needs.prepare-workflow.outputs.salt-version, 'rc') }} - removeArtifacts: true - replacesArtifacts: true - tag: v${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Upload PyPi Artifacts - uses: actions/upload-artifact@v3 - with: - name: pypi-artifacts - path: | - release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.asc - retention-days: 7 - if-no-files-found: error - - publish-pypi: - name: Publish to PyPi - if: ${{ always() && ! failure() && ! cancelled() && github.event.repository.fork != true }} - needs: - - prepare-workflow - - release - environment: release - runs-on: - - self-hosted - - linux - - repo-release - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - TWINE_PASSWORD=$(aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/publishing/publish-pypi \ - --query SecretString --output text | jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "$SECRETS_KEY_FILE" -d -) - echo "::add-mask::$TWINE_PASSWORD" - echo "twine-password=$TWINE_PASSWORD" >> "${GITHUB_OUTPUT}" - - - name: Download PyPi Artifacts - uses: actions/download-artifact@v3 - with: - name: pypi-artifacts - path: artifacts/release - - - name: Publish to PyPi - env: - TWINE_PASSWORD: "${{ steps.get-secrets.outputs.twine-password }}" - run: | - tools pkg pypi-upload artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - check-requirements - - prepare-workflow - - publish-repositories - - pkg-download-tests - - release - - publish-pypi - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - steps: - - name: Get workflow information - id: get-workflow-info - uses: technote-space/workflow-conclusion-action@v3 - - - run: | - # shellcheck disable=SC2129 - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - echo 'To restore the release bucket run:' >> "${GITHUB_STEP_SUMMARY}" - echo '```' >> "${GITHUB_STEP_SUMMARY}" - echo 'tools pkg repo restore-previous-releases' >> "${GITHUB_STEP_SUMMARY}" - echo '```' >> "${GITHUB_STEP_SUMMARY}" - fi - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml deleted file mode 100644 index 5d28eca9..00000000 --- a/.github/workflows/scheduled.yml +++ /dev/null @@ -1,3164 +0,0 @@ -# Do not edit these workflows directly as the changes made will be overwritten. -# Instead, edit the template '.github/workflows/templates/scheduled.yml.jinja' ---- - -name: Scheduled -run-name: "Scheduled (branch: ${{ github.ref_name }})" - -on: - schedule: - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule - - cron: '0 */8 * * *' # Run every 8 hours - -env: - COLUMNS: 190 - CACHE_SEED: SEED-2 # Bump the number to invalidate all caches - RELENV_DATA: "${{ github.workspace }}/.relenv" - -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: write # to trigger branch scheduled builds - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: false - -jobs: - - workflow-requirements: - name: Check Workflow Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - outputs: - requirements-met: ${{ steps.check-requirements.outputs.requirements-met }} - steps: - - name: Check Requirements - id: check-requirements - run: | - if [ "${{ vars.RUN_SCHEDULED_BUILDS }}" = "1" ]; then - MSG="Running workflow because RUN_SCHEDULED_BUILDS=1" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - elif [ "${{ github.event.repository.fork }}" = "true" ]; then - MSG="Not running workflow because ${{ github.repository }} is a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=false" >> "${GITHUB_OUTPUT}" - else - MSG="Running workflow because ${{ github.repository }} is not a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - fi - - trigger-branch-scheduled-builds: - name: Trigger Branch Workflows - if: ${{ github.event_name == 'schedule' && fromJSON(needs.workflow-requirements.outputs.requirements-met) }} - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - workflow-requirements - steps: - - name: Trigger 3006.x branch - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh workflow run scheduled.yml --repo ${{ github.repository }} --ref 3006.x - - prepare-workflow: - name: Prepare Workflow Run - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - if: ${{ fromJSON(needs.workflow-requirements.outputs.requirements-met) }} - needs: - - workflow-requirements - outputs: - jobs: ${{ steps.define-jobs.outputs.jobs }} - runners: ${{ steps.runner-types.outputs.runners }} - changed-files: ${{ steps.process-changed-files.outputs.changed-files }} - pull-labels: ${{ steps.get-pull-labels.outputs.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 }} - 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@v2 - 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/** - - *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@v4 - 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: 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: Check Defined Runners - run: | - echo '${{ steps.runner-types.outputs.runners }}' | jq -C '.' - - - name: Define Jobs - id: define-jobs - run: | - tools ci define-jobs ${{ github.event_name }} changed-files.json - - - name: Check Defined Jobs - run: | - echo '${{ steps.define-jobs.outputs.jobs }}' | jq -C '.' - - - 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: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - echo '${{ steps.get-testing-releases.outputs.testing-releases }}' | jq -C '.' - - - name: Define Testrun - id: define-testrun - run: | - tools ci define-testrun ${{ github.event_name }} changed-files.json - - - name: Check Defined Test Run - run: | - echo '${{ steps.define-testrun.outputs.testrun }}' | jq -C '.' - - - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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-linux: - 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-linux.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-windows: - 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-windows.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-macos: - 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-macos.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-linux: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-linux - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-linux.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-windows: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-windows - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-windows.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-macos: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-macos - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-macos.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.14.2" - python-version: "3.10.13" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-windows-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-windows-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-macos-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-macos-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - windows-2016-ci-deps: - name: Windows 2016 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2016 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2019-ci-deps: - name: Windows 2019 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2019 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2022-ci-deps: - name: Windows 2022 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2022 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - macos-12-ci-deps: - name: macOS 12 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-ci-deps: - name: macOS 13 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-xlarge-ci-deps: - name: macOS 13 Arm64 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - - almalinux-8-ci-deps: - name: Alma Linux 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-8-arm64-ci-deps: - name: Alma Linux 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - almalinux-9-ci-deps: - name: Alma Linux 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-9-arm64-ci-deps: - name: Alma Linux 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2-ci-deps: - name: Amazon Linux 2 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2-arm64-ci-deps: - name: Amazon Linux 2 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2023-ci-deps: - name: Amazon Linux 2023 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2023-arm64-ci-deps: - name: Amazon Linux 2023 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - archlinux-lts-ci-deps: - name: Arch Linux LTS 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: archlinux-lts - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-ci-deps: - name: CentOS 7 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-arm64-ci-deps: - name: CentOS 7 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-8-ci-deps: - name: CentOS Stream 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-8-arm64-ci-deps: - name: CentOS Stream 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-9-ci-deps: - name: CentOS Stream 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-9-arm64-ci-deps: - name: CentOS Stream 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-10-ci-deps: - name: Debian 10 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-10 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-ci-deps: - name: Debian 11 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-arm64-ci-deps: - name: Debian 11 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-12-ci-deps: - name: Debian 12 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-12-arm64-ci-deps: - name: Debian 12 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-37-ci-deps: - name: Fedora 37 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-37-arm64-ci-deps: - name: Fedora 37 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-38-ci-deps: - name: Fedora 38 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-38-arm64-ci-deps: - name: Fedora 38 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - opensuse-15-ci-deps: - name: Opensuse 15 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: opensuse-15 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-ci-deps: - name: Photon OS 3 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-arm64-ci-deps: - name: Photon OS 3 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-4-ci-deps: - name: Photon OS 4 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-4-arm64-ci-deps: - name: Photon OS 4 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-5-ci-deps: - name: Photon OS 5 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-5-arm64-ci-deps: - name: Photon OS 5 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2004-ci-deps: - name: Ubuntu 20.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2004-arm64-ci-deps: - name: Ubuntu 20.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2204-ci-deps: - name: Ubuntu 22.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2204-arm64-ci-deps: - name: Ubuntu 22.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-rpm-pkgs-onedir - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centos-7-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-8-pkg-tests: - name: CentOS Stream 8 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-8-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-pkg-tests: - name: CentOS Stream 9 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-arm64-pkg-tests: - name: CentOS Stream 9 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - debian-10-pkg-tests: - name: Debian 10 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-10-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-pkg-tests: - name: Photon OS 3 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-arm64-pkg-tests: - name: Photon OS 3 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-5-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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-rpm-pkgs-onedir - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-macos-pkgs-onedir - - macos-12-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - macos-13-xlarge-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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - 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'] }} - needs: - - prepare-workflow - - windows-2016-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - windows-2019-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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 - - windows-2022-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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 - - macos-12-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - macos-13-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - macos-13-xlarge: - name: macOS 13 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-8: - name: Alma Linux 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-9: - name: Alma Linux 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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 - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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 - - archlinux-lts-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - centos-7-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-8: - name: CentOS Stream 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-9: - name: CentOS Stream 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - debian-10: - name: Debian 10 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - debian-10-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - debian-11-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - debian-12-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-37: - name: Fedora 37 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-37-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-37 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-38: - name: Fedora 38 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-38-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-38 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - opensuse-15-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3: - name: Photon OS 3 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3-arm64: - name: Photon OS 3 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - photonos-4-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - photonos-5-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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 - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: false - skip-junit-reports: false - workflow-slug: scheduled - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - if: ${{ github.event.repository.private == false }} - uses: actions/setup-python@v4 - 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: Get coverage reports - id: get-coverage-reports - uses: actions/download-artifact@v3 - 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 - 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@v3 - 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@v3 - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - workflow-requirements - - trigger-branch-scheduled-builds - - prepare-workflow - - pre-commit - - lint - - build-docs - - build-deps-onedir-linux - - build-deps-onedir-windows - - build-deps-onedir-macos - - build-salt-onedir-linux - - build-salt-onedir-windows - - build-salt-onedir-macos - - build-rpm-pkgs-src - - build-deb-pkgs-src - - build-windows-pkgs-src - - build-macos-pkgs-src - - combine-all-code-coverage - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - - amazonlinux-2-pkg-tests - - amazonlinux-2-arm64-pkg-tests - - amazonlinux-2023-pkg-tests - - amazonlinux-2023-arm64-pkg-tests - - centos-7-pkg-tests - - centosstream-8-pkg-tests - - centosstream-9-pkg-tests - - centosstream-9-arm64-pkg-tests - - debian-10-pkg-tests - - debian-11-pkg-tests - - debian-11-arm64-pkg-tests - - debian-12-pkg-tests - - debian-12-arm64-pkg-tests - - photonos-3-pkg-tests - - photonos-3-arm64-pkg-tests - - photonos-4-pkg-tests - - photonos-4-arm64-pkg-tests - - photonos-5-pkg-tests - - photonos-5-arm64-pkg-tests - - ubuntu-2004-pkg-tests - - ubuntu-2004-arm64-pkg-tests - - ubuntu-2204-pkg-tests - - ubuntu-2204-arm64-pkg-tests - - macos-12-pkg-tests - - macos-13-pkg-tests - - macos-13-xlarge-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: technote-space/workflow-conclusion-action@v3 - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/scripts/label-and-assign.py b/.github/workflows/scripts/label-and-assign.py deleted file mode 100644 index 631ad44f..00000000 --- a/.github/workflows/scripts/label-and-assign.py +++ /dev/null @@ -1,112 +0,0 @@ -import argparse -import datetime -import json -import operator -import os -import pathlib -import random -import sys - -import github -from github.GithubException import GithubException - -CACHE_FILENAME = pathlib.Path(".cache", "last-user-assigned") - - -def get_last_account_assigned(): - if not CACHE_FILENAME.exists(): - return - - try: - data = json.loads(CACHE_FILENAME.read_text()) - return data["username"] - except (ValueError, KeyError): - return - - -def get_team_members(options): - g = github.Github(os.environ["READ_ORG_TOKEN"]) - org = g.get_organization(options.org) - team = org.get_team_by_slug(options.team) - return sorted(list(team.get_members()), key=operator.attrgetter("login")) - - -def get_triage_next_account(options): - team_members = get_team_members(options) - last_account_assigned = get_last_account_assigned() - if last_account_assigned is None: - return random.choice(team_members) - - previous_account = None - for member in team_members: - if previous_account and previous_account.login == last_account_assigned: - return member - previous_account = member - else: - # The previously assigned account is not longer part of the team members - # or the team was switched - return random.choice(team_members) - - -def label_and_assign_issue(options): - g = github.Github(os.environ["GITHUB_TOKEN"]) - org = g.get_organization(options.org) - print(f"Loaded Organization: {org.login}", file=sys.stderr, flush=True) - repo = org.get_repo(options.repo) - print(f"Loaded Repository: {repo.full_name}", file=sys.stderr, flush=True) - issue = repo.get_issue(options.issue) - print(f"Loaded Issue: {issue}", file=sys.stderr, flush=True) - next_triage_account = get_triage_next_account(options) - print( - f"Next account up for triage: {next_triage_account.login}", - file=sys.stderr, - flush=True, - ) - print(f"Adding label {options.label} to {issue}", file=sys.stderr, flush=True) - issue.add_to_labels(options.label) - print( - f"Assigning {issue} to {next_triage_account.login}", file=sys.stderr, flush=True - ) - issue.add_to_assignees(next_triage_account) - CACHE_FILENAME.write_text( - json.dumps( - { - "username": next_triage_account.login, - "when": str(datetime.datetime.utcnow()), - } - ) - ) - print("Done!", file=sys.stderr, flush=True) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--org", required=True, help="The Github Organization") - parser.add_argument("--team", required=True, help="The Organization Team Slug") - parser.add_argument("--repo", required=True, help="The Organization Repository") - parser.add_argument("--issue", required=True, type=int, help="The issue number") - parser.add_argument("--label", required=True, help="The issue label to assign") - - if not os.environ.get("GITHUB_TOKEN"): - parser.exit(status=1, message="GITHUB_TOKEN environment variable not set") - if not os.environ.get("READ_ORG_TOKEN"): - parser.exit(status=1, message="READ_ORG_TOKEN environment variable not set") - - options = parser.parse_args() - print( - f"Last assignment cache file path: {CACHE_FILENAME}", - file=sys.stderr, - flush=True, - ) - if CACHE_FILENAME.parent.is_dir() is False: - CACHE_FILENAME.parent.mkdir() - - try: - label_and_assign_issue(options) - parser.exit(0) - except GithubException as exc: - parser.exit(1, message=str(exc)) - - -if __name__ == "__main__": - main() diff --git a/.github/workflows/scripts/update_winrepo.py b/.github/workflows/scripts/update_winrepo.py deleted file mode 100644 index c0f2d00f..00000000 --- a/.github/workflows/scripts/update_winrepo.py +++ /dev/null @@ -1,31 +0,0 @@ -import argparse -import os - -# Where are we -print(os.getcwd()) - -arg_parser = argparse.ArgumentParser() -arg_parser.add_argument("-f", "--file", help="the winrepo file to edit") -arg_parser.add_argument("-v", "--version", help="The version to add") - -args = arg_parser.parse_args() -file = args.file -version = args.version - -if version.startswith("v"): - version = version[1:] - -with open(file) as f: - current_contents = f.readlines() - -new_contents = [] - -added = False -for line in current_contents: - new_contents.append(line) - if "load_yaml as versions_relenv" in line and not added: - new_contents.append(f"- {version}\n") - added = True - -with open(file, "w") as f: - f.writelines(new_contents) diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml deleted file mode 100644 index 0e6d820a..00000000 --- a/.github/workflows/staging.yml +++ /dev/null @@ -1,4006 +0,0 @@ -# Do not edit these workflows directly as the changes made will be overwritten. -# Instead, edit the template '.github/workflows/templates/staging.yml.jinja' ---- - -name: Stage Release -run-name: "Stage Release (branch: ${{ github.ref_name }}; version: ${{ inputs.salt-version }})" - -on: - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to set prior to building packages and staging the release. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - sign-windows-packages: - type: boolean - default: false - description: Sign Windows Packages - skip-test-pypi-publish: - type: boolean - default: false - description: Skip publishing the source package to Test PyPi(For example, CVE releases) - skip-salt-test-suite: - type: boolean - default: false - description: Skip running the Salt test suite. - skip-salt-pkg-test-suite: - type: boolean - default: false - description: Skip running the Salt packages test suite. - skip-salt-pkg-download-test-suite: - type: boolean - default: false - description: Skip running the Salt packages download test suite. - -env: - COLUMNS: 190 - CACHE_SEED: SEED-2 # Bump the number to invalidate all caches - RELENV_DATA: "${{ github.workspace }}/.relenv" - -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: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }} - cancel-in-progress: false - -jobs: - - check-requirements: - name: Check Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: staging-check - steps: - - name: Check For Admin Permission - uses: actions-cool/check-user-permission@v2 - with: - require: admin - username: ${{ github.triggering_actor }} - - prepare-workflow: - name: Prepare Workflow Run - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - check-requirements - outputs: - jobs: ${{ steps.define-jobs.outputs.jobs }} - runners: ${{ steps.runner-types.outputs.runners }} - changed-files: ${{ steps.process-changed-files.outputs.changed-files }} - pull-labels: ${{ steps.get-pull-labels.outputs.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 }} - 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@v2 - 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/** - - *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@v4 - 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: "${{ inputs.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: Check Existing Releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-unreleased --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - if [ "${{ github.event.repository.private }}" = "true" ]; then - tools pkg repo confirm-unreleased --repository saltstack/salt ${{ steps.setup-salt-version.outputs.salt-version }} - fi - - - 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: Check Defined Runners - run: | - echo '${{ steps.runner-types.outputs.runners }}' | jq -C '.' - - - name: Define Jobs - id: define-jobs - run: | - tools ci define-jobs${{ inputs.skip-salt-test-suite && ' --skip-tests' || '' }}${{ inputs.skip-salt-pkg-test-suite && ' --skip-pkg-tests' || '' }}${{ inputs.skip-salt-pkg-download-test-suite && ' --skip-pkg-download-tests' || '' }} ${{ github.event_name }} changed-files.json - - - name: Check Defined Jobs - run: | - echo '${{ steps.define-jobs.outputs.jobs }}' | jq -C '.' - - - 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: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - echo '${{ steps.get-testing-releases.outputs.testing-releases }}' | jq -C '.' - - - name: Define Testrun - id: define-testrun - run: | - tools ci define-testrun ${{ github.event_name }} changed-files.json - - - name: Check Defined Test Run - run: | - echo '${{ steps.define-testrun.outputs.testrun }}' | jq -C '.' - - - 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@v3 - 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)['self-hosted'] }} - runs-on: - - self-hosted - - linux - - medium - - x86_64 - needs: - - prepare-workflow - steps: - - uses: actions/checkout@v4 - - - 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 }}" - release: true - - - 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 --release --next-release - tools changelog update-release-notes --release --next-release - else - tools changelog update-release-notes --draft --release - tools changelog update-release-notes --release - 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@v3 - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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-linux: - 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-linux.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-windows: - 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-windows.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.14.2" - python-version: "3.10.13" - - build-deps-onedir-macos: - 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-macos.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-linux: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-linux - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-linux.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-windows: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-windows - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-windows.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.14.2" - python-version: "3.10.13" - - build-salt-onedir-macos: - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-salt-onedir'] }} - needs: - - prepare-workflow - - build-deps-onedir-macos - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-macos.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.14.2" - python-version: "3.10.13" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-rpm-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-linux - uses: ./.github/workflows/build-rpm-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - - build-deb-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-linux - uses: ./.github/workflows/build-deb-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - - build-windows-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - environment: staging - sign-packages: ${{ inputs.sign-windows-packages }} - secrets: inherit - - build-windows-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-windows - uses: ./.github/workflows/build-windows-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - environment: staging - sign-packages: ${{ inputs.sign-windows-packages }} - secrets: inherit - - build-macos-pkgs-onedir: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "onedir" - environment: staging - sign-packages: true - secrets: inherit - - build-macos-pkgs-src: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-macos-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "0.14.2" - python-version: "3.10.13" - source: "src" - environment: staging - sign-packages: true - secrets: inherit - - windows-2016-ci-deps: - name: Windows 2016 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2016 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2019-ci-deps: - name: Windows 2019 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2019 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - windows-2022-ci-deps: - name: Windows 2022 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-windows - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: windows-2022 - nox-session: ci-test-onedir - platform: windows - arch: amd64 - 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.13 - - macos-12-ci-deps: - name: macOS 12 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-ci-deps: - name: macOS 13 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - arch: x86_64 - 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.13 - - macos-13-xlarge-ci-deps: - name: macOS 13 Arm64 Deps - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-salt-onedir-macos - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - - almalinux-8-ci-deps: - name: Alma Linux 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-8-arm64-ci-deps: - name: Alma Linux 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - almalinux-9-ci-deps: - name: Alma Linux 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - almalinux-9-arm64-ci-deps: - name: Alma Linux 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: almalinux-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2-ci-deps: - name: Amazon Linux 2 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2-arm64-ci-deps: - name: Amazon Linux 2 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - amazonlinux-2023-ci-deps: - name: Amazon Linux 2023 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - amazonlinux-2023-arm64-ci-deps: - name: Amazon Linux 2023 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - archlinux-lts-ci-deps: - name: Arch Linux LTS 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: archlinux-lts - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-ci-deps: - name: CentOS 7 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centos-7-arm64-ci-deps: - name: CentOS 7 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centos-7-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-8-ci-deps: - name: CentOS Stream 8 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-8-arm64-ci-deps: - name: CentOS Stream 8 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-8-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - centosstream-9-ci-deps: - name: CentOS Stream 9 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - centosstream-9-arm64-ci-deps: - name: CentOS Stream 9 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-10-ci-deps: - name: Debian 10 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-10 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-ci-deps: - name: Debian 11 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-11-arm64-ci-deps: - name: Debian 11 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - debian-12-ci-deps: - name: Debian 12 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - debian-12-arm64-ci-deps: - name: Debian 12 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-37-ci-deps: - name: Fedora 37 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-37-arm64-ci-deps: - name: Fedora 37 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-37-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - fedora-38-ci-deps: - name: Fedora 38 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - fedora-38-arm64-ci-deps: - name: Fedora 38 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: fedora-38-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - opensuse-15-ci-deps: - name: Opensuse 15 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: opensuse-15 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-ci-deps: - name: Photon OS 3 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-3-arm64-ci-deps: - name: Photon OS 3 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-4-ci-deps: - name: Photon OS 4 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-4-arm64-ci-deps: - name: Photon OS 4 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - photonos-5-ci-deps: - name: Photon OS 5 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - photonos-5-arm64-ci-deps: - name: Photon OS 5 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2004-ci-deps: - name: Ubuntu 20.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2004-arm64-ci-deps: - name: Ubuntu 20.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - ubuntu-2204-ci-deps: - name: Ubuntu 22.04 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04 - nox-session: ci-test-onedir - platform: linux - arch: x86_64 - 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.13 - - ubuntu-2204-arm64-ci-deps: - name: Ubuntu 22.04 Arm64 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-linux - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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-rpm-pkgs-onedir - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centos-7-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-8-pkg-tests: - name: CentOS Stream 8 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-8-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-pkg-tests: - name: CentOS Stream 9 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - centosstream-9-arm64-pkg-tests: - name: CentOS Stream 9 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - centosstream-9-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: centosstream-9-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - debian-10-pkg-tests: - name: Debian 10 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-10-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-pkg-tests: - name: Photon OS 3 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - photonos-3-arm64-pkg-tests: - name: Photon OS 3 Arm64 Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - - photonos-5-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - fips: true - - 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-rpm-pkgs-onedir - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-deb-pkgs-onedir - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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-macos-pkgs-onedir - - macos-12-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: true - skip-junit-reports: true - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - macos-13-xlarge-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'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2016-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - windows-2019-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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-windows-pkgs-onedir - - windows-2022-ci-deps - uses: ./.github/workflows/test-packages-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - 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'] }} - needs: - - prepare-workflow - - windows-2016-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - windows-2019-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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 - - windows-2022-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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 - - macos-12-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-12 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - macos-13-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13 - nox-session: ci-test-onedir - platform: darwin - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - macos-13-xlarge: - name: macOS 13 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - macos-13-xlarge-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: macos-13-xlarge - nox-session: ci-test-onedir - platform: darwin - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-8: - name: Alma Linux 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - almalinux-9: - name: Alma Linux 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - almalinux-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: almalinux-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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - amazonlinux-2023-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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 - - amazonlinux-2023-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: amazonlinux-2023-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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 - - archlinux-lts-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - centos-7-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-8: - name: CentOS Stream 8 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-8-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - centosstream-9: - name: CentOS Stream 9 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - centosstream-9-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: centosstream-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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - debian-10: - name: Debian 10 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - debian-10-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-10 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - debian-11-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - debian-11-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-11-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - debian-12-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - debian-12-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: debian-12-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-37: - name: Fedora 37 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-37-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-37 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - fedora-38: - name: Fedora 38 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - fedora-38-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: fedora-38 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - opensuse-15-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3: - name: Photon OS 3 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - photonos-3-arm64: - name: Photon OS 3 Arm64 Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - photonos-3-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-3-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - photonos-4-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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'] }} - needs: - - prepare-workflow - - photonos-4-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-4-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - photonos-5-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - fips: true - - 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 - - photonos-5-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: photonos-5-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - ubuntu-2004-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-20.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-ci-deps - uses: ./.github/workflows/test-action.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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - 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'] }} - needs: - - prepare-workflow - - ubuntu-2204-arm64-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: ubuntu-22.04-arm64 - nox-session: ci-test-onedir - platform: linux - arch: aarch64 - 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.13 - skip-code-coverage: true - skip-junit-reports: true - workflow-slug: staging - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && 180 || 360 }} - - build-src-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-source-tarball - strategy: - fail-fast: false - matrix: - pkg-type: - - src - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Source Tarball - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create src --key-id=64CBBC8173D76B3F \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Copy Files For Source Only Artifact Uploads - run: | - mkdir artifacts/src - find artifacts/pkgs/repo -type f -print -exec cp {} artifacts/src \; - - - name: Upload Standalone Repository As An Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-src-repo - path: | - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.* - artifacts/src/*-GPG-* - retention-days: 7 - if-no-files-found: error - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: src-repo - - build-deb-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-deb-pkgs-onedir - strategy: - fail-fast: false - matrix: - include: - - pkg-type: deb - distro: debian - version: "10" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "10" - arch: aarch64 - - pkg-type: deb - distro: debian - version: "11" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "11" - arch: aarch64 - - pkg-type: deb - distro: debian - version: "12" - arch: x86_64 - - pkg-type: deb - distro: debian - version: "12" - arch: aarch64 - - pkg-type: deb - distro: ubuntu - version: "20.04" - arch: x86_64 - - pkg-type: deb - distro: ubuntu - version: "20.04" - arch: aarch64 - - pkg-type: deb - distro: ubuntu - version: "22.04" - arch: x86_64 - - pkg-type: deb - distro: ubuntu - version: "22.04" - arch: aarch64 - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y devscripts apt-utils - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download DEB Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch }}-deb - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create deb --key-id=64CBBC8173D76B3F --distro-arch=${{ matrix.arch }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo - - build-rpm-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-rpm-pkgs-onedir - strategy: - fail-fast: false - matrix: - include: - - pkg-type: rpm - distro: amazon - version: "2" - arch: x86_64 - - pkg-type: rpm - distro: amazon - version: "2" - arch: arm64 - - pkg-type: rpm - distro: amazon - version: "2" - arch: aarch64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: x86_64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: arm64 - - pkg-type: rpm - distro: amazon - version: "2023" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "7" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "8" - arch: aarch64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: x86_64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: arm64 - - pkg-type: rpm - distro: redhat - version: "9" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "36" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "37" - arch: aarch64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: x86_64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: arm64 - - pkg-type: rpm - distro: fedora - version: "38" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "3" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "3" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "3" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "4" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "4" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "4" - arch: aarch64 - - pkg-type: rpm - distro: photon - version: "5" - arch: x86_64 - - pkg-type: rpm - distro: photon - version: "5" - arch: arm64 - - pkg-type: rpm - distro: photon - version: "5" - arch: aarch64 - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y rpm - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download RPM Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}-rpm - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - env: - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo create rpm --key-id=64CBBC8173D76B3F --distro-arch=${{ matrix.arch }} \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo - - build-windows-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-windows-pkgs-onedir - strategy: - fail-fast: false - matrix: - pkg-type: - - windows - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Windows NSIS x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-MSI - path: artifacts/pkgs/incoming - - - name: Download Windows NSIS amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-MSI - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create windows --key-id=64CBBC8173D76B3F \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: windows-repo - - build-macos-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-macos-pkgs-onedir - strategy: - fail-fast: false - matrix: - pkg-type: - - macos - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download macOS x86_64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86_64-macos - path: artifacts/pkgs/incoming - - - name: Download macOS Arch64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-aarch64-macos - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create macos --key-id=64CBBC8173D76B3F \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: macos-repo - - build-onedir-repo: - name: Build Repository - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - needs: - - prepare-workflow - - build-salt-onedir-linux - - build-salt-onedir-macos - - build-salt-onedir-windows - strategy: - fail-fast: false - matrix: - pkg-type: - - onedir - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Linux x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Linux aarch64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS arm64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.zip - path: artifacts/pkgs/incoming - - - name: Download Windows x86 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.zip - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create onedir --key-id=64CBBC8173D76B3F \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: onedir-repo - - publish-repositories: - name: Publish Repositories - if: ${{ always() && ! failure() && ! cancelled() }} - runs-on: - - self-hosted - - linux - - repo-staging - environment: staging - needs: - - prepare-workflow - - build-src-repo - - build-deb-repo - - build-rpm-repo - - build-windows-repo - - build-macos-repo - - build-onedir-repo - - steps: - - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Download Repository Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-repo - path: repo/ - - - name: Decompress Repository Artifacts - run: | - find repo/ -type f -name '*.tar.gz' -print -exec tar xvf {} \; - find repo/ -type f -name '*.tar.gz' -print -exec rm -f {} \; - - - name: Show Repository - run: | - tree -a artifacts/pkgs/repo/ - - - name: Upload Repository Contents (staging) - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo publish staging --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} artifacts/pkgs/repo/ - - upload-release-artifacts: - name: Upload Release Artifacts - needs: - - prepare-workflow - - build-docs - - build-src-repo - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - steps: - - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Download Release Patch - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - path: artifacts/release - - - name: Download Source Repository - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-staging-src-repo - path: artifacts/release - - - name: Download Release Documentation (HTML) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-docs-html.tar.xz - path: artifacts/release - - - name: Download Release Documentation (ePub) - uses: actions/download-artifact@v3 - with: - name: Salt-${{ needs.prepare-workflow.outputs.salt-version }}.epub - path: artifacts/release - - - name: Show Release Artifacts - run: | - tree -a artifacts/release - - - name: Upload Release Artifacts - run: | - tools release upload-artifacts ${{ needs.prepare-workflow.outputs.salt-version }} artifacts/release - - - name: Upload PyPi Artifacts - uses: actions/upload-artifact@v3 - with: - name: pypi-artifacts - path: | - artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.asc - retention-days: 7 - if-no-files-found: error - - pkg-download-tests: - name: Package Downloads - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg-download'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - publish-repositories - - almalinux-8-arm64-ci-deps - - almalinux-8-ci-deps - - almalinux-9-arm64-ci-deps - - almalinux-9-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2023-arm64-ci-deps - - amazonlinux-2023-ci-deps - - centos-7-arm64-ci-deps - - centos-7-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-9-arm64-ci-deps - - centosstream-9-ci-deps - - debian-10-ci-deps - - debian-11-arm64-ci-deps - - debian-11-ci-deps - - debian-12-arm64-ci-deps - - debian-12-ci-deps - - fedora-37-arm64-ci-deps - - fedora-37-ci-deps - - fedora-38-arm64-ci-deps - - fedora-38-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - photonos-3-arm64-ci-deps - - photonos-3-ci-deps - - photonos-4-arm64-ci-deps - - photonos-4-ci-deps - - photonos-5-arm64-ci-deps - - photonos-5-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2204-arm64-ci-deps - - ubuntu-2204-ci-deps - - windows-2022-ci-deps - - build-salt-onedir-linux - - build-salt-onedir-macos - - build-salt-onedir-windows - uses: ./.github/workflows/test-package-downloads-action.yml - with: - nox-session: ci-test-onedir - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.10.13 - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - environment: staging - nox-version: 2022.8.7 - python-version: "3.10" - skip-code-coverage: true - latest-release: "${{ needs.prepare-workflow.outputs.latest-release }}" - secrets: inherit - - publish-pypi: - name: Publish to PyPi(test) - if: ${{ inputs.skip-test-pypi-publish != true && github.event.repository.fork != true }} - needs: - - prepare-workflow - - upload-release-artifacts - - windows-2016-ci-deps - - windows-2019-ci-deps - - windows-2022-ci-deps - - macos-12-ci-deps - - macos-13-ci-deps - - macos-13-xlarge-ci-deps - - almalinux-8-ci-deps - - almalinux-8-arm64-ci-deps - - almalinux-9-ci-deps - - almalinux-9-arm64-ci-deps - - amazonlinux-2-ci-deps - - amazonlinux-2-arm64-ci-deps - - amazonlinux-2023-ci-deps - - amazonlinux-2023-arm64-ci-deps - - archlinux-lts-ci-deps - - centos-7-ci-deps - - centos-7-arm64-ci-deps - - centosstream-8-ci-deps - - centosstream-8-arm64-ci-deps - - centosstream-9-ci-deps - - centosstream-9-arm64-ci-deps - - debian-10-ci-deps - - debian-11-ci-deps - - debian-11-arm64-ci-deps - - debian-12-ci-deps - - debian-12-arm64-ci-deps - - fedora-37-ci-deps - - fedora-37-arm64-ci-deps - - fedora-38-ci-deps - - fedora-38-arm64-ci-deps - - opensuse-15-ci-deps - - photonos-3-ci-deps - - photonos-3-arm64-ci-deps - - photonos-4-ci-deps - - photonos-4-arm64-ci-deps - - photonos-5-ci-deps - - photonos-5-arm64-ci-deps - - ubuntu-2004-ci-deps - - ubuntu-2004-arm64-ci-deps - - ubuntu-2204-ci-deps - - ubuntu-2204-arm64-ci-deps - - windows-2016 - - windows-2019 - - windows-2022 - - macos-12 - - macos-13 - - macos-13-xlarge - - almalinux-8 - - almalinux-9 - - amazonlinux-2 - - amazonlinux-2-arm64 - - amazonlinux-2023 - - amazonlinux-2023-arm64 - - archlinux-lts - - centos-7 - - centosstream-8 - - centosstream-9 - - debian-10 - - debian-11 - - debian-11-arm64 - - debian-12 - - debian-12-arm64 - - fedora-37 - - fedora-38 - - opensuse-15 - - photonos-3 - - photonos-3-arm64 - - photonos-4 - - photonos-4-arm64 - - photonos-5 - - photonos-5-arm64 - - ubuntu-2004 - - ubuntu-2004-arm64 - - ubuntu-2204 - - ubuntu-2204-arm64 - - amazonlinux-2-pkg-tests - - amazonlinux-2-arm64-pkg-tests - - amazonlinux-2023-pkg-tests - - amazonlinux-2023-arm64-pkg-tests - - centos-7-pkg-tests - - centosstream-8-pkg-tests - - centosstream-9-pkg-tests - - centosstream-9-arm64-pkg-tests - - debian-10-pkg-tests - - debian-11-pkg-tests - - debian-11-arm64-pkg-tests - - debian-12-pkg-tests - - debian-12-arm64-pkg-tests - - photonos-3-pkg-tests - - photonos-3-arm64-pkg-tests - - photonos-4-pkg-tests - - photonos-4-arm64-pkg-tests - - photonos-5-pkg-tests - - photonos-5-arm64-pkg-tests - - ubuntu-2004-pkg-tests - - ubuntu-2004-arm64-pkg-tests - - ubuntu-2204-pkg-tests - - ubuntu-2204-arm64-pkg-tests - - macos-12-pkg-tests - - macos-13-pkg-tests - - macos-13-xlarge-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 - - pkg-download-tests - environment: staging - runs-on: - - self-hosted - - linux - - repo-staging - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - TWINE_PASSWORD=$(aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/publishing/publish-test-pypi \ - --query SecretString --output text | jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "$SECRETS_KEY_FILE" -d -) - echo "::add-mask::$TWINE_PASSWORD" - echo "twine-password=$TWINE_PASSWORD" >> "${GITHUB_OUTPUT}" - - - name: Download PyPi Artifacts - uses: actions/download-artifact@v3 - with: - name: pypi-artifacts - path: artifacts/release - - - name: Publish to Test PyPi - env: - TWINE_PASSWORD: "${{ steps.get-secrets.outputs.twine-password }}" - run: | - tools pkg pypi-upload --test artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - check-requirements - - prepare-workflow - - pre-commit - - lint - - build-docs - - build-deps-onedir-linux - - build-deps-onedir-windows - - build-deps-onedir-macos - - build-salt-onedir-linux - - build-salt-onedir-windows - - build-salt-onedir-macos - - build-rpm-pkgs-src - - build-deb-pkgs-src - - build-windows-pkgs-src - - build-macos-pkgs-src - - publish-repositories - - upload-release-artifacts - - pkg-download-tests - - publish-pypi - steps: - - name: Get workflow information - id: get-workflow-info - uses: technote-space/workflow-conclusion-action@v3 - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 00000000..a3bf12d1 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,31 @@ +name: Tagged Releases + +on: + push: + tags: + - "v*" # Only tags starting with "v" for "v1.0.0", etc. + +jobs: + get_tag_version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.get_version.outputs.version }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Extract tag name + id: get_version + run: echo "::set-output name=version::$(echo ${GITHUB_REF#refs/tags/v})" + + call_central_workflow: + needs: get_tag_version + uses: salt-extensions/central-artifacts/.github/workflows/ci.yml@main + with: + release: true + version: ${{ needs.get_tag_version.outputs.version }} + permissions: + contents: write + id-token: write + pull-requests: read + secrets: inherit diff --git a/.github/workflows/templates/README.md b/.github/workflows/templates/README.md deleted file mode 100644 index 3e5f5a87..00000000 --- a/.github/workflows/templates/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Workflow Templates - -The templates are used to generate the actual workflows that run on GitHub Actions. -They use [Jinja2](https://jinja.palletsprojects.com) as the template engine. - -## To Note - -Let's try to keep the Jinja usage to the bare minimum because, as time passes, -the complexity just piles up making it harder to read and interpret the templates. - -### Changes To Default Jinja Syntax - -By default Jinja uses `{% ... %}`, `{{ ... }}`, `{# ... #}`, etc to do it's magic. -In order not to clash with the GitHub Actions syntax, and to also avoid having to -add bunch of `{% raw %} ... {% endraw %}` blocks, we changed some things: - -* Instead of `{%` and `%}` use `<%` and `%>` -* Instead of `{{` and `}}` use `<{` and `}>` - -The rest of Jinja2 defaults apply. diff --git a/.github/workflows/templates/build-ci-deps.yml.jinja b/.github/workflows/templates/build-ci-deps.yml.jinja deleted file mode 100644 index eb3622eb..00000000 --- a/.github/workflows/templates/build-ci-deps.yml.jinja +++ /dev/null @@ -1,86 +0,0 @@ - - <%- for slug, display_name, arch in build_ci_deps_listing["windows"] %> - - <{ slug.replace(".", "") }>-ci-deps: - <%- do test_salt_needs.append(slug.replace(".", "") + "-ci-deps") %> - name: <{ display_name }> Deps - <%- if workflow_slug != 'release' %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - <%- endif %> - needs: - - prepare-workflow - <%- if workflow_slug != 'release' %> - - build-salt-onedir-windows - <%- else %> - - download-onedir-artifact - <%- endif %> - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: windows - arch: amd64 - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - - <%- endfor %> - - - <%- for slug, display_name, arch in build_ci_deps_listing["macos"] %> - - <{ slug.replace(".", "") }>-ci-deps: - <%- do test_salt_needs.append(slug.replace(".", "") + "-ci-deps") %> - name: <{ display_name }> Deps - <%- if workflow_slug != 'release' %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - <%- endif %> - needs: - - prepare-workflow - <%- if workflow_slug != 'release' %> - - build-salt-onedir-macos - <%- else %> - - download-onedir-artifact - <%- endif %> - uses: ./.github/workflows/build-deps-ci-action-macos.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: darwin - arch: <{ arch }> - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - - <%- endfor %> - - - <%- for slug, display_name, arch in build_ci_deps_listing["linux"] %> - - <{ slug.replace(".", "") }>-ci-deps: - <%- do test_salt_needs.append(slug.replace(".", "") + "-ci-deps") %> - name: <{ display_name }> Deps - <%- if workflow_slug != 'release' %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-deps-ci'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - <%- endif %> - needs: - - prepare-workflow - <%- if workflow_slug != 'release' %> - - build-salt-onedir-linux - <%- else %> - - download-onedir-artifact - <%- endif %> - uses: ./.github/workflows/build-deps-ci-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: linux - arch: <{ arch }> - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - - <%- endfor %> diff --git a/.github/workflows/templates/build-deb-repo.yml.jinja b/.github/workflows/templates/build-deb-repo.yml.jinja deleted file mode 100644 index 8d9c0544..00000000 --- a/.github/workflows/templates/build-deb-repo.yml.jinja +++ /dev/null @@ -1,96 +0,0 @@ - - strategy: - fail-fast: false - matrix: - include: - <%- for distro, version, arch in ( - ("debian", "10", "x86_64"), - ("debian", "10", "aarch64"), - ("debian", "11", "x86_64"), - ("debian", "11", "aarch64"), - ("debian", "12", "x86_64"), - ("debian", "12", "aarch64"), - ("ubuntu", "20.04", "x86_64"), - ("ubuntu", "20.04", "aarch64"), - ("ubuntu", "22.04", "x86_64"), - ("ubuntu", "22.04", "aarch64"), - ) %> - - pkg-type: deb - distro: <{ distro }> - version: "<{ version }>" - arch: <{ arch }> - <%- endfor %> - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y devscripts apt-utils - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download DEB Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch }}-deb - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create deb --key-id=<{ gpg_key_id }> --distro-arch=${{ matrix.arch }} <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo diff --git a/.github/workflows/templates/build-macos-repo.yml.jinja b/.github/workflows/templates/build-macos-repo.yml.jinja deleted file mode 100644 index c8127d0a..00000000 --- a/.github/workflows/templates/build-macos-repo.yml.jinja +++ /dev/null @@ -1,80 +0,0 @@ - - strategy: - fail-fast: false - matrix: - pkg-type: - - macos - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download macOS x86_64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86_64-macos - path: artifacts/pkgs/incoming - - - name: Download macOS Arch64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-aarch64-macos - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create macos --key-id=<{ gpg_key_id }> <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: macos-repo diff --git a/.github/workflows/templates/build-onedir-repo.yml.jinja b/.github/workflows/templates/build-onedir-repo.yml.jinja deleted file mode 100644 index 8e51caa9..00000000 --- a/.github/workflows/templates/build-onedir-repo.yml.jinja +++ /dev/null @@ -1,116 +0,0 @@ - - strategy: - fail-fast: false - matrix: - pkg-type: - - onedir - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Linux x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Linux aarch64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-linux-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS x86_64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-x86_64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download macOS arm64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-darwin-aarch64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-amd64.zip - path: artifacts/pkgs/incoming - - - name: Download Windows x86 Onedir Archive - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.tar.xz - path: artifacts/pkgs/incoming - - - name: Download Windows amd64 Onedir Archive(zip) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-onedir-windows-x86.zip - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create onedir --key-id=<{ gpg_key_id }> <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: onedir-repo diff --git a/.github/workflows/templates/build-packages.yml.jinja b/.github/workflows/templates/build-packages.yml.jinja deleted file mode 100644 index b5086a75..00000000 --- a/.github/workflows/templates/build-packages.yml.jinja +++ /dev/null @@ -1,38 +0,0 @@ -<%- for platform, pkg_type, display_name, runner_type in ( - ("linux", "rpm", "RPM", "self-hosted"), - ("linux", "deb", "DEB", "self-hosted"), - ("windows", "windows", "Windows", "github-hosted"), - ("macos", "macos", "macOS", "github-hosted"), - ) %> - - <%- for backend in ("onedir", "src") %> - <%- set job_name = "build-{}-pkgs-{}".format(pkg_type, backend) %> - <%- if backend == "src" %> - <%- do conclusion_needs.append(job_name) %> - <%- endif %> - - <{ job_name }>: - name: Build Packages - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['build-pkgs'] && fromJSON(needs.prepare-workflow.outputs.runners)['<{ runner_type }>'] }} - needs: - - prepare-workflow - - build-salt-onedir-<{ platform }> - uses: ./.github/workflows/build-<{ pkg_type }>-packages.yml - with: - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - relenv-version: "<{ relenv_version }>" - python-version: "<{ python_version }>" - source: "<{ backend }>" - <%- if pkg_type in ("macos", "windows") and gh_environment %> - environment: <{ gh_environment }> - <%- if pkg_type == "macos" %> - sign-packages: true - <%- else %> - sign-packages: <% if gh_environment == 'nightly' -%> false <%- else -%> ${{ inputs.sign-windows-packages }} <%- endif %> - <%- endif %> - secrets: inherit - <%- endif %> - - <%- endfor %> -<%- endfor %> diff --git a/.github/workflows/templates/build-repos.yml.jinja b/.github/workflows/templates/build-repos.yml.jinja deleted file mode 100644 index 58c413cf..00000000 --- a/.github/workflows/templates/build-repos.yml.jinja +++ /dev/null @@ -1,34 +0,0 @@ -<%- for type, display_name in ( - ("src", "Source"), - ("deb", "DEB"), - ("rpm", "RPM"), - ("windows", "Windows"), - ("macos", "macOS"), - ("onedir", "Onedir"), - ) %> - - <%- set job_name = "build-{}-repo".format(type) %> - <%- do build_repo_needs.append(job_name) %> - - <{ job_name }>: - name: Build Repository - environment: <{ gh_environment }> - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - needs: - - prepare-workflow - <%- if type not in ("src", "onedir") %> - - build-<{ type }>-pkgs-onedir - <%- elif type == 'onedir' %> - - build-salt-onedir-linux - - build-salt-onedir-macos - - build-salt-onedir-windows - <%- elif type == 'src' %> - - build-source-tarball - <%- endif %> - - <%- include "build-{}-repo.yml.jinja".format(type) %> - -<%- endfor %> diff --git a/.github/workflows/templates/build-rpm-repo.yml.jinja b/.github/workflows/templates/build-rpm-repo.yml.jinja deleted file mode 100644 index 7e99a968..00000000 --- a/.github/workflows/templates/build-rpm-repo.yml.jinja +++ /dev/null @@ -1,126 +0,0 @@ - - strategy: - fail-fast: false - matrix: - include: - <%- for distro, version, arch in ( - ("amazon", "2", "x86_64"), - ("amazon", "2", "arm64"), - ("amazon", "2", "aarch64"), - ("amazon", "2023", "x86_64"), - ("amazon", "2023", "arm64"), - ("amazon", "2023", "aarch64"), - ("redhat", "7", "x86_64"), - ("redhat", "7", "arm64"), - ("redhat", "7", "aarch64"), - ("redhat", "8", "x86_64"), - ("redhat", "8", "arm64"), - ("redhat", "8", "aarch64"), - ("redhat", "9", "x86_64"), - ("redhat", "9", "arm64"), - ("redhat", "9", "aarch64"), - ("fedora", "36", "x86_64"), - ("fedora", "36", "arm64"), - ("fedora", "36", "aarch64"), - ("fedora", "37", "x86_64"), - ("fedora", "37", "arm64"), - ("fedora", "37", "aarch64"), - ("fedora", "38", "x86_64"), - ("fedora", "38", "arm64"), - ("fedora", "38", "aarch64"), - ("photon", "3", "x86_64"), - ("photon", "3", "arm64"), - ("photon", "3", "aarch64"), - ("photon", "4", "x86_64"), - ("photon", "4", "arm64"), - ("photon", "4", "aarch64"), - ("photon", "5", "x86_64"), - ("photon", "5", "arm64"), - ("photon", "5", "aarch64"), - ) %> - - pkg-type: rpm - distro: <{ distro }> - version: "<{ version }>" - arch: <{ arch }> - <%- endfor %> - - steps: - - uses: actions/checkout@v4 - - - name: Download System Dependencies - run: | - sudo apt update - sudo apt install -y rpm - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download RPM Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}-rpm - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - env: - <%- if gh_environment == 'staging' %> - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - <%- endif %> - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo create rpm --key-id=<{ gpg_key_id }> --distro-arch=${{ matrix.arch }} <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --distro=${{ matrix.distro }} --distro-version=${{ matrix.version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-repo diff --git a/.github/workflows/templates/build-src-repo.yml.jinja b/.github/workflows/templates/build-src-repo.yml.jinja deleted file mode 100644 index 437da330..00000000 --- a/.github/workflows/templates/build-src-repo.yml.jinja +++ /dev/null @@ -1,90 +0,0 @@ - - strategy: - fail-fast: false - matrix: - pkg-type: - - src - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Source Tarball - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create src --key-id=<{ gpg_key_id }> <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Copy Files For Source Only Artifact Uploads - run: | - mkdir artifacts/src - find artifacts/pkgs/repo -type f -print -exec cp {} artifacts/src \; - - - name: Upload Standalone Repository As An Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-src-repo - path: | - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - artifacts/src/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.* - artifacts/src/*-GPG-* - retention-days: 7 - if-no-files-found: error - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: src-repo diff --git a/.github/workflows/templates/build-windows-repo.yml.jinja b/.github/workflows/templates/build-windows-repo.yml.jinja deleted file mode 100644 index a86daf7f..00000000 --- a/.github/workflows/templates/build-windows-repo.yml.jinja +++ /dev/null @@ -1,92 +0,0 @@ - - strategy: - fail-fast: false - matrix: - pkg-type: - - windows - - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Windows NSIS x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI x86 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-x86-MSI - path: artifacts/pkgs/incoming - - - name: Download Windows NSIS amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-NSIS - path: artifacts/pkgs/incoming - - - name: Download Windows MSI amd64 Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-amd64-MSI - path: artifacts/pkgs/incoming - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Create Repository Path - run: | - mkdir -p artifacts/pkgs/repo - - - name: Create Repository - run: | - tools pkg repo create windows --key-id=<{ gpg_key_id }> <% if gh_environment == 'nightly' -%> --nightly-build-from=${{ github.ref_name }} <%- endif %> \ - --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} \ - --incoming=artifacts/pkgs/incoming --repo-path=artifacts/pkgs/repo - - - name: Upload Repository As An Artifact - uses: ./.github/actions/upload-artifact - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: artifacts/pkgs/repo/* - retention-days: 7 - if-no-files-found: error - archive-name: windows-repo diff --git a/.github/workflows/templates/ci.yml.jinja b/.github/workflows/templates/ci.yml.jinja deleted file mode 100644 index 68deffc9..00000000 --- a/.github/workflows/templates/ci.yml.jinja +++ /dev/null @@ -1,440 +0,0 @@ -<%- extends 'layout.yml.jinja' %> -<%- set pre_commit_version = "3.0.4" %> - - -<%- block jobs %> - <{- super() }> - - <%- set job_name = "pre-commit" %> - <%- if includes.get(job_name, True) %> - <{ job_name }>: - <%- do conclusion_needs.append(job_name) %> - 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: "<{ pre_commit_version }>" - - <%- endif %> - - - <%- set job_name = "lint" %> - <%- if includes.get(job_name, True) %> - - lint: - <%- do conclusion_needs.append('lint') %> - name: Lint - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && 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 }} - - <%- endif %> - - - <%- set job_name = "prepare-release" %> - <%- if includes.get(job_name, True) %> - - <{ job_name }>: - name: "Prepare Release: ${{ needs.prepare-workflow.outputs.salt-version }}" - <%- if prepare_actual_release %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - runs-on: - - self-hosted - - linux - - medium - - x86_64 - <%- else %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - <%- endif %> - needs: - - prepare-workflow - steps: - - uses: actions/checkout@v4 - - <%- if not prepare_actual_release %> - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - <%- endif %> - - - 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 }}" - <%- if prepare_actual_release %> - release: true - <%- endif %> - - - 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 <%- if prepare_actual_release %> --release <%- endif %> --next-release - tools changelog update-release-notes <%- if prepare_actual_release %> --release <%- endif %> --next-release - else - tools changelog update-release-notes --draft <%- if prepare_actual_release %> --release <%- endif %> - tools changelog update-release-notes <%- if prepare_actual_release %> --release <%- endif %> - 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: "<{ pre_commit_version }>" - 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@v3 - 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 - - <%- endif %> - - - <%- set job_name = "build-docs" %> - <%- if includes.get(job_name, True) %> - - <{ job_name }>: - <%- do conclusion_needs.append(job_name) %> - name: Documentation - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && 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 }}" - - <%- endif %> - - - <%- set job_name = "build-source-tarball" %> - <%- if includes.get(job_name, True) %> - - <{ job_name }>: - name: Build Source Tarball - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - prepare-release - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "medium", "x86_64"]') || 'ubuntu-latest' }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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 }}" - - <%- endif %> - - - <%- set job_name = "build-deps-onedir" %> - <%- if includes.get(job_name, True) %> - <%- for platform in ("linux", "windows", "macos") %> - <%- set platform_job_name = "{}-{}".format(job_name, platform) %> - - <{ platform_job_name }>: - <%- do conclusion_needs.append(platform_job_name) %> - name: Build Dependencies Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - uses: ./.github/workflows/build-deps-onedir-<{ platform }>.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: "<{ relenv_version }>" - python-version: "<{ python_version }>" - - <%- endfor %> - <%- endif %> - - - <%- set job_name = "build-salt-onedir" %> - <%- if includes.get(job_name, True) %> - <%- for platform in ("linux", "windows", "macos") %> - <%- set platform_job_name = "{}-{}".format(job_name, platform) %> - - <{ platform_job_name }>: - <%- do conclusion_needs.append(platform_job_name) %> - name: Build Salt Onedir - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['<{ job_name }>'] }} - needs: - - prepare-workflow - - build-deps-onedir-<{ platform }> - - build-source-tarball - uses: ./.github/workflows/build-salt-onedir-<{ platform }>.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: "<{ relenv_version }>" - python-version: "<{ python_version }>" - - <%- endfor %> - <%- endif %> - - - <%- set job_name = "build-pkgs" %> - <%- if includes.get(job_name, True) %> - <%- include "build-packages.yml.jinja" %> - <%- endif %> - - <%- set pkg_tests_job_name = "pkg-tests" %> - <%- set salt_tests_job_name = "salt-tests" %> - <%- if includes.get(pkg_tests_job_name, True) or includes.get(salt_tests_job_name, True) %> - <%- include "build-ci-deps.yml.jinja" %> - <%- endif %> - - <%- if includes.get(pkg_tests_job_name, True) %> - <%- include "test-salt-pkg.yml.jinja" %> - <%- endif %> - - - <%- if includes.get(salt_tests_job_name, True) %> - <%- include "test-salt.yml.jinja" %> - <%- endif %> - - <%- if skip_test_coverage_check == "false" or "skip_code_coverage" in skip_test_coverage_check %> - - combine-all-code-coverage: - <%- do conclusion_needs.append("combine-all-code-coverage") %> - name: Combine Code Coverage - if: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] == false }} - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - prepare-workflow - <%- for need in test_salt_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - steps: - - uses: actions/checkout@v4 - - - name: Set up Python 3.10 - if: ${{ github.event.repository.private == false }} - uses: actions/setup-python@v4 - 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==<{ nox_version }>' - -{# We can't yet use tokenless uploads with the codecov CLI - - - name: Install Codecov CLI - run: | - python3 -m pip install codecov-cli - - - name: Tell Codecov To Process Reports - run: | - codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - send-notifications --git-service github --sha ${{ github.sha }} - -#} - - - name: Get coverage reports - id: get-coverage-reports - uses: actions/download-artifact@v3 - 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 - 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@v3 - 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@v3 - 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@v3 - with: - name: code-coverage-full-html-report - path: artifacts/coverage/html/full - retention-days: 7 - if-no-files-found: error - <%- endif %> - -<%- endblock jobs %> diff --git a/.github/workflows/templates/layout.yml.jinja b/.github/workflows/templates/layout.yml.jinja deleted file mode 100644 index 65398626..00000000 --- a/.github/workflows/templates/layout.yml.jinja +++ /dev/null @@ -1,386 +0,0 @@ -# Do not edit these workflows directly as the changes made will be overwritten. -# Instead, edit the template '<{ template }>' -<%- set prepare_workflow_if_check = prepare_workflow_if_check|default(False) %> -<%- set prepare_workflow_skip_test_suite = prepare_workflow_skip_test_suite|default("") %> -<%- set prepare_workflow_skip_pkg_test_suite = prepare_workflow_skip_pkg_test_suite|default("") %> -<%- set prepare_workflow_skip_pkg_download_test_suite = prepare_workflow_skip_pkg_download_test_suite|default("") %> -<%- set prepare_workflow_salt_version_input = prepare_workflow_salt_version_input|default("") %> -<%- set skip_test_coverage_check = skip_test_coverage_check|default("${{ fromJSON(needs.prepare-workflow.outputs.testrun)['skip_code_coverage'] }}") %> -<%- set skip_junit_reports_check = skip_junit_reports_check|default("${{ github.event_name == 'pull_request' }}") %> -<%- set gpg_key_id = "64CBBC8173D76B3F" %> -<%- set prepare_actual_release = prepare_actual_release | default(False) %> -<%- set gh_actions_workflows_python_version = "3.10" %> ---- -<%- block name %> -name: <{ workflow_name }> -run-name: "<{ workflow_name }> (${{ 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) }})" -<%- endblock name %> - -<%- block on %> - -on: - push: {} - pull_request: - types: - - labeled - - unlabeled - - opened - - reopened - - synchronize - -<%- endblock on %> - -<%- block env %> - -env: - COLUMNS: 190 - CACHE_SEED: SEED-2 # Bump the number to invalidate all caches - RELENV_DATA: "${{ github.workspace }}/.relenv" - -<%- endblock env %> - -<%- block permissions %> - -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 -<%- if workflow_slug not in ("nightly", "scheduled") %> - actions: read # for technote-space/workflow-conclusion-action to get the job statuses -<%- endif %> - -<%- endblock permissions %> - -<%- block concurrency %> - -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 - -<%- endblock concurrency %> - -<%- block jobs %> - -jobs: - - <%- block pre_jobs %> - <%- endblock pre_jobs %> - - <%- if includes.get("prepare-workflow", True) %> - <%- block prepare_workflow_job %> - <%- do conclusion_needs.append("prepare-workflow") %> - - prepare-workflow: - name: Prepare Workflow Run - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - <%- if prepare_workflow_if_check %> - if: <{ prepare_workflow_if_check }> - <%- endif %> - <%- if prepare_workflow_needs %> - needs: - <%- for need in prepare_workflow_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - <%- endif %> - outputs: - jobs: ${{ steps.define-jobs.outputs.jobs }} - runners: ${{ steps.runner-types.outputs.runners }} - changed-files: ${{ steps.process-changed-files.outputs.changed-files }} - pull-labels: ${{ steps.get-pull-labels.outputs.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 }} - 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@v2 - 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/** - - *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@v4 - 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: "<{ prepare_workflow_salt_version_input }>" - 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 }} - - <%- if prepare_actual_release %> - - - name: Check Existing Releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-unreleased --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - if [ "${{ github.event.repository.private }}" = "true" ]; then - tools pkg repo confirm-unreleased --repository saltstack/salt ${{ steps.setup-salt-version.outputs.salt-version }} - fi - - - <%- endif %> - - - 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: Check Defined Runners - run: | - echo '${{ steps.runner-types.outputs.runners }}' | jq -C '.' - - - name: Define Jobs - id: define-jobs - run: | - tools ci define-jobs<{ prepare_workflow_skip_test_suite }><{ - prepare_workflow_skip_pkg_test_suite }><{ prepare_workflow_skip_pkg_download_test_suite - }> ${{ github.event_name }} changed-files.json - - - name: Check Defined Jobs - run: | - echo '${{ steps.define-jobs.outputs.jobs }}' | jq -C '.' - - - 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: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - echo '${{ steps.get-testing-releases.outputs.testing-releases }}' | jq -C '.' - - - name: Define Testrun - id: define-testrun - run: | - tools ci define-testrun ${{ github.event_name }} changed-files.json - - - name: Check Defined Test Run - run: | - echo '${{ steps.define-testrun.outputs.testrun }}' | jq -C '.' - - - 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@v3 - 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 }} - -{# We can't yet use tokenless uploads with the codecov CLI - - - name: Install Codecov CLI - if: ${{ fromJSON(steps.define-testrun.outputs.testrun)['skip_code_coverage'] == false }} - run: | - python3 -m pip install codecov-cli - - - name: Save Commit Metadata In Codecov - if: ${{ fromJSON(steps.define-testrun.outputs.testrun)['skip_code_coverage'] == false }} - run: | - codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - create-commit --git-service github --sha ${{ github.sha }} - - - name: Create Codecov Coverage Report - if: ${{ fromJSON(steps.define-testrun.outputs.testrun)['skip_code_coverage'] == false }} - run: | - codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - create-report --git-service github --sha ${{ github.sha }} - -#} - - <%- endblock prepare_workflow_job %> - <%- endif %> - -<%- endblock jobs %> - - 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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - <%- if workflow_slug == "nightly" %> - environment: <{ workflow_slug }> - <%- endif %> - needs: - <%- for need in prepare_workflow_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- for need in conclusion_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- for need in test_salt_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - <%- for need in test_salt_pkg_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - <%- for need in test_repo_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - steps: - - name: Get workflow information - id: get-workflow-info - uses: technote-space/workflow-conclusion-action@v3 - - <%- block set_pipeline_exit_status_extra_steps %> - <%- endblock set_pipeline_exit_status_extra_steps %> - - - name: Set Pipeline Exit Status - shell: bash - run: | - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - exit 1 - else - exit 0 - fi - - - name: Done - if: always() - run: - echo "All worflows finished" diff --git a/.github/workflows/templates/nightly.yml.jinja b/.github/workflows/templates/nightly.yml.jinja deleted file mode 100644 index e4350f44..00000000 --- a/.github/workflows/templates/nightly.yml.jinja +++ /dev/null @@ -1,265 +0,0 @@ -<%- set gh_environment = gh_environment|default("nightly") %> -<%- set skip_test_coverage_check = skip_test_coverage_check|default("false") %> -<%- set skip_junit_reports_check = skip_junit_reports_check|default("false") %> -<%- set prepare_workflow_skip_test_suite = "${{ inputs.skip-salt-test-suite && ' --skip-tests' || '' }}" %> -<%- set prepare_workflow_skip_pkg_test_suite = "${{ inputs.skip-salt-pkg-test-suite && ' --skip-pkg-tests' || '' }}" %> -<%- set prepare_workflow_if_check = prepare_workflow_if_check|default("${{ fromJSON(needs.workflow-requirements.outputs.requirements-met) }}") %> -<%- extends 'ci.yml.jinja' %> - -<%- block name %> - -name: <{ workflow_name }> -run-name: "<{ workflow_name }> (branch: ${{ github.ref_name }})" - -<%- endblock name %> - -<%- block on %> - -on: - workflow_dispatch: - inputs: - skip-salt-test-suite: - type: boolean - default: false - description: Skip running the Salt test suite. - skip-salt-pkg-test-suite: - type: boolean - default: false - description: Skip running the Salt packages test suite. - schedule: - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule - - cron: '0 0 * * *' # Every day at 0AM - -<%- endblock on %> - -<%- block concurrency %> - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: false - -<%- endblock concurrency %> - -<%- block permissions %> -<{- super() }> -<%- if workflow_slug == "nightly" %> - actions: write # to trigger branch nightly builds -<%- endif %> -<%- endblock permissions %> - -<%- block pre_jobs %> - - <%- include "workflow-requirements-check.yml.jinja" %> - <%- include "trigger-branch-workflows.yml.jinja" %> - - {#- When we start using a slack app, we can update messages, not while using incoming webhooks - <%- if workflow_slug == "nightly" %> - - <%- do conclusion_needs.append('notify-slack') %> - notify-slack: - name: Notify Slack - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: <{ gh_environment }> - needs: - <%- for need in prepare_workflow_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - outputs: - update-ts: ${{ steps.slack.outputs.update-ts }} - steps: - - name: Notify Slack - id: slack - uses: slackapi/slack-github-action@v1.24.0 - with: - payload: | - { - "attachments": [ - { - "color": "ffca28", - "fields": [ - { - "title": "Workflow", - "short": true, - "value": "${{ github.workflow }}", - "type": "mrkdwn" - }, - { - "title": "Workflow Run", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>", - "type": "mrkdwn" - }, - { - "title": "Branch", - "short": true, - "value": "${{ github.ref_name }}", - "type": "mrkdwn" - }, - { - "title": "Commit", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>", - "type": "mrkdwn" - }, - { - "title": "Attempt", - "short": true, - "value": "${{ github.run_attempt }}", - "type": "mrkdwn" - }, - { - "title": "Status", - "short": true, - "value": "running", - "type": "mrkdwn" - } - ], - "author_name": "${{ github.event.sender.login }}", - "author_link": "${{ github.event.sender.html_url }}", - "author_icon": "${{ github.event.sender.avatar_url }}" - } - ] - } - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK - - <%- endif %> - #} - -<%- endblock pre_jobs %> - -<%- block jobs %> - <{- super() }> - - <%- if includes.get("build-repos", True) %> - <%- include "build-repos.yml.jinja" %> - <%- endif %> - - publish-repositories: - <%- do conclusion_needs.append('publish-repositories') %> - name: Publish Repositories - if: ${{ always() && ! failure() && ! cancelled() }} - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - environment: <{ gh_environment }> - needs: - - prepare-workflow - <%- for need in build_repo_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- if workflow_slug == "nightly" %> - <%- for need in test_salt_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- endif %> - - steps: - - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Download Repository Artifact - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-repo - path: repo/ - - - name: Decompress Repository Artifacts - run: | - find repo/ -type f -name '*.tar.gz' -print -exec tar xvf {} \; - find repo/ -type f -name '*.tar.gz' -print -exec rm -f {} \; - - - name: Show Repository - run: | - tree -a artifacts/pkgs/repo/ - - - name: Upload Repository Contents (<{ gh_environment }>) - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo publish <{ gh_environment }> --salt-version=${{ needs.prepare-workflow.outputs.salt-version }} artifacts/pkgs/repo/ - -<%- endblock jobs %> - -<%- block set_pipeline_exit_status_extra_steps %> - - <%- if workflow_slug == "nightly" %> - - - name: Notify Slack - id: slack - if: always() - uses: slackapi/slack-github-action@v1.24.0 - with: - {#- When we start using a slack app, we can update messages, not while using incoming webhooks - update-ts: ${{ needs.notify-slack.outputs.update-ts }} - #} - payload: | - { - "attachments": [ - { - "fallback": "${{ github.workflow }} Workflow build result for the `${{ github.ref_name }}` branch(attempt: ${{ github.run_attempt }}): `${{ steps.get-workflow-info.outputs.conclusion }}`\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", - "color": "${{ steps.get-workflow-info.outputs.conclusion != 'success' && 'ff3d00' || '00e676' }}", - "fields": [ - { - "title": "Workflow", - "short": true, - "value": "${{ github.workflow }}", - "type": "mrkdwn" - }, - { - "title": "Workflow Run", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>", - "type": "mrkdwn" - }, - { - "title": "Branch", - "short": true, - "value": "${{ github.ref_name }}", - "type": "mrkdwn" - }, - { - "title": "Commit", - "short": true, - "value": "<${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>", - "type": "mrkdwn" - }, - { - "title": "Attempt", - "short": true, - "value": "${{ github.run_attempt }}", - "type": "mrkdwn" - }, - { - "title": "Status", - "short": true, - "value": "${{ steps.get-workflow-info.outputs.conclusion }}", - "type": "mrkdwn" - } - ], - "author_name": "${{ github.event.sender.login }}", - "author_link": "${{ github.event.sender.html_url }}", - "author_icon": "${{ github.event.sender.avatar_url }}" - } - ] - } - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK - - <%- endif %> - -<%- endblock set_pipeline_exit_status_extra_steps %> diff --git a/.github/workflows/templates/release.yml.jinja b/.github/workflows/templates/release.yml.jinja deleted file mode 100644 index b020138b..00000000 --- a/.github/workflows/templates/release.yml.jinja +++ /dev/null @@ -1,495 +0,0 @@ -<%- set prepare_workflow_salt_version_input = "${{ inputs.salt-version }}" %> -<%- set prepare_workflow_skip_pkg_download_test_suite = "${{ inputs.skip-salt-pkg-download-test-suite && ' --skip-pkg-download-tests' || '' }}" %> -<%- set gh_environment = "release" %> -<%- extends 'layout.yml.jinja' %> - - -<%- block name %> - -name: <{ workflow_name }> -run-name: "<{ workflow_name }> (branch: ${{ github.ref_name }}; version: ${{ inputs.salt-version }})" - -<%- endblock name %> - - -<%- block on %> - -on: - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to get from staging to publish the release. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - skip-salt-pkg-download-test-suite: - type: boolean - default: false - description: Skip running the Salt packages download test suite. - -<%- endblock on %> - -<%- block concurrency %> - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }} - cancel-in-progress: false - -<%- endblock concurrency %> - -<%- block permissions %> - -permissions: - contents: write # To be able to publish the release - -<%- endblock permissions %> - -<%- block pre_jobs %> - - <%- set job_name = "check-requirements" %> - - <{ job_name }>: - <%- do prepare_workflow_needs.append(job_name) %> - name: Check Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: <{ gh_environment }>-check - steps: - - name: Check For Admin Permission - uses: actions-cool/check-user-permission@v2 - with: - require: admin - username: ${{ github.triggering_actor }} - - -<%- endblock pre_jobs %> - -<%- if includes.get("prepare-workflow", True) %> -<%- block prepare_workflow_job %> -<%- do conclusion_needs.append("prepare-workflow") %> - - prepare-workflow: - name: Prepare Workflow Run - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - environment: <{ gh_environment }> - <%- if prepare_workflow_needs %> - needs: - <%- for need in prepare_workflow_needs.iter(consume=False) %> - - <{ need }> - <%- endfor %> - <%- endif %> - outputs: - 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 }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Full clone to also get the tags to get the right salt version - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - 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: Setup Salt Version - id: setup-salt-version - uses: ./.github/actions/setup-salt-version - with: - salt-version: "<{ prepare_workflow_salt_version_input }>" - validate-version: true - - - name: Check Existing Releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-unreleased --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - if [ "${{ github.event.repository.private }}" = "true" ]; then - tools pkg repo confirm-unreleased --repository saltstack/salt ${{ steps.setup-salt-version.outputs.salt-version }} - fi - - - name: Check Release Staged - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools pkg repo confirm-staged --repository ${{ github.repository }} ${{ steps.setup-salt-version.outputs.salt-version }} - - - name: Get Salt Releases - id: get-salt-releases - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tools ci get-releases - - - name: Check Salt Releases - run: | - echo '${{ steps.get-salt-releases.outputs.latest-release }}' | jq -C '.' - echo '${{ steps.get-salt-releases.outputs.releases }}' | jq -C '.' - - - name: Set Cache Seed Output - id: set-cache-seed - run: | - tools ci define-cache-seed ${{ env.CACHE_SEED }} - - <%- endblock prepare_workflow_job %> - <%- endif %> - -<%- block jobs %> - <{- super() }> - - download-onedir-artifact: - name: Download Staging Onedir Artifact - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - environment: <{ gh_environment }> - needs: - - prepare-workflow - strategy: - fail-fast: false - matrix: - include: - - platform: linux - arch: x86_64 - - platform: linux - arch: aarch64 - - platform: windows - arch: amd64 - - platform: windows - arch: x86 - - platform: darwin - arch: x86_64 - - platform: darwin - arch: aarch64 - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Download Onedir Tarball Artifact - run: | - tools release download-onedir-artifact --platform=${{ matrix.platform }} --arch=${{ matrix.arch }} ${{ inputs.salt-version }} - - - name: Upload Onedir Tarball as an Artifact - uses: actions/upload-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-onedir-${{ matrix.platform }}-${{ matrix.arch }}.tar.xz - path: artifacts/salt-${{ inputs.salt-version }}-onedir-${{ matrix.platform }}-${{ matrix.arch }}.tar.xz* - retention-days: 7 - if-no-files-found: error - - <%- include "build-ci-deps.yml.jinja" %> - - backup: - name: Backup - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - needs: - - prepare-workflow - environment: <{ gh_environment }> - outputs: - backup-complete: ${{ steps.backup.outputs.backup-complete }} - - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - - - name: Setup Rclone - uses: AnimMouse/setup-rclone@v1 - with: - version: v1.61.1 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Backup Previous Releases - id: backup - run: | - tools pkg repo backup-previous-releases - - publish-repositories: - <%- do conclusion_needs.append('publish-repositories') %> - name: Publish Repositories - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - needs: - - prepare-workflow - - backup - - download-onedir-artifact - environment: <{ gh_environment }> - - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Publish Release Repository - env: - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - run: | - tools pkg repo publish <{ gh_environment }> ${{ needs.prepare-workflow.outputs.salt-version }} - - <%- if includes.get("test-pkg-downloads", True) %> - <%- include "test-salt-pkg-repo-downloads.yml.jinja" %> - <%- endif %> - - release: - <%- do conclusion_needs.append('release') %> - name: Release v${{ needs.prepare-workflow.outputs.salt-version }} - if: ${{ always() && ! failure() && ! cancelled() }} - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - needs: - - prepare-workflow - - backup - - publish-repositories - <%- for need in test_repo_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - environment: <{ gh_environment }> - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - with: - ssh-key: ${{ secrets.GHA_SSH_KEY }} - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text | jq .default_key -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -d - \ - | gpg --import - - sync - aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/signing/repo-signing-keys-sha256-2023 \ - --query SecretString --output text| jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "${SECRETS_KEY_FILE}" -o "${GNUPGHOME}/passphrase" -d - - sync - rm "$SECRETS_KEY_FILE" - echo "passphrase-file ${GNUPGHOME}/passphrase" >> "${GNUPGHOME}/gpg.conf" - - - name: Prepare Release - id: prepare-release - run: | - tools pkg repo publish github --repository ${{ github.repository }} --key-id=<{ gpg_key_id }> ${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Configure Git - shell: bash - run: | - git config --global --add safe.directory "$(pwd)" - git config --global user.name "Salt Project Packaging" - git config --global user.email saltproject-packaging@vmware.com - git config --global user.signingkey <{ gpg_key_id }> - git config --global commit.gpgsign true - - - name: Apply The Release Patch - run: | - git am --committer-date-is-author-date release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - rm release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - - - name: Tag The v${{ needs.prepare-workflow.outputs.salt-version }} Release - run: | - git tag -m "Release v${{ needs.prepare-workflow.outputs.salt-version }}" -as v${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Push Changes - uses: ad-m/github-push-action@b87afee92c6e70ea888be6203a3e9426fda49839 - with: - ssh: true - tags: true - atomic: true - branch: ${{ github.ref }} - - - name: Create Github Release - uses: ncipollo/release-action@v1.12.0 - with: - artifactErrorsFailBuild: true - artifacts: ${{ steps.prepare-release.outputs.release-artifacts }} - bodyFile: ${{ steps.prepare-release.outputs.release-messsage-file }} - draft: false - generateReleaseNotes: false - makeLatest: fromJSON(${{ steps.prepare-release.outputs.make-latest }}) - name: v${{ needs.prepare-workflow.outputs.salt-version }} - prerelease: ${{ contains(needs.prepare-workflow.outputs.salt-version, 'rc') }} - removeArtifacts: true - replacesArtifacts: true - tag: v${{ needs.prepare-workflow.outputs.salt-version }} - - - name: Upload PyPi Artifacts - uses: actions/upload-artifact@v3 - with: - name: pypi-artifacts - path: | - release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - release-artifacts/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.asc - retention-days: 7 - if-no-files-found: error - - {#- Disable automatic backup restore - restore: - <%- do conclusion_needs.append('restore') %> - name: Restore Release Bucket From Backup - if: ${{ always() && needs.backup.outputs.backup-complete == 'true' && (failure() || cancelled()) }} - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - needs: - - backup - - release - <%- for need in test_repo_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - environment: <{ gh_environment }> - steps: - - name: Clone The Salt Repository - uses: actions/checkout@v4 - with: - ssh-key: ${{ secrets.GHA_SSH_KEY }} - - - name: Setup Rclone - uses: AnimMouse/setup-rclone@v1 - with: - version: v1.61.1 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Restore Release Bucket - run: | - tools pkg repo restore-previous-releases - #} - - publish-pypi: - <%- do conclusion_needs.append('publish-pypi') %> - name: Publish to PyPi - if: ${{ always() && ! failure() && ! cancelled() && github.event.repository.fork != true }} - needs: - - prepare-workflow - - release {#- Disable automatic backup restore - - restore #} - environment: <{ gh_environment }> - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - TWINE_PASSWORD=$(aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/publishing/publish-pypi \ - --query SecretString --output text | jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "$SECRETS_KEY_FILE" -d -) - echo "::add-mask::$TWINE_PASSWORD" - echo "twine-password=$TWINE_PASSWORD" >> "${GITHUB_OUTPUT}" - - - name: Download PyPi Artifacts - uses: actions/download-artifact@v3 - with: - name: pypi-artifacts - path: artifacts/release - - - name: Publish to PyPi - env: - TWINE_PASSWORD: "${{ steps.get-secrets.outputs.twine-password }}" - run: | - tools pkg pypi-upload artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - -<%- endblock jobs %> - -<%- block set_pipeline_exit_status_extra_steps %> - - - run: | - # shellcheck disable=SC2129 - if [ "${{ steps.get-workflow-info.outputs.conclusion }}" != "success" ]; then - echo 'To restore the release bucket run:' >> "${GITHUB_STEP_SUMMARY}" - echo '```' >> "${GITHUB_STEP_SUMMARY}" - echo 'tools pkg repo restore-previous-releases' >> "${GITHUB_STEP_SUMMARY}" - echo '```' >> "${GITHUB_STEP_SUMMARY}" - fi -<%- endblock set_pipeline_exit_status_extra_steps %> diff --git a/.github/workflows/templates/scheduled.yml.jinja b/.github/workflows/templates/scheduled.yml.jinja deleted file mode 100644 index 4c78a978..00000000 --- a/.github/workflows/templates/scheduled.yml.jinja +++ /dev/null @@ -1,45 +0,0 @@ -<%- set prepare_workflow_if_check = "${{ fromJSON(needs.workflow-requirements.outputs.requirements-met) }}" %> -<%- set skip_test_coverage_check = "false" %> -<%- set skip_junit_reports_check = "false" %> -<%- extends 'ci.yml.jinja' %> - - -<%- block name %> - -name: <{ workflow_name }> -run-name: "<{ workflow_name }> (branch: ${{ github.ref_name }})" - -<%- endblock name %> - - -<%- block on %> - -on: - schedule: - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule - - cron: '0 */8 * * *' # Run every 8 hours - -<%- endblock %> - -<%- block concurrency %> - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: false - -<%- endblock %> - - -<%- block permissions %> -<{- super() }> -<%- if workflow_slug == "scheduled" %> - actions: write # to trigger branch scheduled builds -<%- endif %> -<%- endblock permissions %> - -<%- block pre_jobs %> - - <%- include "workflow-requirements-check.yml.jinja" %> - <%- include "trigger-branch-workflows.yml.jinja" %> - -<%- endblock pre_jobs %> diff --git a/.github/workflows/templates/staging.yml.jinja b/.github/workflows/templates/staging.yml.jinja deleted file mode 100644 index c84ade07..00000000 --- a/.github/workflows/templates/staging.yml.jinja +++ /dev/null @@ -1,231 +0,0 @@ -<%- set prepare_workflow_if_check = False %> -<%- set prepare_workflow_salt_version_input = "${{ inputs.salt-version }}" %> -<%- set prepare_workflow_skip_test_suite = "${{ inputs.skip-salt-test-suite && ' --skip-tests' || '' }}" %> -<%- set prepare_workflow_skip_pkg_test_suite = "${{ inputs.skip-salt-pkg-test-suite && ' --skip-pkg-tests' || '' }}" %> -<%- set prepare_workflow_skip_pkg_download_test_suite = "${{ inputs.skip-salt-pkg-download-test-suite && ' --skip-pkg-download-tests' || '' }}" %> -<%- set gh_environment = "staging" %> -<%- set prepare_actual_release = True %> -<%- set skip_test_coverage_check = "true" %> -<%- set skip_junit_reports_check = "true" %> -<%- extends 'nightly.yml.jinja' %> - -<%- block name %> - -name: <{ workflow_name }> -run-name: "<{ workflow_name }> (branch: ${{ github.ref_name }}; version: ${{ inputs.salt-version }})" - -<%- endblock name %> - -<%- block on %> - -on: - workflow_dispatch: - inputs: - salt-version: - type: string - required: true - description: > - The Salt version to set prior to building packages and staging the release. - (DO NOT prefix the version with a v, ie, 3006.0 NOT v3006.0). - sign-windows-packages: - type: boolean - default: false - description: Sign Windows Packages - skip-test-pypi-publish: - type: boolean - default: false - description: Skip publishing the source package to Test PyPi(For example, CVE releases) - skip-salt-test-suite: - type: boolean - default: false - description: Skip running the Salt test suite. - skip-salt-pkg-test-suite: - type: boolean - default: false - description: Skip running the Salt packages test suite. - skip-salt-pkg-download-test-suite: - type: boolean - default: false - description: Skip running the Salt packages download test suite. - -<%- endblock on %> - -<%- block concurrency %> - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.repository }} - cancel-in-progress: false - -<%- endblock concurrency %> - - -<%- block pre_jobs %> - - <%- set job_name = "check-requirements" %> - - <{ job_name }>: - <%- do prepare_workflow_needs.append(job_name) %> - name: Check Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - environment: <{ gh_environment }>-check - steps: - - name: Check For Admin Permission - uses: actions-cool/check-user-permission@v2 - with: - require: admin - username: ${{ github.triggering_actor }} - -<%- endblock pre_jobs %> - - -<%- block jobs %> - <{- super() }> - - upload-release-artifacts: - <%- do conclusion_needs.append('upload-release-artifacts') %> - name: Upload Release Artifacts - needs: - - prepare-workflow - - build-docs - - build-src-repo - environment: <{ gh_environment }> - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - steps: - - uses: actions/checkout@v4 - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Download Release Patch - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}.patch - path: artifacts/release - - - name: Download Source Repository - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-<{ gh_environment }>-src-repo - path: artifacts/release - - - name: Download Release Documentation (HTML) - uses: actions/download-artifact@v3 - with: - name: salt-${{ needs.prepare-workflow.outputs.salt-version }}-docs-html.tar.xz - path: artifacts/release - - - name: Download Release Documentation (ePub) - uses: actions/download-artifact@v3 - with: - name: Salt-${{ needs.prepare-workflow.outputs.salt-version }}.epub - path: artifacts/release - - - name: Show Release Artifacts - run: | - tree -a artifacts/release - - {#- - - - name: Download Release Documentation (PDF) - uses: actions/download-artifact@v3 - with: - name: Salt-${{ needs.prepare-workflow.outputs.salt-version }}.pdf - path: artifacts/release - - #} - - - name: Upload Release Artifacts - run: | - tools release upload-artifacts ${{ needs.prepare-workflow.outputs.salt-version }} artifacts/release - - - name: Upload PyPi Artifacts - uses: actions/upload-artifact@v3 - with: - name: pypi-artifacts - path: | - artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz.asc - retention-days: 7 - if-no-files-found: error - - <%- if includes.get("test-pkg-downloads", True) %> - <%- include "test-salt-pkg-repo-downloads.yml.jinja" %> - <%- endif %> - - publish-pypi: - <%- do conclusion_needs.append('publish-pypi') %> - name: Publish to PyPi(test) - if: ${{ inputs.skip-test-pypi-publish != true && github.event.repository.fork != true }} - needs: - - prepare-workflow - - upload-release-artifacts - <%- for need in test_salt_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- for need in test_salt_pkg_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - <%- for need in test_repo_needs.iter(consume=True) %> - - <{ need }> - <%- endfor %> - environment: <{ gh_environment }> - runs-on: - - self-hosted - - linux - - repo-<{ gh_environment }> - steps: - - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }} - - - name: Setup GnuPG - run: | - sudo install -d -m 0700 -o "$(id -u)" -g "$(id -g)" /run/gpg - GNUPGHOME="$(mktemp -d -p /run/gpg)" - echo "GNUPGHOME=${GNUPGHOME}" >> "$GITHUB_ENV" - cat < "${GNUPGHOME}/gpg.conf" - batch - no-tty - pinentry-mode loopback - EOF - - - name: Get Secrets - id: get-secrets - env: - SECRETS_KEY: ${{ secrets.SECRETS_KEY }} - run: | - SECRETS_KEY_FILE=$(mktemp /tmp/output.XXXXXXXXXX) - echo "$SECRETS_KEY" > "$SECRETS_KEY_FILE" - TWINE_PASSWORD=$(aws --region us-west-2 secretsmanager get-secret-value --secret-id /cmbu-saltstack/publishing/publish-test-pypi \ - --query SecretString --output text | jq .default_passphrase -r | base64 -d \ - | gpg --passphrase-file "$SECRETS_KEY_FILE" -d -) - echo "::add-mask::$TWINE_PASSWORD" - echo "twine-password=$TWINE_PASSWORD" >> "${GITHUB_OUTPUT}" - - - name: Download PyPi Artifacts - uses: actions/download-artifact@v3 - with: - name: pypi-artifacts - path: artifacts/release - - - name: Publish to Test PyPi - env: - TWINE_PASSWORD: "${{ steps.get-secrets.outputs.twine-password }}" - run: | - tools pkg pypi-upload --test artifacts/release/salt-${{ needs.prepare-workflow.outputs.salt-version }}.tar.gz - -<%- endblock jobs %> diff --git a/.github/workflows/templates/test-package-downloads-action.yml.jinja b/.github/workflows/templates/test-package-downloads-action.yml.jinja deleted file mode 100644 index 4f9502d7..00000000 --- a/.github/workflows/templates/test-package-downloads-action.yml.jinja +++ /dev/null @@ -1,741 +0,0 @@ -name: Test Download Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version of the packages to install and test - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - environment: - required: true - type: string - description: The environment to run tests against - latest-release: - required: true - type: string - description: The latest salt release - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - nox-session: - required: false - type: string - description: The nox session to run - default: ci-test-onedir - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - linux: - name: Linux - runs-on: - - self-hosted - - linux - - bastion - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - <%- for slug, arch, pkg_type in test_salt_pkg_downloads_listing["linux"] %> - - distro-slug: <{ slug }> - arch: <{ arch }> - pkg-type: <{ pkg_type }> - <%- endfor %> - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }}-pkg-download-linux - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ matrix.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ matrix.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ matrix.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs ${{ matrix.distro-slug }} -- download-pkgs - - - name: Run Package Download Tests - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs --rerun-failures ${{ matrix.distro-slug }} -- download-pkgs - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.spin-up-vm.outcome == 'success' && job.status != 'cancelled' - run: | - tools --timestamps vm combine-coverage ${{ matrix.distro-slug }} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ matrix.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ matrix.distro-slug }} || true - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - 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 - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' && steps.download-artifacts-from-vm.outcome == 'success' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - macos: - name: MacOS - runs-on: ${{ matrix.distro-slug }} - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - <%- for slug, arch, pkg_type in test_salt_pkg_downloads_listing["macos"] %> - - distro-slug: <{ slug }> - arch: <{ arch }> - pkg-type: <{ pkg_type }> - <%- endfor %> - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-darwin-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - path: artifacts/ - - - name: Install System Dependencies - run: | - brew install tree - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-darwin-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - - - name: Set up Python ${{ inputs.python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.python-version }}" - update-environment: true - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Decompress .nox Directory - run: | - nox --force-color -e decompress-dependencies -- ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "1" - PRINT_TEST_PLAN_ONLY: "1" - PRINT_SYSTEM_INFO: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- download-pkgs - - - name: Run Package Download Tests - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ matrix.distro-slug }} - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- download-pkgs - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - nox --force-color -e combine-coverage - - - name: Prepare Test Run Artifacts - id: download-artifacts-from-vm - if: always() && job.status != 'cancelled' - run: | - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - 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/macos/codecov - curl -Os https://uploader.codecov.io/latest/macos/codecov.SHA256SUM - curl -Os https://uploader.codecov.io/latest/macos/codecov.SHA256SUM.sig - gpg --verify codecov.SHA256SUM.sig codecov.SHA256SUM - shasum -a 256 -c codecov.SHA256SUM - chmod +x codecov - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - windows: - name: Windows - runs-on: - - self-hosted - - linux - - bastion - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - <%- for slug, arch, pkg_type in test_salt_pkg_downloads_listing["windows"] %> - - distro-slug: <{ slug }> - arch: <{ arch }> - pkg-type: <{ pkg_type }> - <%- endfor %> - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-windows-${{ matrix.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-windows-${{ matrix.arch }}.tar.xz - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }}-pkg-download-windows - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ matrix.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ matrix.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ matrix.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs ${{ matrix.distro-slug }} -- download-pkgs - - - name: Run Package Download Tests - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs --rerun-failures ${{ matrix.distro-slug }} -- download-pkgs - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.spin-up-vm.outcome == 'success' && job.status != 'cancelled' - run: | - tools --timestamps vm combine-coverage ${{ matrix.distro-slug }} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ matrix.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ matrix.distro-slug }} || true - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - 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 - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' && steps.download-artifacts-from-vm.outcome == 'success' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }} ${{ matrix.pkg-type }} ) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true diff --git a/.github/workflows/templates/test-salt-pkg-repo-downloads.yml.jinja b/.github/workflows/templates/test-salt-pkg-repo-downloads.yml.jinja deleted file mode 100644 index 005c5272..00000000 --- a/.github/workflows/templates/test-salt-pkg-repo-downloads.yml.jinja +++ /dev/null @@ -1,36 +0,0 @@ - - <%- set job_name = "pkg-download-tests" %> - - <{ job_name }>: - <%- do test_repo_needs.append(job_name) %> - <%- do conclusion_needs.append(job_name) %> - name: Package Downloads - <%- if gh_environment == "staging" %> - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg-download'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - <%- else %> - if: ${{ inputs.skip-salt-pkg-download-test-suite == false }} - <%- endif %> - needs: - - prepare-workflow - - publish-repositories - <%- for slug in test_salt_pkg_downloads_needs_slugs %> - - <{ slug }> - <%- endfor %> - <%- if gh_environment == "release" %> - - download-onedir-artifact - <%- else %> - - build-salt-onedir-linux - - build-salt-onedir-macos - - build-salt-onedir-windows - <%- endif %> - uses: ./.github/workflows/test-package-downloads-action.yml - with: - nox-session: ci-test-onedir - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - environment: <{ gh_environment }> - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - skip-code-coverage: true - latest-release: "${{ needs.prepare-workflow.outputs.latest-release }}" - secrets: inherit diff --git a/.github/workflows/templates/test-salt-pkg.yml.jinja b/.github/workflows/templates/test-salt-pkg.yml.jinja deleted file mode 100644 index eb8b43d0..00000000 --- a/.github/workflows/templates/test-salt-pkg.yml.jinja +++ /dev/null @@ -1,91 +0,0 @@ - <%- for slug, display_name, arch, pkg_type, fips in test_salt_pkg_listing["linux"] %> - <%- set job_name = "{}-pkg-tests".format(slug.replace(".", "")) %> - - <{ job_name }>: - <%- do test_salt_pkg_needs.append(job_name) %> - name: <{ display_name }> Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-<{ pkg_type }>-pkgs-onedir - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: linux - arch: <{ arch }> - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - pkg-type: <{ pkg_type }> - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - <%- if fips == "fips" %> - fips: true - <%- endif %> - - <%- endfor %> - - - - <%- for slug, display_name, arch in test_salt_pkg_listing["macos"] %> - <%- set job_name = "{}-pkg-tests".format(slug.replace(".", "")) %> - - <{ job_name }>: - <%- do test_salt_pkg_needs.append(job_name) %> - name: <{ display_name }> Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - build-macos-pkgs-onedir - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-packages-action-macos.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: darwin - arch: <{ arch }> - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - pkg-type: macos - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - <%- endfor %> - - - <%- for slug, display_name, arch in test_salt_pkg_listing["windows"] %> - <%- for pkg_type in ("NSIS", "MSI") %> - <%- set job_name = "{}-{}-pkg-tests".format(slug.replace(".", ""), pkg_type.lower()) %> - - <{ job_name }>: - <%- do test_salt_pkg_needs.append(job_name) %> - name: <{ display_name }> <{ pkg_type }> Package Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test-pkg'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - build-windows-pkgs-onedir - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-packages-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: windows - arch: <{ arch }> - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - pkg-type: <{ pkg_type }> - nox-version: <{ nox_version }> - python-version: "<{ gh_actions_workflows_python_version }>" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }} - - <%- endfor %> - <%- endfor %> diff --git a/.github/workflows/templates/test-salt.yml.jinja b/.github/workflows/templates/test-salt.yml.jinja deleted file mode 100644 index 259d1a78..00000000 --- a/.github/workflows/templates/test-salt.yml.jinja +++ /dev/null @@ -1,92 +0,0 @@ -{#- - Full test runs. Each chunk should never take more than 2 hours. We allow 3, and on windows we add 30 more minutes. - Partial test runs(no chunk parallelization), 6 Hours -#} -<%- set full_testrun_timeout_value = 180 %> -<%- set partial_testrun_timeout_value = 360 %> -<%- set windows_full_testrun_timeout_value = full_testrun_timeout_value + 30 %> - - <%- for slug, display_name, arch in test_salt_listing["windows"] %> - - <{ slug.replace(".", "") }>: - <%- do test_salt_needs.append(slug.replace(".", "")) %> - name: <{ display_name }> Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: windows - arch: amd64 - nox-version: <{ nox_version }> - gh-actions-python-version: "<{ gh_actions_workflows_python_version }>" - testrun: ${{ needs.prepare-workflow.outputs.testrun }} - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - workflow-slug: <{ workflow_slug }> - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ windows_full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }} - - <%- endfor %> - - - <%- for slug, display_name, arch in test_salt_listing["macos"] %> - - <{ slug.replace(".", "") }>: - <%- do test_salt_needs.append(slug.replace(".", "")) %> - name: <{ display_name }> Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }} - needs: - - prepare-workflow - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-action-macos.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: darwin - arch: <{ arch }> - nox-version: <{ nox_version }> - gh-actions-python-version: "<{ gh_actions_workflows_python_version }>" - testrun: ${{ needs.prepare-workflow.outputs.testrun }} - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - workflow-slug: <{ workflow_slug }> - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }} - - <%- endfor %> - - <%- for slug, display_name, arch, fips in test_salt_listing["linux"] %> - - <{ slug.replace(".", "") }>: - <%- do test_salt_needs.append(slug.replace(".", "")) %> - name: <{ display_name }> Test - if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }} - needs: - - prepare-workflow - - <{ slug.replace(".", "") }>-ci-deps - uses: ./.github/workflows/test-action.yml - with: - distro-slug: <{ slug }> - nox-session: ci-test-onedir - platform: linux - arch: <{ arch }> - nox-version: <{ nox_version }> - gh-actions-python-version: "<{ gh_actions_workflows_python_version }>" - testrun: ${{ needs.prepare-workflow.outputs.testrun }} - salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}" - cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }> - skip-code-coverage: <{ skip_test_coverage_check }> - skip-junit-reports: <{ skip_junit_reports_check }> - workflow-slug: <{ workflow_slug }> - timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }} - <%- if fips == "fips" %> - fips: true - <%- endif %> - - <%- endfor %> diff --git a/.github/workflows/templates/trigger-branch-workflows.yml.jinja b/.github/workflows/templates/trigger-branch-workflows.yml.jinja deleted file mode 100644 index 24d0147b..00000000 --- a/.github/workflows/templates/trigger-branch-workflows.yml.jinja +++ /dev/null @@ -1,20 +0,0 @@ - - - <%- set job_name = "trigger-branch-{}-builds".format(workflow_slug) %> - <%- set branches = ["3006.x"] %> - - <{ job_name }>: - <%- do conclusion_needs.append(job_name) %> - name: Trigger Branch Workflows - if: ${{ github.event_name == 'schedule' && fromJSON(needs.workflow-requirements.outputs.requirements-met) }} - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - workflow-requirements - steps: - <%- for branch in branches %> - - name: Trigger <{ branch }> branch - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh workflow run <{ workflow_slug }>.yml --repo ${{ github.repository }} --ref <{ branch }> - <%- endfor %> diff --git a/.github/workflows/templates/workflow-requirements-check.yml.jinja b/.github/workflows/templates/workflow-requirements-check.yml.jinja deleted file mode 100644 index a18c13c6..00000000 --- a/.github/workflows/templates/workflow-requirements-check.yml.jinja +++ /dev/null @@ -1,29 +0,0 @@ - - <%- set job_name = "workflow-requirements" %> - - <{ job_name }>: - <%- do prepare_workflow_needs.append(job_name) %> - name: Check Workflow Requirements - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - outputs: - requirements-met: ${{ steps.check-requirements.outputs.requirements-met }} - steps: - - name: Check Requirements - id: check-requirements - run: | - if [ "${{ vars.RUN_SCHEDULED_BUILDS }}" = "1" ]; then - MSG="Running workflow because RUN_SCHEDULED_BUILDS=1" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - elif [ "${{ github.event.repository.fork }}" = "true" ]; then - MSG="Not running workflow because ${{ github.repository }} is a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=false" >> "${GITHUB_OUTPUT}" - else - MSG="Running workflow because ${{ github.repository }} is not a fork" - echo "${MSG}" - echo "${MSG}" >> "${GITHUB_STEP_SUMMARY}" - echo "requirements-met=true" >> "${GITHUB_OUTPUT}" - fi diff --git a/.github/workflows/test-action-macos.yml b/.github/workflows/test-action-macos.yml deleted file mode 100644 index 8554e3f8..00000000 --- a/.github/workflows/test-action-macos.yml +++ /dev/null @@ -1,442 +0,0 @@ ---- -name: Test Artifact(macOS) - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - nox-session: - required: true - type: string - description: The nox session to run - testrun: - required: true - type: string - description: JSON string containing information about what and how to run the test suite - gh-actions-python-version: - required: false - type: string - description: The python version to run tests with - default: "3.11" - salt-version: - type: string - required: true - description: The Salt version to set prior to running tests. - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - nox-version: - required: true - type: string - description: The nox version to install - timeout-minutes: - required: true - type: number - description: Timeout, in minutes, for the test job - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - skip-junit-reports: - required: false - type: boolean - description: Skip Publishing JUnit Reports - default: false - workflow-slug: - required: false - type: string - description: Which workflow is running. - default: ci - -env: - COLUMNS: 190 - PIP_INDEX_URL: "https://pypi-proxy.saltstack.net/root/local/+simple/" - PIP_EXTRA_INDEX_URL: "https://pypi.org/simple" - -jobs: - - generate-matrix: - name: Test Matrix - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - outputs: - matrix-include: ${{ steps.generate-matrix.outputs.matrix }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Generate Test Matrix - id: generate-matrix - run: | - tools ci matrix --workflow=${{ inputs.workflow-slug }} ${{ inputs.distro-slug }} - - test: - name: Test - runs-on: ${{ inputs.distro-slug }} - timeout-minutes: ${{ inputs.timeout-minutes }} - needs: - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.matrix-include) }} - env: - SALT_TRANSPORT: ${{ matrix.transport }} - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Salt Version - run: | - echo "${{ inputs.salt-version }}" > salt/_version.txt - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: Install System Dependencies - run: | - brew install tree - - - name: Download cached nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.gh-actions-python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Set up Python ${{ inputs.gh-actions-python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.gh-actions-python-version }}" - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Decompress .nox Directory - run: | - nox --force-color -e decompress-dependencies -- ${{ inputs.distro-slug }} - - - name: Download testrun-changed-files.txt - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' }} - uses: actions/download-artifact@v3 - with: - name: testrun-changed-files.txt - - - name: Show System Info & Test Plan - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "1" - PRINT_TEST_PLAN_ONLY: "1" - PRINT_SYSTEM_INFO: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "1" - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- -k "mac or darwin" - - - name: Run Fast/Changed Tests - id: run-fast-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] == false }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code \ - --from-filenames=testrun-changed-files.txt - - - name: Run Slow/Changed Tests - id: run-slow-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] == false }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --slow-tests \ - --from-filenames=testrun-changed-files.txt - - - name: Run Core/Changed Tests - id: run-core-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] == false }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --core-tests \ - --from-filenames=testrun-changed-files.txt - - - name: Run Fast Tests - id: run-fast-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code - - - name: Run Slow Tests - id: run-slow-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --slow-tests - - - name: Run Core Tests - id: run-core-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --core-tests - - - name: Run Flaky Tests - id: run-flaky-tests - if: ${{ fromJSON(inputs.testrun)['selected_tests']['flaky'] }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - -k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --flaky-jail - - - name: Run Full Tests - id: run-full-tests - if: ${{ fromJSON(inputs.testrun)['type'] == 'full' }} - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \ - --slow-tests --core-tests -k "mac or darwin" - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false - run: | - nox --force-color -e combine-coverage - - - name: Prepare Test Run Artifacts - id: download-artifacts-from-vm - if: always() - run: | - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - if [ "${{ inputs.skip-code-coverage }}" != "true" ]; then - mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }} - fi - - - name: Upload Code Coverage Test Run Artifacts - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - uses: actions/upload-artifact@v3 - with: - name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: | - artifacts/coverage/ - - - name: Upload JUnit XML Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }} - path: | - artifacts/xml-unittests-output/ - - - name: Upload Test Run Log Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }} - path: | - artifacts/logs - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && inputs.skip-junit-reports == false - with: - check_name: Test Results(${{ inputs.distro-slug }}, transport=${{ matrix.transport }}, tests-chunk=${{ matrix.tests-chunk }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - report: - name: Test Reports - if: always() && inputs.skip-code-coverage == false && needs.test.result != 'cancelled' && needs.test.result != 'skipped' - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - needs: - - test - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Code Coverage Test Run Artifacts - uses: actions/download-artifact@v3 - if: ${{ inputs.skip-code-coverage == false }} - id: download-coverage-artifacts - with: - name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: artifacts/coverage/ - - - name: Show Downloaded Test Run Artifacts - run: | - tree -a artifacts - - - name: Set up Python ${{ inputs.gh-actions-python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.gh-actions-python-version }}" - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Create XML Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' && job.status != 'cancelled' - run: | - nox --force-color -e create-xml-coverage-reports - mv artifacts/coverage/salt.xml artifacts/coverage/salt..${{ inputs.distro-slug }}..${{ inputs.nox-session }}.xml - mv artifacts/coverage/tests.xml artifacts/coverage/tests..${{ inputs.distro-slug }}..${{ inputs.nox-session }}.xml - - - name: Report Salt Code Coverage - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - nox --force-color -e report-coverage -- salt - - - name: Report Combined Code Coverage - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - nox --force-color -e report-coverage - - - name: Rename Code Coverage DB - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }} - - - name: Upload Code Coverage DB - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: all-testrun-coverage-artifacts - path: artifacts/coverage diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml deleted file mode 100644 index 9b248606..00000000 --- a/.github/workflows/test-action.yml +++ /dev/null @@ -1,396 +0,0 @@ ---- -name: Test Artifact - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - nox-session: - required: true - type: string - description: The nox session to run - testrun: - required: true - type: string - description: JSON string containing information about what and how to run the test suite - salt-version: - type: string - required: true - description: The Salt version to set prior to running tests. - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - nox-version: - required: true - type: string - description: The nox version to install - timeout-minutes: - required: true - type: number - description: Timeout, in minutes, for the test job - gh-actions-python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - fips: - required: false - type: boolean - default: false - description: Test run with FIPS enabled - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - skip-junit-reports: - required: false - type: boolean - description: Skip Publishing JUnit Reports - default: false - workflow-slug: - required: false - type: string - description: Which workflow is running. - default: ci - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - generate-matrix: - name: Test Matrix - runs-on: - - self-hosted - - linux - - x86_64 - outputs: - matrix-include: ${{ steps.generate-matrix.outputs.matrix }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Generate Test Matrix - id: generate-matrix - run: | - tools ci matrix --workflow=${{ inputs.workflow-slug }} ${{ fromJSON(inputs.testrun)['type'] == 'full' && '--full ' || '' }}${{ inputs.fips && '--fips ' || '' }}${{ inputs.distro-slug }} - - test: - name: Test - runs-on: - - self-hosted - - linux - - bastion - timeout-minutes: ${{ inputs.timeout-minutes }} - needs: - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.matrix-include) }} - env: - SALT_TRANSPORT: ${{ matrix.transport }} - TEST_GROUP: ${{ matrix.test-group || 1 }} - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Salt Version - run: | - echo "${{ inputs.salt-version }}" > salt/_version.txt - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: Download cached nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.gh-actions-python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: PyPi Proxy - run: | - sed -i '7s;^;--index-url=https://pypi-proxy.saltstack.net/root/local/+simple/ --extra-index-url=https://pypi.org/simple\n;' requirements/static/ci/*/*.txt - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Download testrun-changed-files.txt - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' }} - uses: actions/download-artifact@v3 - with: - name: testrun-changed-files.txt - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - env: - TESTS_CHUNK: ${{ matrix.tests-chunk }} - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ inputs.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ inputs.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ inputs.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ inputs.distro-slug }} - - - name: Show System Info & Test Plan - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} ${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} - - - name: Run Fast/Changed Tests - id: run-fast-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] == false }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --suppress-no-test-exit-code \ - --from-filenames=testrun-changed-files.txt - - - name: Run Slow/Changed Tests - id: run-slow-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] == false }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --no-fast-tests --slow-tests --suppress-no-test-exit-code \ - --from-filenames=testrun-changed-files.txt - - - name: Run Core/Changed Tests - id: run-core-changed-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] == false }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --no-fast-tests --core-tests --suppress-no-test-exit-code \ - --from-filenames=testrun-changed-files.txt - - - name: Run Fast Tests - id: run-fast-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \ - ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} ${{ matrix.tests-chunk }} - - - name: Run Slow Tests - id: run-slow-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --no-fast-tests --slow-tests - - - name: Run Core Tests - id: run-core-tests - if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --no-fast-tests --core-tests - - - name: Run Flaky Tests - id: run-flaky-tests - if: ${{ fromJSON(inputs.testrun)['selected_tests']['flaky'] }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ matrix.tests-chunk }} -- --no-fast-tests --flaky-jail - - - name: Run Full Tests - id: run-full-tests - if: ${{ fromJSON(inputs.testrun)['type'] == 'full' }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \ - -E TEST_GROUP ${{ matrix.fips && '--fips ' || '' }}${{ inputs.distro-slug }} ${{ matrix.tests-chunk }} -- --slow-tests --core-tests \ - --test-group-count=${{ matrix.test-group-count || 1 }} --test-group=${{ matrix.test-group || 1 }} - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm combine-coverage ${{ inputs.distro-slug }} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ inputs.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - if [ "${{ inputs.skip-code-coverage }}" != "true" ]; then - mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }}.grp${{ matrix.test-group || '1' }} - fi - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ inputs.distro-slug }} || true - - - name: Upload Code Coverage Test Run Artifacts - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - uses: actions/upload-artifact@v3 - with: - name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: | - artifacts/coverage/ - - - name: Upload JUnit XML Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }} - path: | - artifacts/xml-unittests-output/ - - - name: Upload Test Run Log Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }} - path: | - artifacts/logs - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && inputs.skip-junit-reports == false && job.status != 'cancelled' - with: - check_name: Test Results(${{ inputs.distro-slug }}, transport=${{ matrix.transport }}, tests-chunk=${{ matrix.tests-chunk }}, group=${{ matrix.test-group || '1' }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - report: - name: Test Reports - if: always() && inputs.skip-code-coverage == false && needs.test.result != 'cancelled' && needs.test.result != 'skipped' - runs-on: - - self-hosted - - linux - - x86_64 - needs: - - test - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Code Coverage Test Run Artifacts - uses: actions/download-artifact@v3 - if: ${{ inputs.skip-code-coverage == false }} - id: download-coverage-artifacts - with: - name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }} - path: artifacts/coverage/ - - - name: Show Downloaded Test Run Artifacts - run: | - tree -a artifacts - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Create XML Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' && job.status != 'cancelled' - run: | - nox --force-color -e create-xml-coverage-reports - mv artifacts/coverage/salt.xml artifacts/coverage/salt..${{ inputs.distro-slug }}..${{ inputs.nox-session }}.xml - mv artifacts/coverage/tests.xml artifacts/coverage/tests..${{ inputs.distro-slug }}..${{ inputs.nox-session }}.xml - - - name: Report Salt Code Coverage - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - nox --force-color -e report-coverage -- salt - - - name: Report Combined Code Coverage - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - nox --force-color -e report-coverage - - - name: Rename Code Coverage DB - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - continue-on-error: true - run: | - mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }} - - - name: Upload Code Coverage DB - if: always() && inputs.skip-code-coverage == false && steps.download-coverage-artifacts.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: all-testrun-coverage-artifacts - path: artifacts/coverage diff --git a/.github/workflows/test-package-downloads-action.yml b/.github/workflows/test-package-downloads-action.yml deleted file mode 100644 index 6bed0c6a..00000000 --- a/.github/workflows/test-package-downloads-action.yml +++ /dev/null @@ -1,888 +0,0 @@ -name: Test Download Packages - -on: - workflow_call: - inputs: - salt-version: - type: string - required: true - description: The Salt version of the packages to install and test - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - environment: - required: true - type: string - description: The environment to run tests against - latest-release: - required: true - type: string - description: The latest salt release - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - nox-session: - required: false - type: string - description: The nox session to run - default: ci-test-onedir - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - linux: - name: Linux - runs-on: - - self-hosted - - linux - - bastion - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - - distro-slug: almalinux-8 - arch: x86_64 - pkg-type: package - - distro-slug: almalinux-8-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: almalinux-8-arm64 - arch: arm64 - pkg-type: package - - distro-slug: almalinux-9 - arch: x86_64 - pkg-type: package - - distro-slug: almalinux-9-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: almalinux-9-arm64 - arch: arm64 - pkg-type: package - - distro-slug: amazonlinux-2 - arch: x86_64 - pkg-type: package - - distro-slug: amazonlinux-2-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: amazonlinux-2-arm64 - arch: arm64 - pkg-type: package - - distro-slug: amazonlinux-2023 - arch: x86_64 - pkg-type: package - - distro-slug: amazonlinux-2023-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: amazonlinux-2023-arm64 - arch: arm64 - pkg-type: package - - distro-slug: centos-7 - arch: x86_64 - pkg-type: package - - distro-slug: centos-7-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: centos-7-arm64 - arch: arm64 - pkg-type: package - - distro-slug: centosstream-8 - arch: x86_64 - pkg-type: package - - distro-slug: centosstream-8-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: centosstream-8-arm64 - arch: arm64 - pkg-type: package - - distro-slug: centosstream-9 - arch: x86_64 - pkg-type: package - - distro-slug: centosstream-9-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: centosstream-9-arm64 - arch: arm64 - pkg-type: package - - distro-slug: debian-10 - arch: x86_64 - pkg-type: package - - distro-slug: debian-11 - arch: x86_64 - pkg-type: package - - distro-slug: debian-11-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: debian-12 - arch: x86_64 - pkg-type: package - - distro-slug: debian-12-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: fedora-37 - arch: x86_64 - pkg-type: package - - distro-slug: fedora-37-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: fedora-37-arm64 - arch: arm64 - pkg-type: package - - distro-slug: fedora-38 - arch: x86_64 - pkg-type: package - - distro-slug: fedora-38-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: fedora-38-arm64 - arch: arm64 - pkg-type: package - - distro-slug: photonos-3 - arch: x86_64 - pkg-type: package - - distro-slug: photonos-3-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: photonos-3-arm64 - arch: arm64 - pkg-type: package - - distro-slug: photonos-4 - arch: x86_64 - pkg-type: package - - distro-slug: photonos-4-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: photonos-4-arm64 - arch: arm64 - pkg-type: package - - distro-slug: photonos-5 - arch: x86_64 - pkg-type: package - - distro-slug: photonos-5-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: photonos-5-arm64 - arch: arm64 - pkg-type: package - - distro-slug: ubuntu-20.04 - arch: x86_64 - pkg-type: package - - distro-slug: ubuntu-20.04-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: ubuntu-22.04 - arch: x86_64 - pkg-type: package - - distro-slug: ubuntu-22.04-arm64 - arch: aarch64 - pkg-type: package - - distro-slug: ubuntu-22.04 - arch: x86_64 - pkg-type: onedir - - distro-slug: ubuntu-22.04-arm64 - arch: aarch64 - pkg-type: onedir - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-linux-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }}-pkg-download-linux - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ matrix.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ matrix.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ matrix.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs ${{ matrix.distro-slug }} -- download-pkgs - - - name: Run Package Download Tests - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs --rerun-failures ${{ matrix.distro-slug }} -- download-pkgs - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.spin-up-vm.outcome == 'success' && job.status != 'cancelled' - run: | - tools --timestamps vm combine-coverage ${{ matrix.distro-slug }} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ matrix.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ matrix.distro-slug }} || true - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - 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 - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' && steps.download-artifacts-from-vm.outcome == 'success' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - macos: - name: MacOS - runs-on: ${{ matrix.distro-slug }} - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - - distro-slug: macos-12 - arch: x86_64 - pkg-type: package - - distro-slug: macos-13 - arch: x86_64 - pkg-type: package - - distro-slug: macos-13-xlarge - arch: arm64 - pkg-type: package - - distro-slug: macos-13-xlarge - arch: aarch64 - pkg-type: onedir - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-darwin-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - path: artifacts/ - - - name: Install System Dependencies - run: | - brew install tree - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-darwin-${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}.tar.xz - - - name: Set up Python ${{ inputs.python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.python-version }}" - update-environment: true - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch == 'arm64' && 'aarch64' || matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Decompress .nox Directory - run: | - nox --force-color -e decompress-dependencies -- ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "1" - PRINT_TEST_PLAN_ONLY: "1" - PRINT_SYSTEM_INFO: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- download-pkgs - - - name: Run Package Download Tests - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - COVERAGE_CONTEXT: ${{ matrix.distro-slug }} - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- download-pkgs - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - nox --force-color -e combine-coverage - - - name: Prepare Test Run Artifacts - id: download-artifacts-from-vm - if: always() && job.status != 'cancelled' - run: | - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - 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/macos/codecov - curl -Os https://uploader.codecov.io/latest/macos/codecov.SHA256SUM - curl -Os https://uploader.codecov.io/latest/macos/codecov.SHA256SUM.sig - gpg --verify codecov.SHA256SUM.sig codecov.SHA256SUM - shasum -a 256 -c codecov.SHA256SUM - chmod +x codecov - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true - - - windows: - name: Windows - runs-on: - - self-hosted - - linux - - bastion - environment: ${{ inputs.environment }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - strategy: - fail-fast: false - matrix: - include: - - distro-slug: windows-2022 - arch: amd64 - pkg-type: nsis - - distro-slug: windows-2022 - arch: amd64 - pkg-type: msi - - distro-slug: windows-2022 - arch: amd64 - pkg-type: onedir - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-windows-${{ matrix.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-windows-${{ matrix.arch }}.tar.xz - - - name: Download cached nox.${{ matrix.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ matrix.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ matrix.arch }}|${{ matrix.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }}-pkg-download-windows - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ matrix.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ matrix.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ matrix.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ matrix.distro-slug }} - - - name: Show System Info & Test Plan - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs ${{ matrix.distro-slug }} -- download-pkgs - - - name: Run Package Download Tests - env: - SALT_RELEASE: "${{ inputs.salt-version }}" - SALT_REPO_ARCH: ${{ matrix.arch }} - LATEST_SALT_RELEASE: "${{ inputs.latest-release }}" - SALT_REPO_TYPE: ${{ inputs.environment }} - SALT_REPO_USER: ${{ secrets.SALT_REPO_USER }} - SALT_REPO_PASS: ${{ secrets.SALT_REPO_PASS }} - SALT_REPO_DOMAIN_RELEASE: ${{ vars.SALT_REPO_DOMAIN_RELEASE || 'repo.saltproject.io' }} - SALT_REPO_DOMAIN_STAGING: ${{ vars.SALT_REPO_DOMAIN_STAGING || 'staging.repo.saltproject.io' }} - SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}" - DOWNLOAD_TEST_PACKAGE_TYPE: ${{ matrix.pkg-type }} - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \ - -E SALT_RELEASE -E SALT_REPO_ARCH -E SALT_REPO_TYPE -E SALT_REPO_USER -E SALT_REPO_PASS \ - -E SALT_REPO_DOMAIN_RELEASE -E SALT_REPO_DOMAIN_STAGING -E LATEST_SALT_RELEASE -E DOWNLOAD_TEST_PACKAGE_TYPE \ - --nox-session=${{ inputs.nox-session }}-pkgs --rerun-failures ${{ matrix.distro-slug }} -- download-pkgs - - - name: Combine Coverage Reports - if: always() && inputs.skip-code-coverage == false && steps.spin-up-vm.outcome == 'success' && job.status != 'cancelled' - run: | - tools --timestamps vm combine-coverage ${{ matrix.distro-slug }} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ matrix.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ matrix.distro-slug }} || true - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Install Codecov CLI - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - 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 - - - name: Upload Source Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/salt.xml ]; then - echo "The artifacts/coverage/salt.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/salt.xml \ - # --flag salt --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/salt.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags salt,${{ matrix.distro-slug }},pkg \ - --name salt.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Tests Code Coverage To Codecov - if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled' - run: | - if [ ! -s artifacts/coverage/tests.xml ]; then - echo "The artifacts/coverage/tests.xml file does not exist" - exit 1 - fi - # We can't yet use tokenless uploads with the codecov CLI - #codecovcli --auto-load-params-from GithubActions --verbose --token ${{ secrets.CODECOV_TOKEN }} \ - # do-upload --git-service github --sha ${{ github.sha }} \ - # --file artifacts/coverage/tests.xml \ - # --flag tests --flag ${{ matrix.distro-slug }} --flag pkg \ - # --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs - n=0 - until [ "$n" -ge 5 ] - do - if ./codecov --file artifacts/coverage/tests.xml \ - --sha ${{ github.event.pull_request.head.sha || github.sha }} ${{ github.event_name == 'pull_request' && format('--parent {0}', github.event.pull_request.base.sha) }} \ - --flags tests,${{ matrix.distro-slug }},pkg \ - --name tests.${{ matrix.distro-slug }}.${{ inputs.nox-session }}.download-pkgs --nonZero; then - rc=$? - break - fi - rc=$? - n=$((n+1)) - sleep 15 - done - if [ "$rc" -ne 0 ]; then - echo "Failed to upload codecov stats" - exit 1 - fi - - - name: Upload Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ matrix.distro-slug }}-${{ matrix.arch }} - path: | - artifacts - !artifacts/salt/* - !artifacts/salt-*.tar.* - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && job.status != 'cancelled' && steps.download-artifacts-from-vm.outcome == 'success' - with: - check_name: Overall Test Results(${{ matrix.distro-slug }} ${{ matrix.arch }} ${{ matrix.pkg-type }} ) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true diff --git a/.github/workflows/test-packages-action-macos.yml b/.github/workflows/test-packages-action-macos.yml deleted file mode 100644 index 4dac7599..00000000 --- a/.github/workflows/test-packages-action-macos.yml +++ /dev/null @@ -1,265 +0,0 @@ -name: Test Artifact - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - pkg-type: - required: true - type: string - description: The platform arch being tested - salt-version: - type: string - required: true - description: The Salt version of the packages to install and test - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - testing-releases: - required: true - type: string - description: A JSON list of releases to test upgrades against - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - nox-session: - required: false - type: string - description: The nox session to run - default: ci-test-onedir - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - skip-junit-reports: - required: false - type: boolean - description: Skip Publishing JUnit Reports - default: false - -env: - COLUMNS: 190 - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - generate-matrix: - name: Generate Matrix - runs-on: - - self-hosted - - linux - - x86_64 - outputs: - pkg-matrix-include: ${{ steps.generate-pkg-matrix.outputs.matrix }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Generate Package Test Matrix - id: generate-pkg-matrix - run: | - tools ci pkg-matrix ${{ inputs.distro-slug }} ${{ inputs.pkg-type }} --testing-releases ${{ join(fromJSON(inputs.testing-releases), ' ') }} - - - test: - name: Test - runs-on: ${{ inputs.distro-slug }} - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - needs: - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.pkg-matrix-include) }} - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Packages - uses: actions/download-artifact@v3 - with: - name: salt-${{ inputs.salt-version }}-${{ inputs.arch }}-${{ inputs.pkg-type }} - path: artifacts/pkg/ - - - name: Install System Dependencies - run: | - brew install tree - - - name: List Packages - run: | - tree artifacts/pkg/ - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: Set up Python ${{ inputs.python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.python-version }}" - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Download cached nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Decompress .nox Directory - run: | - nox --force-color -e decompress-dependencies -- ${{ inputs.distro-slug }} - - - name: Show System Info & Test Plan - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "1" - PRINT_TEST_PLAN_ONLY: "1" - PRINT_SYSTEM_INFO: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- ${{ matrix.tests-chunk }} \ - ${{ matrix.version && format('--prev-version {0}', matrix.version) || ''}} - - - name: Run Package Tests - env: - SKIP_REQUIREMENTS_INSTALL: "1" - PRINT_TEST_SELECTION: "0" - PRINT_TEST_PLAN_ONLY: "0" - PRINT_SYSTEM_INFO: "0" - RERUN_FAILURES: "1" - GITHUB_ACTIONS_PIPELINE: "1" - SKIP_INITIAL_GH_ACTIONS_FAILURES: "1" - COVERAGE_CONTEXT: ${{ inputs.distro-slug }} - run: | - sudo -E nox --force-color -e ${{ inputs.nox-session }}-pkgs -- ${{ matrix.tests-chunk }} \ - ${{ matrix.version && format('--prev-version {0}', matrix.version) || ''}} - - - name: Fix file ownership - run: | - sudo chown -R "$(id -un)" . - - - name: Prepare Test Run Artifacts - id: download-artifacts-from-vm - if: always() - run: | - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Upload Test Run Artifacts - if: always() - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ inputs.distro-slug }}-${{ matrix.tests-chunk }} - path: | - artifacts - !artifacts/pkg/* - !artifacts/salt/* - !artifacts/salt-*.tar.* - - report: - name: Report - runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - if: always() && (inputs.skip-code-coverage == false || inputs.skip-junit-reports == false) && needs.test.result != 'cancelled' && needs.test.result != 'skipped' - needs: - - test - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.pkg-matrix-include) }} - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Test Run Artifacts - id: download-test-run-artifacts - uses: actions/download-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ inputs.distro-slug }}-${{ matrix.tests-chunk }} - path: artifacts - - - name: Show Test Run Artifacts - if: always() && steps.download-test-run-artifacts.outcome == 'success' - run: | - tree -a artifacts - - - name: Set up Python ${{ inputs.python-version }} - uses: actions/setup-python@v4 - with: - python-version: "${{ inputs.python-version }}" - - - name: Install Nox - run: | - python3 -m pip install 'nox==${{ inputs.nox-version }}' - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && inputs.skip-junit-reports == false && steps.download-test-run-artifacts.outcome == 'success' - with: - check_name: Overall Test Results(${{ inputs.distro-slug }} ${{ matrix.tests-chunk }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true diff --git a/.github/workflows/test-packages-action.yml b/.github/workflows/test-packages-action.yml deleted file mode 100644 index fb77b855..00000000 --- a/.github/workflows/test-packages-action.yml +++ /dev/null @@ -1,275 +0,0 @@ -name: Test Artifact - -on: - workflow_call: - inputs: - distro-slug: - required: true - type: string - description: The OS slug to run tests against - platform: - required: true - type: string - description: The platform being tested - arch: - required: true - type: string - description: The platform arch being tested - pkg-type: - required: true - type: string - description: The platform arch being tested - salt-version: - type: string - required: true - description: The Salt version of the packages to install and test - cache-prefix: - required: true - type: string - description: Seed used to invalidate caches - testing-releases: - required: true - type: string - description: A JSON list of releases to test upgrades against - nox-version: - required: true - type: string - description: The nox version to install - python-version: - required: false - type: string - description: The python version to run tests with - default: "3.10" - fips: - required: false - type: boolean - default: false - description: Test run with FIPS enabled - package-name: - required: false - type: string - description: The onedir package name to use - default: salt - nox-session: - required: false - type: string - description: The nox session to run - default: ci-test-onedir - skip-code-coverage: - required: false - type: boolean - description: Skip code coverage - default: false - skip-junit-reports: - required: false - type: boolean - description: Skip Publishing JUnit Reports - default: false - -env: - COLUMNS: 190 - AWS_MAX_ATTEMPTS: "10" - AWS_RETRY_MODE: "adaptive" - PIP_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ - PIP_EXTRA_INDEX_URL: https://pypi.org/simple - -jobs: - - generate-matrix: - name: Generate Matrix - runs-on: - - self-hosted - - linux - - x86_64 - outputs: - pkg-matrix-include: ${{ steps.generate-pkg-matrix.outputs.matrix }} - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(shuf -i 1-30 -n 1); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Generate Package Test Matrix - id: generate-pkg-matrix - run: | - tools ci pkg-matrix ${{ inputs.fips && '--fips ' || '' }}${{ inputs.distro-slug }} \ - ${{ inputs.pkg-type }} --testing-releases ${{ join(fromJSON(inputs.testing-releases), ' ') }} - - - test: - name: Test - runs-on: - - self-hosted - - linux - - bastion - timeout-minutes: 120 # 2 Hours - More than this and something is wrong - needs: - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.pkg-matrix-include) }} - - steps: - - - name: "Throttle Builds" - shell: bash - run: | - t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Packages - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-${{ inputs.arch }}-${{ inputs.pkg-type }} - path: artifacts/pkg/ - - - name: Download Onedir Tarball as an Artifact - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - path: artifacts/ - - - name: Decompress Onedir Tarball - shell: bash - run: | - python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" - cd artifacts - tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - - - name: List Packages - run: | - tree artifacts/pkg/ - - - name: Download cached nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} - uses: actions/cache@v3.3.1 - with: - path: nox.${{ inputs.distro-slug }}.tar.* - key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ - hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') - }} - # If we get a cache miss here it means the dependencies step failed to save the cache - fail-on-cache-miss: true - - - name: Setup Python Tools Scripts - uses: ./.github/actions/setup-python-tools-scripts - with: - cache-prefix: ${{ inputs.cache-prefix }} - - - name: Get Salt Project GitHub Actions Bot Environment - run: | - TOKEN=$(curl -sS -f -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") - SPB_ENVIRONMENT=$(curl -sS -f -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/spb:environment) - echo "SPB_ENVIRONMENT=$SPB_ENVIRONMENT" >> "$GITHUB_ENV" - - - name: Start VM - id: spin-up-vm - run: | - tools --timestamps vm create --environment "${SPB_ENVIRONMENT}" --retries=2 ${{ inputs.distro-slug }} - - - name: List Free Space - run: | - tools --timestamps vm ssh ${{ inputs.distro-slug }} -- df -h || true - - - name: Upload Checkout To VM - run: | - tools --timestamps vm rsync ${{ inputs.distro-slug }} - - - name: Decompress .nox Directory - run: | - tools --timestamps vm decompress-dependencies ${{ inputs.distro-slug }} - - - name: Downgrade importlib-metadata - if: ${{ contains(fromJSON('["amazonlinux-2", "centos-7", "debian-10"]'), inputs.distro-slug) && contains(fromJSON('["upgrade-classic", "downgrade-classic"]'), matrix.tests-chunk) }} - run: | - # This step can go away once we stop testing classic packages upgrade/downgrades to/from 3005.x - tools --timestamps vm ssh ${{ inputs.distro-slug }} -- "sudo python3 -m pip install -U 'importlib-metadata<=4.13.0' 'virtualenv<=20.21.1'" - - - name: Show System Info & Test Plan - run: | - tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \ - --nox-session=${{ inputs.nox-session }}-pkgs ${{ inputs.distro-slug }} -- ${{ matrix.tests-chunk }} \ - ${{ matrix.version && format('--prev-version {0}', matrix.version) || ''}} - - - name: Run Package Tests - run: | - tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install ${{ matrix.fips && '--fips ' || '' }}\ - --nox-session=${{ inputs.nox-session }}-pkgs --rerun-failures ${{ inputs.distro-slug }} -- ${{ matrix.tests-chunk }} \ - ${{ matrix.version && format('--prev-version {0}', matrix.version) || ''}} - - - name: Download Test Run Artifacts - id: download-artifacts-from-vm - if: always() && steps.spin-up-vm.outcome == 'success' - run: | - tools --timestamps vm download-artifacts ${{ inputs.distro-slug }} - # Delete the salt onedir, we won't need it anymore and it will prevent - # from it showing in the tree command below - rm -rf artifacts/salt* - tree -a artifacts - - - name: Destroy VM - if: always() - run: | - tools --timestamps vm destroy --no-wait ${{ inputs.distro-slug }} || true - - - name: Upload Test Run Artifacts - if: always() && steps.download-artifacts-from-vm.outcome == 'success' - uses: actions/upload-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ inputs.distro-slug }}-${{ matrix.tests-chunk }} - path: | - artifacts - !artifacts/pkg/* - !artifacts/salt/* - !artifacts/salt-*.tar.* - - report: - name: Report - runs-on: - - self-hosted - - linux - - x86_64 - if: always() && (inputs.skip-code-coverage == false || inputs.skip-junit-reports == false) && needs.test.result != 'cancelled' && needs.test.result != 'skipped' - needs: - - test - - generate-matrix - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.generate-matrix.outputs.pkg-matrix-include) }} - - steps: - - name: Checkout Source Code - uses: actions/checkout@v4 - - - name: Download Test Run Artifacts - id: download-test-run-artifacts - uses: actions/download-artifact@v3 - with: - name: pkg-testrun-artifacts-${{ inputs.distro-slug }}-${{ matrix.tests-chunk }} - path: artifacts - - - name: Show Test Run Artifacts - if: always() && steps.download-test-run-artifacts.outcome == 'success' - run: | - tree -a artifacts - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - # always run even if the previous steps fails - if: always() && inputs.skip-junit-reports == false && steps.download-test-run-artifacts.outcome == 'success' - with: - check_name: Overall Test Results(${{ inputs.distro-slug }} ${{ matrix.tests-chunk }}) - report_paths: 'artifacts/xml-unittests-output/*.xml' - annotate_only: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 6e535cb6..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,417 +0,0 @@ - -name: Testing - -on: [push, pull_request] - -jobs: - Pre-Commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Set Cache Key - run: echo "PY=$(python --version --version | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV - - name: Install System Deps - run: | - sudo apt-get update - sudo apt-get install -y libxml2 libxml2-dev libxslt-dev - - uses: actions/cache@v1 - with: - path: ~/.cache/pre-commit - key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} - - uses: pre-commit/action@v1.0.1 - - Docs: - runs-on: ubuntu-latest - needs: Pre-Commit - - timeout-minutes: 10 - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python 3.7 For Nox - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Doc Requirements - run: | - nox --force-color -e docs --install-only - - - name: Build Docs - env: - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --force-color -e docs - - Linux: - runs-on: ubuntu-latest - needs: Pre-Commit - - timeout-minutes: 15 - - strategy: - fail-fast: false - max-parallel: 4 - matrix: - python-version: - - 3.6 - - 3.7 - - 3.8 - salt-version: - - 3003 - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Test Requirements - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - run: | - nox --force-color -e tests-3 --install-only - - - name: Test - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --force-color -e tests-3 -- -vv tests/ - - - name: Create CodeCov Flags - if: always() - id: codecov-flags - run: | - echo ::set-output name=flags::$(python -c "import sys; print('{},{},salt_{}'.format('${{ runner.os }}'.replace('-latest', ''), 'py{}{}'.format(*sys.version_info), '_'.join(str(v) for v in '${{ matrix.salt-version }}'.replace('==', '_').split('.'))))") - - - name: Upload Project Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},project - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-project - REPORT_PATH: artifacts/coverage-project.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Tests Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},tests - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-tests - REPORT_PATH: artifacts/coverage-tests.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Logs - if: always() - uses: actions/upload-artifact@main - with: - name: runtests-${{ runner.os }}-py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}.log - path: artifacts/runtests-*.log - - Windows: - runs-on: windows-latest - needs: Pre-Commit - - timeout-minutes: 40 - - strategy: - fail-fast: false - max-parallel: 3 - matrix: - python-version: - - 3.6 - - 3.7 - salt-version: - - 3003 - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Test Requirements - shell: bash - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - EXTRA_REQUIREMENTS_INSTALL: Cython - run: | - export PATH="/C/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64;$PATH" - nox --force-color -e tests-3 --install-only - - - name: Test - shell: bash - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - SKIP_REQUIREMENTS_INSTALL: YES - run: | - export PATH="/C/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64;$PATH" - nox --force-color -e tests-3 -- -vv tests/ - - - name: Create CodeCov Flags - if: always() - id: codecov-flags - run: | - echo ::set-output name=flags::$(python -c "import sys; print('{},{},salt_{}'.format('${{ runner.os }}'.replace('-latest', ''), 'py{}{}'.format(*sys.version_info), '_'.join(str(v) for v in '${{ matrix.salt-version }}'.replace('==', '_').split('.'))))") - - - name: Upload Project Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},project - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-project - REPORT_PATH: artifacts/coverage-project.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Tests Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},tests - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-tests - REPORT_PATH: artifacts/coverage-tests.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Logs - if: always() - uses: actions/upload-artifact@main - with: - name: runtests-${{ runner.os }}-py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}.log - path: artifacts/runtests-*.log - - macOS: - runs-on: macOS-latest - needs: Pre-Commit - - timeout-minutes: 40 - - strategy: - fail-fast: false - max-parallel: 3 - matrix: - python-version: - - 3.6 - - 3.7 - salt-version: - - 3003 - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - - name: Install Nox - run: | - python -m pip install --upgrade pip - pip install nox - - - name: Install Test Requirements - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - run: | - nox --force-color -e tests-3 --install-only - - - name: Test - env: - SALT_REQUIREMENT: salt==${{ matrix.salt-version }} - SKIP_REQUIREMENTS_INSTALL: YES - run: | - nox --force-color -e tests-3 -- -vv tests/ - - - name: Create CodeCov Flags - if: always() - id: codecov-flags - run: | - echo ::set-output name=flags::$(python -c "import sys; print('{},{},salt_{}'.format('${{ runner.os }}'.replace('-latest', ''), 'py{}{}'.format(*sys.version_info), '_'.join(str(v) for v in '${{ matrix.salt-version }}'.replace('==', '_').split('.'))))") - - - name: Upload Project Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},project - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-project - REPORT_PATH: artifacts/coverage-project.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Tests Code Coverage - if: always() - shell: bash - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - REPORT_FLAGS: ${{ steps.codecov-flags.outputs.flags }},tests - REPORT_NAME: ${{ runner.os }}-Py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}-tests - REPORT_PATH: artifacts/coverage-tests.xml - run: | - if [ ! -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if curl --max-time 30 -L https://codecov.io/bash --output codecov.sh; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - if [ -f codecov.sh ]; then - n=0 - until [ "$n" -ge 5 ] - do - if bash codecov.sh -R $(pwd) -n "${REPORT_NAME}" -f "${REPORT_PATH}" -F "${REPORT_FLAGS}"; then - break - fi - n=$((n+1)) - sleep 15 - done - fi - - - name: Upload Logs - if: always() - uses: actions/upload-artifact@main - with: - name: runtests-${{ runner.os }}-py${{ matrix.python-version }}-Salt${{ matrix.salt-version }}.log - path: artifacts/runtests-*.log diff --git a/.github/workflows/triage.yml b/.github/workflows/triage.yml deleted file mode 100644 index 2971429a..00000000 --- a/.github/workflows/triage.yml +++ /dev/null @@ -1,63 +0,0 @@ ---- -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: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }} - steps: - - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v4 - 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@v3 - with: - name: last-assignment - path: .cache diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml old mode 100644 new mode 100755 index b373f760..3eddcb36 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ minimum_pre_commit_version: 2.4.0 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.4.0 hooks: - id: check-merge-conflict # Check for files that contain merge conflict strings. - id: trailing-whitespace # Trims trailing whitespace. @@ -37,7 +37,7 @@ repos: - repo: https://github.com/s0undt3ch/salt-rewrite # Automatically rewrite code with known rules - rev: 1.3.3 + rev: 2.5.2 hooks: - id: salt-rewrite alias: rewrite-docstrings @@ -47,7 +47,7 @@ repos: - repo: https://github.com/s0undt3ch/salt-rewrite # Automatically rewrite code with known rules - rev: 1.3.3 + rev: 2.5.2 hooks: - id: salt-rewrite alias: rewrite-tests @@ -59,18 +59,18 @@ repos: rev: v2.37.2 hooks: - id: pyupgrade - name: Rewrite Code to be Py3.6+ + name: Rewrite Code to be Py3.8+ args: [ - --py36-plus + --py38-plus ] exclude: src/saltext/github/version.py - repo: https://github.com/asottile/reorder_python_imports - rev: v2.6.0 + rev: v3.10.0 hooks: - id: reorder-python-imports args: [ - --py3-plus, + --py38-plus, ] exclude: src/saltext/github/version.py @@ -80,10 +80,8 @@ repos: - id: black args: [-l 100] exclude: src/saltext/github/version.py - additional_dependencies: - - click<8.1.0 - - repo: https://github.com/asottile/blacken-docs + - repo: https://github.com/adamchainz/blacken-docs rev: v1.12.1 hooks: - id: blacken-docs @@ -91,12 +89,11 @@ repos: files: ^(docs/.*\.rst|src/saltext/github/.*\.py)$ additional_dependencies: - black==22.6.0 - - click<8.1.0 # <---- Formatting ----------------------------------------------------------------------------- # ----- Security ------------------------------------------------------------------------------> - repo: https://github.com/PyCQA/bandit - rev: "1.7.0" + rev: "1.7.4" hooks: - id: bandit alias: bandit-salt @@ -104,7 +101,7 @@ repos: args: [--silent, -lll, --skip, B701] exclude: src/saltext/github/version.py - repo: https://github.com/PyCQA/bandit - rev: "1.7.0" + rev: "1.7.4" hooks: - id: bandit alias: bandit-tests @@ -121,6 +118,7 @@ repos: alias: lint-src name: Lint Source Code files: ^((setup|noxfile)|src/.*)\.py$ + require_serial: true args: - -e - lint-code-pre-commit @@ -133,149 +131,9 @@ repos: alias: lint-tests name: Lint Tests files: ^tests/.*\.py$ + require_serial: true args: - -e - lint-tests-pre-commit - -- # <---- Code Analysis -------------------------------------------------------------------------- - - # ----- Static Test Requirements --------------------------------------------------------------> - - repo: https://github.com/saltstack/pip-tools-compile-impersonate - rev: '4.1' - hooks: - - id: pip-tools-compile - alias: compile-3.6-test-requirements - name: Py3.6 Test Requirements - files: ^requirements/tests.in$ - pass_filenames: false - args: - - -v - - --py-version=3.6 - - --platform=linux - - requirements/tests.in - - - id: pip-tools-compile - alias: compile-3.7-test-requirements - name: Py3.7 Test Requirements - files: ^requirements/tests.in$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=linux - - requirements/tests.in - - - id: pip-tools-compile - alias: compile-3.8-test-requirements - name: Py3.8 Test Requirements - files: ^requirements/tests.in$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=linux - - requirements/tests.in - - - id: pip-tools-compile - alias: compile-3.9-test-requirements - name: Py3.9 Test Requirements - files: ^requirements/tests.in$ - pass_filenames: false - args: - - -v - - --py-version=3.9 - - --platform=linux - - requirements/tests.in - # <---- Static Test Requirements --------------------------------------------------------------- - - # ----- Static Lint Requirements --------------------------------------------------------------> - - id: pip-tools-compile - alias: compile-3.6-test-requirements - name: Py3.6 Lint Requirements - files: ^requirements/lint.in$ - pass_filenames: false - args: - - -v - - --py-version=3.6 - - --platform=linux - - requirements/lint.in - - - id: pip-tools-compile - alias: compile-3.7-test-requirements - name: Py3.7 Lint Requirements - files: ^requirements/lint.in$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=linux - - requirements/lint.in - - - id: pip-tools-compile - alias: compile-3.8-test-requirements - name: Py3.8 Lint Requirements - files: ^requirements/lint.in$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=linux - - requirements/lint.in - - - id: pip-tools-compile - alias: compile-3.9-test-requirements - name: Py3.9 Lint Requirements - files: ^requirements/lint.in$ - pass_filenames: false - args: - - -v - - --py-version=3.9 - - --platform=linux - - requirements/lint.in - # <---- Static Lint Requirements --------------------------------------------------------------- - - # ----- Static Docs Requirements --------------------------------------------------------------> - - id: pip-tools-compile - alias: compile-3.6-test-requirements - name: Py3.6 Docs Requirements - files: ^requirements/docs.in$ - pass_filenames: false - args: - - -v - - --py-version=3.6 - - --platform=linux - - requirements/docs.in - - - id: pip-tools-compile - alias: compile-3.7-test-requirements - name: Py3.7 Docs Requirements - files: ^requirements/docs.in$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=linux - - requirements/docs.in - - - id: pip-tools-compile - alias: compile-3.8-test-requirements - name: Py3.8 Docs Requirements - files: ^requirements/docs.in$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=linux - - requirements/docs.in - - - id: pip-tools-compile - alias: compile-3.9-test-requirements - name: Py3.9 Docs Requirements - files: ^requirements/docs.in$ - pass_filenames: false - args: - - -v - - --py-version=3.9 - - --platform=linux - - requirements/docs.in - # <---- Static Docs Requirements --------------------------------------------------------------- diff --git a/.pre-commit-hooks/check-cli-examples.py b/.pre-commit-hooks/check-cli-examples.py index 90332ce4..ce25c593 100644 --- a/.pre-commit-hooks/check-cli-examples.py +++ b/.pre-commit-hooks/check-cli-examples.py @@ -4,7 +4,7 @@ import sys CODE_ROOT = pathlib.Path(__file__).resolve().parent.parent -EXECUTION_MODULES_PATH = CODE_ROOT / "src" / "saltext" / " github" / "modules" +EXECUTION_MODULES_PATH = CODE_ROOT / "src" / "saltext" / "github" / "modules" def check_cli_examples(files): diff --git a/.pre-commit-hooks/make-autodocs.py b/.pre-commit-hooks/make-autodocs.py index 1fd73d96..3474ca25 100644 --- a/.pre-commit-hooks/make-autodocs.py +++ b/.pre-commit-hooks/make-autodocs.py @@ -1,59 +1,119 @@ +import ast +import os.path import subprocess -import sys -from enum import IntEnum from pathlib import Path repo_path = Path(subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode().strip()) -src_dir = repo_path / "src" / " saltext" / "github" +src_dir = repo_path / "src" / "saltext" / "github" doc_dir = repo_path / "docs" docs_by_kind = {} +changed_something = False + + +def _find_virtualname(path): + tree = ast.parse(path.read_text()) + for node in ast.walk(tree): + if isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Name) and target.id == "__virtualname__": + if isinstance(node.value, ast.Str): + virtualname = node.value.s + break + else: + continue + break + else: + virtualname = path.with_suffix("").name + return virtualname + + +def write_module(rst_path, path, use_virtualname=True): + if use_virtualname: + virtualname = "``" + _find_virtualname(path) + "``" + else: + virtualname = make_import_path(path) + module_contents = f"""\ +{virtualname} +{'='*len(virtualname)} + +.. automodule:: {make_import_path(path)} + :members: +""" + if not rst_path.exists() or rst_path.read_text() != module_contents: + print(rst_path) + rst_path.write_text(module_contents) + return True + return False + + +def write_index(index_rst, import_paths, kind): + if kind == "utils": + header_text = "Utilities" + common_path = os.path.commonpath(tuple(x.replace(".", "/") for x in import_paths)).replace( + "/", "." + ) + if any(x == common_path for x in import_paths): + common_path = common_path[: common_path.rfind(".")] + else: + header_text = ( + "execution modules" if kind.lower() == "modules" else kind.rstrip("s") + " modules" + ) + common_path = import_paths[0][: import_paths[0].rfind(".")] + header = f"{'_'*len(header_text)}\n{header_text.title()}\n{'_'*len(header_text)}" + index_contents = f"""\ +.. all-saltext.github.{kind}: + +{header} + +.. currentmodule:: {common_path} + +.. autosummary:: + :toctree: + +{chr(10).join(sorted(' '+p[len(common_path)+1:] for p in import_paths))} +""" + if not index_rst.exists() or index_rst.read_text() != index_contents: + print(index_rst) + index_rst.write_text(index_contents) + return True + return False def make_import_path(path): - return ".".join(path.with_suffix("").parts[-4:]) + if path.name == "__init__.py": + path = path.parent + return ".".join(path.relative_to(repo_path / "src").with_suffix("").parts) -for path in Path(__file__).parent.parent.joinpath("src/saltext/github/").glob("*/*.py"): +for path in src_dir.glob("*/*.py"): if path.name != "__init__.py": kind = path.parent.name - docs_by_kind.setdefault(kind, set()).add(path) + if kind != "utils": + docs_by_kind.setdefault(kind, set()).add(path) + +# Utils can have subdirectories, treat them separately +for path in (src_dir / "utils").rglob("*.py"): + if path.name == "__init__.py" and not path.read_text(): + continue + docs_by_kind.setdefault("utils", set()).add(path) for kind in docs_by_kind: kind_path = doc_dir / "ref" / kind - all_rst = kind_path / "all.rst" + index_rst = kind_path / "index.rst" import_paths = [] for path in sorted(docs_by_kind[kind]): import_path = make_import_path(path) import_paths.append(import_path) - rst_path = kind_path.joinpath(import_path).with_suffix(".rst") - print(rst_path) + rst_path = kind_path / (import_path + ".rst") rst_path.parent.mkdir(parents=True, exist_ok=True) - rst_path.write_text( - f""" -{import_path} -{'='*len(import_path)} - -.. automodule:: {import_path} - :members: -""" - ) + change = write_module(rst_path, path, use_virtualname=kind != "utils") + changed_something = changed_something or change - header_text = ( - "execution modules" if kind.lower() == "modules" else kind.rstrip("s") + " modules" - ) - header = f"{'_'*len(header_text)}\n{header_text.title()}\n{'_'*len(header_text)}" + write_index(index_rst, import_paths, kind) - all_rst.write_text( - f""" -.. all-saltext.github.{kind}: - -{header} -.. autosummary:: - :toctree: - -{chr(10).join(sorted(' '+p for p in import_paths))} -""" - ) +# Ensure pre-commit realizes we did something +if changed_something: + exit(2) diff --git a/.pylintrc b/.pylintrc old mode 100644 new mode 100755 index 7fb0a22f..5692f3b0 --- a/.pylintrc +++ b/.pylintrc @@ -72,7 +72,7 @@ ignored-modules= # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the # number of processors available to use, and will cap the count on Windows to # avoid hangs. -jobs=1 +jobs=0 # Control the amount of potential inferred values when inferring a single # object. This can help the performance when dealing with large functions or diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..aec33636 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +This project uses [Semantic Versioning](https://semver.org/) - MAJOR.MINOR.PATCH + +# Changelog diff --git a/LICENSE b/LICENSE index a92dcb5b..cbfdcf2c 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 EITR Technologies + Copyright 2024 EITR Technologies, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 8a5a017a..8f268f23 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,86 @@ -# github +# Salt Extension for Github Salt Extension for interacting with Github -## Quickstart +## Security -To get started with your new project: +If you think you've found a security vulnerability, see +[Salt's security guide][security]. - # Create a new venv - python3 -m venv env --prompt github - source env/bin/activate +## User Documentation - # On mac, you may need to upgrade pip - python -m pip install --upgrade pip +This README is for people aiming to contribute to the project. +If you just want to get started with the extension, check out the +module docstrings (for now, documentation is coming!). - # On WSL or some flavors of linux you may need to install the `enchant` - # library in order to build the docs - sudo apt-get install -y enchant +## Contributing - # Install extension + test/dev/doc dependencies into your environment - python -m pip install -e .[tests,dev,docs] +The saltext-github project team welcomes contributions from the community. - # Run tests! - python -m nox -e tests-3 +The [Salt Contributing guide][salt-contributing] has a lot of relevant +information, but if you'd like to jump right in here's how to get started: - # skip requirements install for next time - export SKIP_REQUIREMENTS_INSTALL=1 - # Build the docs, serve, and view in your web browser: - python -m nox -e docs && (cd docs/_build/html; python -m webbrowser localhost:8000; python -m http.server; cd -) +```bash +# Clone the repo +git clone --origin salt git@github.com:salt-extensions/saltext-github.git - # Run the example function - salt-call --local github.example_function text="Happy Hacking!" +# Change to the repo dir +cd saltext-github + +# Create a new venv +python3 -m venv env --prompt saltext-github +source env/bin/activate + +# On mac, you may need to upgrade pip +python -m pip install --upgrade pip + +# On WSL or some flavors of linux you may need to install the `enchant` +# library in order to build the docs +sudo apt-get install -y enchant + +# Install extension + test/dev/doc dependencies into your environment +python -m pip install -e '.[tests,dev,docs]' + +# Run tests! +python -m nox -e tests-3 + +# skip requirements install for next time +export SKIP_REQUIREMENTS_INSTALL=1 + +# Build the docs, serve, and view in your web browser: +python -m nox -e docs && (cd docs/_build/html; python -m webbrowser localhost:8000; python -m http.server; cd -) +``` + +Writing code isn't the only way to contribute! We value contributions in any of +these areas: + +* Documentation - especially examples of how to use this module to solve + specific problems. +* Triaging [issues][issues] and participating in [discussions][discussions] +* Reviewing [Pull Requests][PRs] (we really like + [Conventional Comments][comments]!) + +You could also contribute in other ways: + +* Writing blog posts +* Posting on social media about how you used Salt+Github to solve your + problems, including videos +* Giving talks at conferences +* Publishing videos +* Asking/answering questions in IRC, Slack, or email groups + +Any of these things are super valuable to our community, and we sincerely +appreciate every contribution! + + +For more information, build the docs and head over to http://localhost:8000/ — +that's where you'll find the rest of the documentation. + + +[security]: https://github.com/saltstack/salt/blob/master/SECURITY.md +[salt-contributing]: https://docs.saltproject.io/en/master/topics/development/contributing.html +[issues]: https://github.com/salt-extensions/saltext-github/issues +[PRs]: https://github.com/salt-extensions/saltext-github/pulls +[discussions]: https://github.com/salt-extensions/saltext-github/discussions +[comments]: https://conventionalcomments.org/ diff --git a/changelog/.template.jinja b/changelog/.template.jinja new file mode 100644 index 00000000..0cf429a3 --- /dev/null +++ b/changelog/.template.jinja @@ -0,0 +1,15 @@ +{% if sections[""] %} +{% for category, val in definitions.items() if category in sections[""] %} + +### {{ definitions[category]['name'] }} + +{% for text, values in sections[""][category].items() %} +- {{ text }} {{ values|join(', ') }} +{% endfor %} + +{% endfor %} +{% else %} +No significant changes. + + +{% endif %} diff --git a/docs/_themes/saltstack2/static/images/github.png b/docs/_themes/saltstack2/static/images/github.png deleted file mode 100644 index c2bba844..00000000 Binary files a/docs/_themes/saltstack2/static/images/github.png and /dev/null differ diff --git a/docs/all.rst b/docs/all.rst deleted file mode 100644 index ae204422..00000000 --- a/docs/all.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _all the states/modules: - -Complete List of github -======================= - - -.. toctree:: - :maxdepth: 2 - - ref/modules.rst - - -.. toctree:: - :maxdepth: 2 - - ref/states.rst diff --git a/docs/changelog.md b/docs/changelog.md new file mode 100644 index 00000000..2f5367b2 --- /dev/null +++ b/docs/changelog.md @@ -0,0 +1,12 @@ +# Changelog + +The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +This project uses [Semantic Versioning](https://semver.org/) - MAJOR.MINOR.PATCH + +```{towncrier-draft-entries} +``` + +```{include} ../CHANGELOG.md +:start-after: '# Changelog' +``` diff --git a/docs/conf.py b/docs/conf.py old mode 100644 new mode 100755 index 2b622d03..3b6fbdea --- a/docs/conf.py +++ b/docs/conf.py @@ -9,8 +9,10 @@ # documentation root, use os.path.abspath to make it absolute, like shown here. # import datetime +import email.policy import os import sys +from pathlib import Path try: from importlib_metadata import distribution @@ -25,6 +27,8 @@ # assume we're in the doc/ directory docs_basepath = os.path.abspath(os.path.dirname(".")) +PROJECT_ROOT_DIR = Path(docs_basepath).parent + addtl_paths = ( os.path.join(os.pardir, "src"), # saltext.github itself (for autodoc) "_ext", # custom Sphinx extensions @@ -44,6 +48,19 @@ copyright_year = f"2021 - {this_year}" project = dist.metadata["Summary"] author = dist.metadata["Author"] + +if author is None: + # Core metadata is serialized differently with pyproject.toml: + # https://packaging.python.org/en/latest/specifications/pyproject-toml/#authors-maintainers + author_email = dist.metadata["Author-email"] + em = email.message_from_string( + f"To: {author_email}", + policy=email.policy.default, + ) + if em["To"].addresses and em["To"].addresses[0]: + author = em["To"].addresses[0].display_name + author = author or "" + copyright = f"{copyright_year}, {author}" # The full version, including alpha/beta/rc tags @@ -75,6 +92,15 @@ "sphinx.ext.coverage", "sphinx_copybutton", "sphinxcontrib.spelling", + "sphinxcontrib.towncrier.ext", + "myst_parser", + "sphinx_inline_tabs", +] + +myst_enable_extensions = [ + "colon_fence", + "deflist", + "tasklist", ] # Add any paths that contain templates here, relative to this directory. @@ -95,7 +121,7 @@ "sitevars.rst", ] -autosummary_generate = True +autosummary_generate = False # -- Options for HTML output ------------------------------------------------- @@ -136,7 +162,7 @@ # ----- Intersphinx Config ----------------------------------------------------------------------------------------> intersphinx_mapping = { "python": ("https://docs.python.org/3", None), - "pytest": ("https://pytest.readthedocs.io/en/stable", None), + "pytest": ("https://docs.pytest.org/en/stable", None), "salt": ("https://docs.saltproject.io/en/latest", None), } # <---- Intersphinx Config ----------------------------------------------------------------------------------------- @@ -146,6 +172,11 @@ autodoc_mock_imports = ["salt"] # <---- Autodoc Config ----------------------------------------------------------------------------------------------- +# Towncrier draft config +towncrier_draft_autoversion_mode = "sphinx-release" +towncrier_draft_include_empty = True +towncrier_draft_working_directory = str(PROJECT_ROOT_DIR) + def setup(app): app.add_crossref_type( diff --git a/docs/index.rst b/docs/index.rst index bf9de9ef..a4e6f171 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,11 +1,31 @@ -Welcome to github Documentation! -================================ +``saltext-github``: Integrate Salt with Github +============================================== + +Salt Extension for interacting with Github + +.. toctree:: + :maxdepth: 2 + :caption: Guides + :hidden: + + topics/installation .. toctree:: :maxdepth: 2 - :caption: Contents: + :caption: Provided Modules + :hidden: + + ref/modules/index + ref/states/index + ref/utils/index + +.. toctree:: + :maxdepth: 2 + :caption: Reference + :hidden: + + changelog - all.rst Indices and tables ================== diff --git a/docs/ref/modules/all/salt.modules.github.rst b/docs/ref/modules/all/salt.modules.github.rst deleted file mode 100644 index 04d44068..00000000 --- a/docs/ref/modules/all/salt.modules.github.rst +++ /dev/null @@ -1,5 +0,0 @@ -salt.modules.github -=================== - -.. automodule:: salt.modules.github - :members: diff --git a/docs/ref/modules/index.rst b/docs/ref/modules/index.rst new file mode 100644 index 00000000..081527a6 --- /dev/null +++ b/docs/ref/modules/index.rst @@ -0,0 +1,12 @@ +.. all-saltext.github.modules: + +_________________ +Execution Modules +_________________ + +.. currentmodule:: saltext.github.modules + +.. autosummary:: + :toctree: + + github diff --git a/docs/ref/modules/saltext.github.modules.github.rst b/docs/ref/modules/saltext.github.modules.github.rst new file mode 100644 index 00000000..f42a3b16 --- /dev/null +++ b/docs/ref/modules/saltext.github.modules.github.rst @@ -0,0 +1,5 @@ +``github`` +========== + +.. automodule:: saltext.github.modules.github + :members: diff --git a/docs/ref/states/all/salt.states.github.rst b/docs/ref/states/all/salt.states.github.rst deleted file mode 100644 index 76ce26f6..00000000 --- a/docs/ref/states/all/salt.states.github.rst +++ /dev/null @@ -1,5 +0,0 @@ -salt.states.github -================== - -.. automodule:: salt.states.github - :members: diff --git a/docs/ref/states/index.rst b/docs/ref/states/index.rst new file mode 100644 index 00000000..89b97e99 --- /dev/null +++ b/docs/ref/states/index.rst @@ -0,0 +1,12 @@ +.. all-saltext.github.states: + +_____________ +State Modules +_____________ + +.. currentmodule:: saltext.github.states + +.. autosummary:: + :toctree: + + github diff --git a/docs/ref/states/saltext.github.states.github.rst b/docs/ref/states/saltext.github.states.github.rst new file mode 100644 index 00000000..a9c2f9aa --- /dev/null +++ b/docs/ref/states/saltext.github.states.github.rst @@ -0,0 +1,5 @@ +``github`` +========== + +.. automodule:: saltext.github.states.github + :members: diff --git a/docs/ref/utils/index.rst b/docs/ref/utils/index.rst new file mode 100644 index 00000000..ec1e0af1 --- /dev/null +++ b/docs/ref/utils/index.rst @@ -0,0 +1,13 @@ +.. all-saltext.github.utils: + +_________ +Utilities +_________ + +.. currentmodule:: saltext.github + +.. autosummary:: + :toctree: + + utils + utils.github diff --git a/docs/ref/utils/saltext.github.utils.github.rst b/docs/ref/utils/saltext.github.utils.github.rst new file mode 100644 index 00000000..3a149363 --- /dev/null +++ b/docs/ref/utils/saltext.github.utils.github.rst @@ -0,0 +1,5 @@ +saltext.github.utils.github +=========================== + +.. automodule:: saltext.github.utils.github + :members: diff --git a/docs/ref/utils/saltext.github.utils.rst b/docs/ref/utils/saltext.github.utils.rst new file mode 100644 index 00000000..95c09c96 --- /dev/null +++ b/docs/ref/utils/saltext.github.utils.rst @@ -0,0 +1,5 @@ +saltext.github.utils +==================== + +.. automodule:: saltext.github.utils + :members: diff --git a/docs/topics/installation.md b/docs/topics/installation.md new file mode 100644 index 00000000..35601701 --- /dev/null +++ b/docs/topics/installation.md @@ -0,0 +1,36 @@ +# Installation + +Generally, extensions need to be installed into the same Python environment Salt uses. + +:::{tab} State +```yaml +Install Salt Github extension: + pip.installed: + - name: saltext-github +``` +::: + +:::{tab} Onedir installation +```bash +salt-pip install saltext-github +``` +::: + +:::{tab} Regular installation +```bash +pip install saltext-github +``` +::: + +:::{important} +Currently, there is [an issue][issue-second-saltext] where the installation of a Saltext fails silently +if the environment already has another one installed. You can workaround this by +removing all Saltexts and reinstalling them in one transaction. +::: + +:::{hint} +Saltexts are not distributed automatically via the fileserver like custom modules, they need to be installed +on each node you want them to be available on. +::: + +[issue-second-saltext]: https://github.com/saltstack/salt/issues/65433 diff --git a/noxfile.py b/noxfile.py old mode 100644 new mode 100755 index 862343cc..99c13247 --- a/noxfile.py +++ b/noxfile.py @@ -19,7 +19,7 @@ nox.options.error_on_missing_interpreters = False # Python versions to test against -PYTHON_VERSIONS = ("3", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10") +PYTHON_VERSIONS = ("3", "3.8", "3.9", "3.10") # Be verbose when running under a CI context CI_RUN = ( os.environ.get("JENKINS_URL") or os.environ.get("CI") or os.environ.get("DRONE") is not None @@ -29,7 +29,7 @@ EXTRA_REQUIREMENTS_INSTALL = os.environ.get("EXTRA_REQUIREMENTS_INSTALL") COVERAGE_VERSION_REQUIREMENT = "coverage==5.2" -SALT_REQUIREMENT = os.environ.get("SALT_REQUIREMENT") or "salt>=3003" +SALT_REQUIREMENT = os.environ.get("SALT_REQUIREMENT") or "salt>=3005" if SALT_REQUIREMENT == "salt==master": SALT_REQUIREMENT = "git+https://github.com/saltstack/salt.git@master" @@ -70,8 +70,8 @@ def _get_session_python_version_info(session): def _get_pydir(session): version_info = _get_session_python_version_info(session) - if version_info < (3, 5): - session.error("Only Python >= 3.5 is supported") + if version_info < (3, 8): + session.error("Only Python >= 3.8 is supported") return f"py{version_info[0]}.{version_info[1]}" diff --git a/pyproject.toml b/pyproject.toml index 73761e84..c5be683c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,144 @@ [build-system] -requires = ["setuptools>=50.3.2", "wheel", "setuptools-declarative-requirements", "setuptools_scm[toml]>=3.4"] +requires = [ + "wheel", + "setuptools>=50.3.2", + "setuptools_scm[toml]>=3.4", +] build-backend = "setuptools.build_meta" [tool.setuptools_scm] write_to = "src/saltext/github/version.py" write_to_template = "__version__ = \"{version}\"" +[project] +name = "saltext.github" +description = "Salt Extension for interacting with Github" +authors = [ + {name = "EITR Technologies, LLC", email = "devops@eitr.tech"}, +] +keywords = [ + "salt-extension", +] +license = {text = "Apache Software License"} +classifiers = [ + "Programming Language :: Python", + "Programming Language :: Cython", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", +] +requires-python = ">= 3.8" +dynamic = ["version"] +dependencies = [ + "PyGithub", +] + +[project.readme] +file = "README.md" +content-type = "text/markdown" + +[project.urls] +Homepage = "https://github.com/salt-extensions/saltext-github" +Source = "https://github.com/salt-extensions/saltext-github" +Tracker = "https://github.com/salt-extensions/saltext-github/issues" + +[project.optional-dependencies] +changelog = ["towncrier==22.12.0"] +dev = [ + "nox", + "pre-commit>=2.4.0", + "pylint", + "saltpylint", +] +docs = [ + "sphinx", + "sphinx-prompt", + "sphinxcontrib-spelling", + "sphinx-copybutton", + "towncrier==22.12.0", + "sphinxcontrib-towncrier", + "myst_parser", + "furo", + "sphinx-inline-tabs", +] +docsauto = ["sphinx-autobuild"] +lint = [ + "pylint", + "saltpylint", +] +tests = [ + "pytest>=7.2.0", + "pytest-salt-factories>=1.0.0rc28", +] + +[project.entry-points."salt.loader"] +"saltext.github" = "saltext.github" + +[tool.setuptools] +zip-safe = false +include-package-data = true +platforms = ["any"] + +[tool.setuptools.packages.find] +where = ["src"] +exclude = ["tests"] + +[tool.distutils.bdist_wheel] +# Use this option if your package is pure-python +universal = 1 + +[tool.distutils.sdist] +owner = "root" +group = "root" + +[tool.build_sphinx] +source_dir = "docs" +build_dir = "build/sphinx" + [tool.black] line-length = 100 + +[tool.towncrier] + package = "saltext.github" + filename = "CHANGELOG.md" + template = "changelog/.template.jinja" + directory = "changelog/" + start_string = "# Changelog\n" + underlines = ["", "", ""] + title_format = "## {version} ({project_date})" + issue_format = "[#{issue}](https://github.com/salt-extensions/saltext-github/issues/{issue})" + + [[tool.towncrier.type]] + directory = "removed" + name = "Removed" + showcontent = true + + [[tool.towncrier.type]] + directory = "deprecated" + name = "Deprecated" + showcontent = true + + [[tool.towncrier.type]] + directory = "changed" + name = "Changed" + showcontent = true + + [[tool.towncrier.type]] + directory = "fixed" + name = "Fixed" + showcontent = true + + [[tool.towncrier.type]] + directory = "added" + name = "Added" + showcontent = true + + [[tool.towncrier.type]] + directory = "security" + name = "Security" + showcontent = true diff --git a/requirements/base.txt b/requirements/base.txt deleted file mode 100644 index bcd4f131..00000000 --- a/requirements/base.txt +++ /dev/null @@ -1 +0,0 @@ -salt>=3003 diff --git a/requirements/docs.in b/requirements/docs.in deleted file mode 100644 index 15427319..00000000 --- a/requirements/docs.in +++ /dev/null @@ -1,5 +0,0 @@ -sphinx -sphinx-material-saltstack -sphinx-prompt -sphinxcontrib-spelling -importlib_metadata; python_version < "3.8" diff --git a/requirements/lint.in b/requirements/lint.in deleted file mode 100644 index 911de932..00000000 --- a/requirements/lint.in +++ /dev/null @@ -1,2 +0,0 @@ -pylint -saltpylint diff --git a/requirements/py3.5/tests.txt b/requirements/py3.5/tests.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/requirements/py3.6/docs.txt b/requirements/py3.6/docs.txt deleted file mode 100644 index 273b81d4..00000000 --- a/requirements/py3.6/docs.txt +++ /dev/null @@ -1,89 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.6/docs.txt requirements/docs.in -# -alabaster==0.7.13 - # via sphinx -babel==2.11.0 - # via sphinx -beautifulsoup4==4.9.1 - # via sphinx-material-saltstack -certifi==2023.11.17 - # via requests -charset-normalizer==2.0.12 - # via requests -css-html-js-minify==2.5.5 - # via sphinx-material-saltstack -docutils==0.18.1 - # via sphinx -idna==3.6 - # via requests -imagesize==1.4.1 - # via sphinx -importlib-metadata==4.8.3 ; python_version < "3.8" - # via - # -r requirements/docs.in - # sphinx - # sphinxcontrib-spelling -jinja2==3.0.3 - # via sphinx -lxml==4.5.2 - # via sphinx-material-saltstack -markupsafe==2.0.1 - # via jinja2 -packaging==21.3 - # via sphinx -pyenchant==3.2.2 - # via sphinxcontrib-spelling -pygments==2.14.0 - # via - # sphinx - # sphinx-prompt -pyparsing==3.0.7 - # via packaging -python-slugify[unidecode]==4.0.1 - # via sphinx-material-saltstack -pytz==2023.3.post1 - # via babel -requests==2.27.1 - # via sphinx -snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.3.2.post1 - # via beautifulsoup4 -sphinx-material-saltstack==1.0.5 - # via -r requirements/docs.in -sphinx-prompt==1.5.0 - # via -r requirements/docs.in -sphinx==5.3.0 - # via - # -r requirements/docs.in - # sphinx-material-saltstack - # sphinx-prompt - # sphinxcontrib-spelling -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -sphinxcontrib-spelling==7.7.0 - # via -r requirements/docs.in -text-unidecode==1.3 - # via python-slugify -typing-extensions==4.1.1 - # via importlib-metadata -unidecode==1.3.7 - # via python-slugify -urllib3==1.26.18 - # via requests -zipp==3.6.0 - # via importlib-metadata diff --git a/requirements/py3.6/lint.txt b/requirements/py3.6/lint.txt deleted file mode 100644 index 4ae2428b..00000000 --- a/requirements/py3.6/lint.txt +++ /dev/null @@ -1,41 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.6/lint.txt requirements/lint.in -# -astroid==2.11.7 - # via pylint -dill==0.3.4 - # via pylint -isort==5.10.1 - # via pylint -lazy-object-proxy==1.7.1 - # via astroid -mccabe==0.7.0 - # via pylint -modernize==0.5 - # via saltpylint -platformdirs==2.4.0 - # via pylint -pycodestyle==2.10.0 - # via saltpylint -pylint==2.13.9 - # via - # -r requirements/lint.in - # saltpylint -saltpylint==2023.8.3 - # via -r requirements/lint.in -tomli==1.2.3 - # via pylint -typed-ast==1.5.5 - # via astroid -typing-extensions==4.1.1 - # via - # astroid - # pylint -wrapt==1.16.0 - # via astroid - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py3.6/tests.txt b/requirements/py3.6/tests.txt deleted file mode 100644 index 705ae909..00000000 --- a/requirements/py3.6/tests.txt +++ /dev/null @@ -1,67 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.6/tests.txt requirements/tests.in -# -attrs==22.2.0 - # via - # pytest - # pytest-salt-factories - # pytest-skip-markers -distlib==0.3.8 - # via virtualenv -distro==1.8.0 - # via pytest-skip-markers -filelock==3.4.1 - # via virtualenv -importlib-metadata==4.8.3 - # via - # pluggy - # pytest - # virtualenv -importlib-resources==5.4.0 - # via virtualenv -iniconfig==1.1.1 - # via pytest -msgpack==1.0.5 - # via pytest-salt-factories -packaging==21.3 - # via pytest -platformdirs==2.4.0 - # via virtualenv -pluggy==1.0.0 - # via pytest -psutil==5.9.7 - # via pytest-salt-factories -py==1.11.0 - # via pytest -pyparsing==3.0.7 - # via packaging -pytest-helpers-namespace==2021.12.29 - # via pytest-salt-factories -pytest-salt-factories==0.912.2 - # via -r requirements/tests.in -pytest-skip-markers==1.3.0 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via pytest-salt-factories -pytest==7.0.1 - # via - # -r requirements/tests.in - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-skip-markers - # pytest-tempdir -pyzmq==25.1.2 - # via pytest-salt-factories -tomli==1.2.3 - # via pytest -typing-extensions==4.1.1 - # via importlib-metadata -virtualenv==20.17.1 - # via pytest-salt-factories -zipp==3.6.0 - # via - # importlib-metadata - # importlib-resources diff --git a/requirements/py3.7/docs.txt b/requirements/py3.7/docs.txt deleted file mode 100644 index eb87713b..00000000 --- a/requirements/py3.7/docs.txt +++ /dev/null @@ -1,87 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.7/docs.txt requirements/docs.in -# -alabaster==0.7.13 - # via sphinx -babel==2.14.0 - # via sphinx -beautifulsoup4==4.9.1 - # via sphinx-material-saltstack -certifi==2023.11.17 - # via requests -charset-normalizer==3.3.2 - # via requests -css-html-js-minify==2.5.5 - # via sphinx-material-saltstack -docutils==0.19 - # via sphinx -idna==3.6 - # via requests -imagesize==1.4.1 - # via sphinx -importlib-metadata==6.7.0 ; python_version < "3.8" - # via - # -r requirements/docs.in - # sphinx - # sphinxcontrib-spelling -jinja2==3.1.2 - # via sphinx -lxml==4.5.2 - # via sphinx-material-saltstack -markupsafe==2.1.3 - # via jinja2 -packaging==23.2 - # via sphinx -pyenchant==3.2.2 - # via sphinxcontrib-spelling -pygments==2.17.2 - # via - # sphinx - # sphinx-prompt -python-slugify[unidecode]==4.0.1 - # via sphinx-material-saltstack -pytz==2023.3.post1 - # via babel -requests==2.31.0 - # via sphinx -snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.4.1 - # via beautifulsoup4 -sphinx-material-saltstack==1.0.5 - # via -r requirements/docs.in -sphinx-prompt==1.5.0 - # via -r requirements/docs.in -sphinx==5.3.0 - # via - # -r requirements/docs.in - # sphinx-material-saltstack - # sphinx-prompt - # sphinxcontrib-spelling -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -sphinxcontrib-spelling==8.0.0 - # via -r requirements/docs.in -text-unidecode==1.3 - # via python-slugify -typing-extensions==4.7.1 - # via importlib-metadata -unidecode==1.3.7 - # via python-slugify -urllib3==2.0.7 - # via requests -zipp==3.15.0 - # via importlib-metadata diff --git a/requirements/py3.7/lint.txt b/requirements/py3.7/lint.txt deleted file mode 100644 index 4eda0b42..00000000 --- a/requirements/py3.7/lint.txt +++ /dev/null @@ -1,41 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.7/lint.txt requirements/lint.in -# -astroid==2.15.8 - # via pylint -dill==0.3.7 - # via pylint -isort==5.11.5 - # via pylint -lazy-object-proxy==1.9.0 - # via astroid -mccabe==0.7.0 - # via pylint -modernize==0.5 - # via saltpylint -platformdirs==4.0.0 - # via pylint -pycodestyle==2.10.0 - # via saltpylint -pylint==2.17.7 - # via - # -r requirements/lint.in - # saltpylint -saltpylint==2023.8.3 - # via -r requirements/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.12.3 - # via pylint -typed-ast==1.5.5 - # via astroid -typing-extensions==4.7.1 - # via - # astroid - # platformdirs - # pylint -wrapt==1.16.0 - # via astroid diff --git a/requirements/py3.7/tests.txt b/requirements/py3.7/tests.txt deleted file mode 100644 index 19455523..00000000 --- a/requirements/py3.7/tests.txt +++ /dev/null @@ -1,63 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.7/tests.txt requirements/tests.in -# -attrs==23.1.0 - # via - # pytest-salt-factories - # pytest-skip-markers -distlib==0.3.8 - # via virtualenv -distro==1.8.0 - # via pytest-skip-markers -exceptiongroup==1.2.0 - # via pytest -filelock==3.12.2 - # via virtualenv -importlib-metadata==6.7.0 - # via - # attrs - # pluggy - # pytest - # virtualenv -iniconfig==2.0.0 - # via pytest -msgpack==1.0.5 - # via pytest-salt-factories -packaging==23.2 - # via pytest -platformdirs==4.0.0 - # via virtualenv -pluggy==1.2.0 - # via pytest -psutil==5.9.7 - # via pytest-salt-factories -pytest-helpers-namespace==2021.12.29 - # via pytest-salt-factories -pytest-salt-factories==0.912.2 - # via -r requirements/tests.in -pytest-skip-markers==1.5.0 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via pytest-salt-factories -pytest==7.4.3 - # via - # -r requirements/tests.in - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-skip-markers - # pytest-tempdir -pyzmq==25.1.2 - # via pytest-salt-factories -tomli==2.0.1 - # via pytest -typing-extensions==4.7.1 - # via - # importlib-metadata - # platformdirs -virtualenv==20.25.0 - # via pytest-salt-factories -zipp==3.15.0 - # via importlib-metadata diff --git a/requirements/py3.8/docs.txt b/requirements/py3.8/docs.txt deleted file mode 100644 index 0cc6eedc..00000000 --- a/requirements/py3.8/docs.txt +++ /dev/null @@ -1,84 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.8/docs.txt requirements/docs.in -# -alabaster==0.7.13 - # via sphinx -babel==2.14.0 - # via sphinx -beautifulsoup4==4.9.1 - # via sphinx-material-saltstack -certifi==2023.11.17 - # via requests -charset-normalizer==3.3.2 - # via requests -css-html-js-minify==2.5.5 - # via sphinx-material-saltstack -docutils==0.20.1 - # via - # sphinx - # sphinx-prompt -idna==3.6 - # via requests -imagesize==1.4.1 - # via sphinx -importlib-metadata==7.0.0 - # via sphinx -jinja2==3.1.2 - # via sphinx -lxml==4.5.2 - # via sphinx-material-saltstack -markupsafe==2.1.3 - # via jinja2 -packaging==23.2 - # via sphinx -pyenchant==3.2.2 - # via sphinxcontrib-spelling -pygments==2.17.2 - # via - # sphinx - # sphinx-prompt -python-slugify[unidecode]==4.0.1 - # via sphinx-material-saltstack -pytz==2023.3.post1 - # via babel -requests==2.31.0 - # via sphinx -snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.5 - # via beautifulsoup4 -sphinx-material-saltstack==1.0.5 - # via -r requirements/docs.in -sphinx-prompt==1.7.0 - # via -r requirements/docs.in -sphinx==7.1.2 - # via - # -r requirements/docs.in - # sphinx-material-saltstack - # sphinx-prompt - # sphinxcontrib-spelling -sphinxcontrib-applehelp==1.0.4 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.1 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -sphinxcontrib-spelling==8.0.0 - # via -r requirements/docs.in -text-unidecode==1.3 - # via python-slugify -unidecode==1.3.7 - # via python-slugify -urllib3==2.1.0 - # via requests -zipp==3.17.0 - # via importlib-metadata diff --git a/requirements/py3.8/lint.txt b/requirements/py3.8/lint.txt deleted file mode 100644 index d4f14963..00000000 --- a/requirements/py3.8/lint.txt +++ /dev/null @@ -1,34 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.8/lint.txt requirements/lint.in -# -astroid==3.0.2 - # via pylint -dill==0.3.7 - # via pylint -isort==5.13.2 - # via pylint -mccabe==0.7.0 - # via pylint -modernize==0.5 - # via saltpylint -platformdirs==4.1.0 - # via pylint -pycodestyle==2.11.1 - # via saltpylint -pylint==3.0.3 - # via - # -r requirements/lint.in - # saltpylint -saltpylint==2023.8.3 - # via -r requirements/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.12.3 - # via pylint -typing-extensions==4.9.0 - # via - # astroid - # pylint diff --git a/requirements/py3.8/tests.txt b/requirements/py3.8/tests.txt deleted file mode 100644 index 2282e3d3..00000000 --- a/requirements/py3.8/tests.txt +++ /dev/null @@ -1,51 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.8/tests.txt requirements/tests.in -# -attrs==23.1.0 - # via - # pytest-salt-factories - # pytest-skip-markers -distlib==0.3.8 - # via virtualenv -distro==1.8.0 - # via pytest-skip-markers -exceptiongroup==1.2.0 - # via pytest -filelock==3.13.1 - # via virtualenv -iniconfig==2.0.0 - # via pytest -msgpack==1.0.7 - # via pytest-salt-factories -packaging==23.2 - # via pytest -platformdirs==4.1.0 - # via virtualenv -pluggy==1.3.0 - # via pytest -psutil==5.9.7 - # via pytest-salt-factories -pytest-helpers-namespace==2021.12.29 - # via pytest-salt-factories -pytest-salt-factories==0.912.2 - # via -r requirements/tests.in -pytest-skip-markers==1.5.0 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via pytest-salt-factories -pytest==7.4.3 - # via - # -r requirements/tests.in - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-skip-markers - # pytest-tempdir -pyzmq==25.1.2 - # via pytest-salt-factories -tomli==2.0.1 - # via pytest -virtualenv==20.25.0 - # via pytest-salt-factories diff --git a/requirements/py3.9/docs.txt b/requirements/py3.9/docs.txt deleted file mode 100644 index 8aab136d..00000000 --- a/requirements/py3.9/docs.txt +++ /dev/null @@ -1,87 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.9/docs.txt requirements/docs.in -# -alabaster==0.7.13 - # via sphinx -babel==2.14.0 - # via sphinx -beautifulsoup4==4.9.1 - # via sphinx-material-saltstack -certifi==2023.11.17 - # via requests -charset-normalizer==3.3.2 - # via requests -css-html-js-minify==2.5.5 - # via sphinx-material-saltstack -docutils==0.20.1 - # via - # sphinx - # sphinx-prompt -idna==3.6 - # via requests -imagesize==1.4.1 - # via sphinx -importlib-metadata==7.0.0 - # via sphinx -jinja2==3.1.2 - # via sphinx -lxml==4.5.2 - # via sphinx-material-saltstack -markupsafe==2.1.3 - # via jinja2 -packaging==23.2 - # via sphinx -pyenchant==3.2.2 - # via sphinxcontrib-spelling -pygments==2.17.2 - # via - # sphinx - # sphinx-prompt -python-slugify[unidecode]==4.0.1 - # via sphinx-material-saltstack -requests==2.31.0 - # via sphinx -snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.5 - # via beautifulsoup4 -sphinx-material-saltstack==1.0.5 - # via -r requirements/docs.in -sphinx-prompt==1.8.0 - # via -r requirements/docs.in -sphinx==7.2.6 - # via - # -r requirements/docs.in - # sphinx-material-saltstack - # sphinx-prompt - # sphinxcontrib-applehelp - # sphinxcontrib-devhelp - # sphinxcontrib-htmlhelp - # sphinxcontrib-qthelp - # sphinxcontrib-serializinghtml - # sphinxcontrib-spelling -sphinxcontrib-applehelp==1.0.7 - # via sphinx -sphinxcontrib-devhelp==1.0.5 - # via sphinx -sphinxcontrib-htmlhelp==2.0.4 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.6 - # via sphinx -sphinxcontrib-serializinghtml==1.1.9 - # via sphinx -sphinxcontrib-spelling==8.0.0 - # via -r requirements/docs.in -text-unidecode==1.3 - # via python-slugify -unidecode==1.3.7 - # via python-slugify -urllib3==2.1.0 - # via requests -zipp==3.17.0 - # via importlib-metadata diff --git a/requirements/py3.9/lint.txt b/requirements/py3.9/lint.txt deleted file mode 100644 index 5cfdc7c4..00000000 --- a/requirements/py3.9/lint.txt +++ /dev/null @@ -1,34 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.9/lint.txt requirements/lint.in -# -astroid==3.0.2 - # via pylint -dill==0.3.7 - # via pylint -isort==5.13.2 - # via pylint -mccabe==0.7.0 - # via pylint -modernize==0.5 - # via saltpylint -platformdirs==4.1.0 - # via pylint -pycodestyle==2.11.1 - # via saltpylint -pylint==3.0.3 - # via - # -r requirements/lint.in - # saltpylint -saltpylint==2023.8.3 - # via -r requirements/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.12.3 - # via pylint -typing-extensions==4.9.0 - # via - # astroid - # pylint diff --git a/requirements/py3.9/tests.txt b/requirements/py3.9/tests.txt deleted file mode 100644 index c9bc9b50..00000000 --- a/requirements/py3.9/tests.txt +++ /dev/null @@ -1,51 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/py3.9/tests.txt requirements/tests.in -# -attrs==23.1.0 - # via - # pytest-salt-factories - # pytest-skip-markers -distlib==0.3.8 - # via virtualenv -distro==1.8.0 - # via pytest-skip-markers -exceptiongroup==1.2.0 - # via pytest -filelock==3.13.1 - # via virtualenv -iniconfig==2.0.0 - # via pytest -msgpack==1.0.7 - # via pytest-salt-factories -packaging==23.2 - # via pytest -platformdirs==4.1.0 - # via virtualenv -pluggy==1.3.0 - # via pytest -psutil==5.9.7 - # via pytest-salt-factories -pytest-helpers-namespace==2021.12.29 - # via pytest-salt-factories -pytest-salt-factories==0.912.2 - # via -r requirements/tests.in -pytest-skip-markers==1.5.0 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via pytest-salt-factories -pytest==7.4.3 - # via - # -r requirements/tests.in - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-skip-markers - # pytest-tempdir -pyzmq==25.1.2 - # via pytest-salt-factories -tomli==2.0.1 - # via pytest -virtualenv==20.25.0 - # via pytest-salt-factories diff --git a/requirements/tests.in b/requirements/tests.in deleted file mode 100644 index 9f292157..00000000 --- a/requirements/tests.in +++ /dev/null @@ -1,2 +0,0 @@ -pytest >= 6.1.0 -pytest-salt-factories >= 0.130.0 diff --git a/requirements/tests.txt b/requirements/tests.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index c0d03d83..00000000 --- a/setup.cfg +++ /dev/null @@ -1,79 +0,0 @@ -[metadata] -name = saltext.github -description = Salt Extension for interacting with Github -long_description = file: README.md -long_description_content_type = text/markdown -author = EITR Technologies -author_email = devops@eitr.tech -keywords = salt-extension -url = https://github.com/salt-extensions/saltext-github -project_urls = - Source=https://github.com/salt-extensions/saltext-github - Tracker=https://github.com/salt-extensions/saltext-github/issues -license = Apache Software License -classifiers = - Programming Language :: Python - Programming Language :: Cython - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.5 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Development Status :: 4 - Beta - Intended Audience :: Developers - License :: OSI Approved :: Apache Software License -platforms = any - -[options] -zip_safe = False -include_package_data = True -package_dir = - =src -packages = find_namespace: -python_requires = >= 3.5 -setup_requires = - wheel - setuptools>=50.3.2 - setuptools_scm[toml]>=3.4 - setuptools-declarative-requirements -install_requires = - salt>=3003 - # Add other module install requirements above this line - -[options.packages.find] -where = src -exclude = - tests - -# When targetting Salt < 3003, you can remove the other 'options.entry_points' section and use this one -#[options.entry_points] -#salt.loader= -# - -[options.entry_points] -salt.loader= - saltext.github = saltext.github - -[requirements-files] -install_requires = requirements/base.txt -tests_require = requirements/tests.txt -extras_require = - dev = requirements/dev.txt - tests = requirements/tests.txt - docs = requirements/docs.txt - docsauto = requirements/docs-auto.txt - changelog = requirements/changelog.txt - -[bdist_wheel] -# Use this option if your package is pure-python -universal = 1 - -[build_sphinx] -source_dir = docs -build_dir = build/sphinx - -[sdist] -owner = root -group = root diff --git a/src/saltext/github/loader.py b/src/saltext/github/loader.py deleted file mode 100644 index 5d2e0b65..00000000 --- a/src/saltext/github/loader.py +++ /dev/null @@ -1,5 +0,0 @@ -""" -Define the required entry-points functions in order for Salt to know -what and from where it should load this extension's loaders -""" -from . import PACKAGE_ROOT # pylint: disable=unused-import diff --git a/src/saltext/github/modules/github.py b/src/saltext/github/modules/github.py index bc45f9ca..4cecd22b 100644 --- a/src/saltext/github/modules/github.py +++ b/src/saltext/github/modules/github.py @@ -28,8 +28,6 @@ # in an automated way. set this to True to allow privacy modifications allow_repo_privacy_changes: False """ - - import logging import salt.utils.http @@ -61,8 +59,7 @@ def __virtual__(): return __virtualname__ return ( False, - "The github execution module cannot be loaded: " - "PyGithub library is not installed.", + "The github execution module cannot be loaded: PyGithub library is not installed.", ) @@ -80,16 +77,13 @@ def _get_config_value(profile, config_name): config = __salt__["config.option"](profile) if not config: raise CommandExecutionError( - "Authentication information could not be found for the " - "'{}' profile.".format(profile) + f"Authentication information could not be found for the '{profile}' profile." ) config_value = config.get(config_name) if config_value is None: raise CommandExecutionError( - "The '{}' parameter was not found in the '{}' profile.".format( - config_name, profile - ) + f"The '{config_name}' parameter was not found in the '{profile}' profile." ) return config_value @@ -100,7 +94,9 @@ def _get_client(profile): Return the GitHub client, cached into __context__ for performance """ token = _get_config_value(profile, "token") - key = "github.{}:{}".format(token, _get_config_value(profile, "org_name")) + key = "github.{}:{}".format( # pylint: disable=consider-using-f-string + token, _get_config_value(profile, "org_name") + ) if key not in __context__: __context__[key] = github.Github(token, per_page=100) @@ -119,7 +115,7 @@ def _get_members(organization, params=None): def _get_repos(profile, params=None, ignore_cache=False): # Use cache when no params are given org_name = _get_config_value(profile, "org_name") - key = "github.{}:repos".format(org_name) + key = f"github.{org_name}:repos" if key not in __context__ or ignore_cache or params is not None: org_name = _get_config_value(profile, "org_name") @@ -143,7 +139,7 @@ def _get_repos(profile, params=None, ignore_cache=False): next_result.append(repo) # Cache a copy of each repo for single lookups - repo_key = "github.{}:{}:repo_info".format(org_name, repo.name.lower()) + repo_key = f"github.{org_name}:{repo.name.lower()}:repo_info" __context__[repo_key] = _repo_to_dict(repo) __context__[key] = next_result @@ -171,7 +167,7 @@ def list_users(profile="github", ignore_cache=False): salt myminion github.list_users profile='my-github-profile' """ org_name = _get_config_value(profile, "org_name") - key = "github.{}:users".format(org_name) + key = f"github.{org_name}:users" if key not in __context__ or ignore_cache: client = _get_client(profile) organization = client.get_organization(org_name) @@ -356,9 +352,7 @@ def get_issue(issue_number, repo_name=None, profile="github", output="min"): return ret -def get_issue_comments( - issue_number, repo_name=None, profile="github", since=None, output="min" -): +def get_issue_comments(issue_number, repo_name=None, profile="github", since=None, output="min"): """ Return information about the comments for a given issue in a named repository. @@ -636,9 +630,7 @@ def get_milestones( return ret -def get_milestone( - number=None, name=None, repo_name=None, profile="github", output="min" -): +def get_milestone(number=None, name=None, repo_name=None, profile="github", output="min"): """ Return information about a single milestone in a named repository. @@ -675,9 +667,7 @@ def get_milestone( ret = {} if not any([number, name]): - raise CommandExecutionError( - "Either a milestone 'name' or 'number' must be provided." - ) + raise CommandExecutionError("Either a milestone 'name' or 'number' must be provided.") org_name = _get_config_value(profile, "org_name") if repo_name is None: @@ -754,7 +744,7 @@ def get_repo_info(repo_name, profile="github", ignore_cache=False): """ org_name = _get_config_value(profile, "org_name") - key = "github.{}:{}:repo_info".format( + key = "github.{}:{}:repo_info".format( # pylint: disable=consider-using-f-string _get_config_value(profile, "org_name"), repo_name.lower() ) @@ -772,11 +762,10 @@ def get_repo_info(repo_name, profile="github", ignore_cache=False): ret = _repo_to_dict(repo) __context__[key] = ret - except github.UnknownObjectException: + except github.UnknownObjectException as exc: raise CommandExecutionError( - "The '{}' repository under the '{}' organization could not " - "be found.".format(repo_name, org_name) - ) + f"The '{repo_name}' repository under the '{org_name}' organization could not be found." + ) from exc return __context__[key] @@ -805,22 +794,18 @@ def get_repo_teams(repo_name, profile="github"): try: repo = client.get_repo("/".join([org_name, repo_name])) - except github.UnknownObjectException: + except github.UnknownObjectException as exc: raise CommandExecutionError( - "The '{}' repository under the '{}' organization could not " - "be found.".format(repo_name, org_name) - ) + f"The '{repo_name}' repository under the '{org_name}' organization could not be found." + ) from exc try: teams = repo.get_teams() for team in teams: - ret.append( - {"id": team.id, "name": team.name, "permission": team.permission} - ) - except github.UnknownObjectException: + ret.append({"id": team.id, "name": team.name, "permission": team.permission}) + except github.UnknownObjectException as exc: raise CommandExecutionError( - "Unable to retrieve teams for repository '{}' under the '{}' " - "organization.".format(repo_name, org_name) - ) + f"Unable to retrieve teams for repository '{repo_name}' under the '{org_name}' organization." + ) from exc return ret @@ -1032,9 +1017,7 @@ def edit_repo( if private is not None and not allow_private_change: raise CommandExecutionError( - "The private field is set to be changed for " - "repo {} but allow_repo_privacy_changes " - "disallows this.".format(name) + f"The private field is set to be changed for repo {name} but allow_repo_privacy_changes disallows this." ) try: @@ -1407,9 +1390,7 @@ def remove_team_repo(repo_name, team_name, profile="github"): log.exception("Resource not found: %s", team["id"]) return False team.remove_from_repos(repo) - return repo_name not in list_team_repos( - team_name, profile=profile, ignore_cache=True - ) + return repo_name not in list_team_repos(team_name, profile=profile, ignore_cache=True) def list_team_members(team_name, profile="github", ignore_cache=False): @@ -1473,7 +1454,9 @@ def list_members_without_mfa(profile="github", ignore_cache=False): .. versionadded:: 2016.11.0 """ - key = "github.{}:non_mfa_users".format(_get_config_value(profile, "org_name")) + key = "github.{}:non_mfa_users".format( # pylint: disable=consider-using-f-string + _get_config_value(profile, "org_name") + ) if key not in __context__ or ignore_cache: client = _get_client(profile) @@ -1486,8 +1469,7 @@ def list_members_without_mfa(profile="github", ignore_cache=False): filter_key = "filter_" __context__[key] = [ - m.login.lower() - for m in _get_members(organization, {filter_key: "2fa_disabled"}) + m.login.lower() for m in _get_members(organization, {filter_key: "2fa_disabled"}) ] return __context__[key] @@ -1604,8 +1586,7 @@ def remove_team_member(name, team_name, profile="github"): if not hasattr(team, "remove_from_members"): return ( False, - "PyGithub 1.26.0 or greater is required for team " - "management, please upgrade.", + "PyGithub 1.26.0 or greater is required for team management, please upgrade.", ) team.remove_from_members(member) @@ -1630,7 +1611,9 @@ def list_teams(profile="github", ignore_cache=False): .. versionadded:: 2016.11.0 """ - key = "github.{}:teams".format(_get_config_value(profile, "org_name")) + key = "github.{}:teams".format( # pylint: disable=consider-using-f-string + _get_config_value(profile, "org_name") + ) if key not in __context__ or ignore_cache: client = _get_client(profile) @@ -1834,7 +1817,7 @@ def _query( url += action if command: - url += "/{}".format(command) + url += f"/{command}" log.debug("GitHub URL: %s", url) @@ -1886,9 +1869,8 @@ def _query( complete_result = complete_result + result["dict"] else: - raise CommandExecutionError( - "GitHub Response Error: {}".format(result.get("error")) - ) + err = result.get("error") + raise CommandExecutionError(f"GitHub Response Error: {err}") try: link_info = result.get("headers").get("Link").split(",")[0] diff --git a/src/saltext/github/states/github.py b/src/saltext/github/states/github.py index f93e6e87..6804339a 100644 --- a/src/saltext/github/states/github.py +++ b/src/saltext/github/states/github.py @@ -13,7 +13,6 @@ - email: example@domain.com - username: 'gitexample' """ - import datetime import logging import time @@ -55,15 +54,13 @@ def present(name, profile="github", **kwargs): # If the user has a valid github handle and is not in the org already if not target: ret["result"] = False - ret["comment"] = "Couldnt find user {}".format(name) + ret["comment"] = f"Couldnt find user {name}" elif isinstance(target, bool) and target: - ret["comment"] = "User {} is already in the org ".format(name) + ret["comment"] = f"User {name} is already in the org " ret["result"] = True - elif ( - not target.get("in_org", False) and target.get("membership_state") != "pending" - ): + elif not target.get("in_org", False) and target.get("membership_state") != "pending": if __opts__["test"]: - ret["comment"] = "User {} will be added to the org".format(name) + ret["comment"] = f"User {name} will be added to the org" return ret # add the user @@ -71,15 +68,13 @@ def present(name, profile="github", **kwargs): if result: ret["changes"].setdefault("old", None) - ret["changes"].setdefault( - "new", "User {} exists in the org now".format(name) - ) + ret["changes"].setdefault("new", f"User {name} exists in the org now") ret["result"] = True else: ret["result"] = False - ret["comment"] = "Failed to add user {} to the org".format(name) + ret["comment"] = f"Failed to add user {name} to the org" else: - ret["comment"] = "User {} has already been invited.".format(name) + ret["comment"] = f"User {name} has already been invited." ret["result"] = True return ret @@ -110,7 +105,7 @@ def absent(name, profile="github", **kwargs): "name": name, "changes": {}, "result": None, - "comment": "User {} is absent.".format(name), + "comment": f"User {name} is absent.", } target = __salt__["github.get_user"](name, profile=profile, **kwargs) @@ -118,25 +113,25 @@ def absent(name, profile="github", **kwargs): if target: if isinstance(target, bool) or target.get("in_org", False): if __opts__["test"]: - ret["comment"] = "User {} will be deleted".format(name) + ret["comment"] = f"User {name} will be deleted" ret["result"] = None return ret result = __salt__["github.remove_user"](name, profile=profile, **kwargs) if result: - ret["comment"] = "Deleted user {}".format(name) - ret["changes"].setdefault("old", "User {} exists".format(name)) - ret["changes"].setdefault("new", "User {} deleted".format(name)) + ret["comment"] = f"Deleted user {name}" + ret["changes"].setdefault("old", f"User {name} exists") + ret["changes"].setdefault("new", f"User {name} deleted") ret["result"] = True else: - ret["comment"] = "Failed to delete {}".format(name) + ret["comment"] = f"Failed to delete {name}" ret["result"] = False else: - ret["comment"] = "User {} has already been deleted!".format(name) + ret["comment"] = f"User {name} has already been deleted!" ret["result"] = True else: - ret["comment"] = "User {} does not exist".format(name) + ret["comment"] = f"User {name} does not exist" ret["result"] = True return ret @@ -153,7 +148,7 @@ def team_present( enforce_mfa=False, no_mfa_grace_seconds=0, profile="github", - **kwargs + **kwargs, ): """ Ensure a team is present @@ -228,20 +223,14 @@ def team_present( if len(parameters) > 0: if __opts__["test"]: - test_comments.append( - "Team properties are set to be edited: {}".format(parameters) - ) + test_comments.append(f"Team properties are set to be edited: {parameters}") ret["result"] = None else: - result = __salt__["github.edit_team"]( - name, profile=profile, **parameters - ) + result = __salt__["github.edit_team"](name, profile=profile, **parameters) if result: ret["changes"]["team"] = { - "old": "Team properties were {}".format(target), - "new": "Team properties (that changed) are {}".format( - parameters - ), + "old": f"Team properties were {target}", + "new": f"Team properties (that changed) are {parameters}", } else: ret["result"] = False @@ -249,9 +238,7 @@ def team_present( return ret manage_repos = repo_names is not None - current_repos = set( - __salt__["github.list_team_repos"](name, profile=profile).keys() - ) + current_repos = set(__salt__["github.list_team_repos"](name, profile=profile).keys()) repo_names = set(repo_names or []) repos_to_add = repo_names - current_repos @@ -260,7 +247,7 @@ def team_present( if repos_to_add: if __opts__["test"]: test_comments.append( - "Team {} will have the following repos added: {}.".format( + "Team {} will have the following repos added: {}.".format( # pylint: disable=consider-using-f-string name, list(repos_to_add) ) ) @@ -272,20 +259,18 @@ def team_present( ) if result: ret["changes"][repo_name] = { - "old": "Repo {} is not in team {}".format(repo_name, name), - "new": "Repo {} is in team {}".format(repo_name, name), + "old": f"Repo {repo_name} is not in team {name}", + "new": f"Repo {repo_name} is in team {name}", } else: ret["result"] = False - ret["comment"] = "Failed to add repo {} to team {}.".format( - repo_name, name - ) + ret["comment"] = f"Failed to add repo {repo_name} to team {name}." return ret if repos_to_remove: if __opts__["test"]: test_comments.append( - "Team {} will have the following repos removed: {}.".format( + "Team {} will have the following repos removed: {}.".format( # pylint: disable=consider-using-f-string name, list(repos_to_remove) ) ) @@ -297,21 +282,17 @@ def team_present( ) if result: ret["changes"][repo_name] = { - "old": "Repo {} is in team {}".format(repo_name, name), - "new": "Repo {} is not in team {}".format(repo_name, name), + "old": f"Repo {repo_name} is in team {name}", + "new": f"Repo {repo_name} is not in team {name}", } else: ret["result"] = False - ret[ - "comment" - ] = "Failed to remove repo {} from team {}.".format( - repo_name, name - ) + ret["comment"] = f"Failed to remove repo {repo_name} from team {name}." return ret else: # Team does not exist - it will be created. if __opts__["test"]: - ret["comment"] = "Team {} is set to be created.".format(name) + ret["comment"] = f"Team {name} is set to be created." ret["result"] = None return ret @@ -322,22 +303,20 @@ def team_present( permission=permission, privacy=privacy, profile=profile, - **kwargs + **kwargs, ) if result: ret["changes"]["team"] = {} ret["changes"]["team"]["old"] = None - ret["changes"]["team"]["new"] = "Team {} has been created".format(name) + ret["changes"]["team"]["new"] = f"Team {name} has been created" else: ret["result"] = False - ret["comment"] = "Failed to create team {}.".format(name) + ret["comment"] = f"Failed to create team {name}." return ret manage_members = members is not None - mfa_deadline = datetime.datetime.utcnow() - datetime.timedelta( - seconds=no_mfa_grace_seconds - ) + mfa_deadline = datetime.datetime.utcnow() - datetime.timedelta(seconds=no_mfa_grace_seconds) members_no_mfa = __salt__["github.list_members_without_mfa"](profile=profile) members_lower = {} @@ -356,16 +335,12 @@ def team_present( ): if __opts__["test"]: test_comments.append( - "User {} will not be added to the " - "team because they do not have MFA." - "".format(member) + f"User {member} will not be added to the team because they do not have MFA." ) else: # Add to team member_change = True if __opts__["test"]: - test_comments.append( - "User {} set to be added to the team.".format(member) - ) + test_comments.append(f"User {member} set to be added to the team.") ret["result"] = None else: result = __salt__["github.add_team_member"]( @@ -373,17 +348,11 @@ def team_present( ) if result: ret["changes"][member] = {} - ret["changes"][member][ - "old" - ] = "User {} is not in team {}".format(member, name) - ret["changes"][member]["new"] = "User {} is in team {}".format( - member, name - ) + ret["changes"][member]["old"] = f"User {member} is not in team {name}" + ret["changes"][member]["new"] = f"User {member} is in team {name}" else: ret["result"] = False - ret["comment"] = "Failed to add user {} to team {}.".format( - member, name - ) + ret["comment"] = f"Failed to add user {member} to team {name}." return ret for member in current_members: @@ -392,23 +361,16 @@ def team_present( mfa_violation = _member_violates_mfa( member, members_lower[member], mfa_deadline, members_no_mfa ) - if ( - manage_members - and member not in members_lower - or (enforce_mfa and mfa_violation) - ): + if manage_members and member not in members_lower or (enforce_mfa and mfa_violation): # Remove from team member_change = True if __opts__["test"]: if mfa_violation: test_comments.append( - "User {} set to be removed from the " - "team because they do not have MFA.".format(member) + f"User {member} set to be removed from the team because they do not have MFA." ) else: - test_comments.append( - "User {} set to be removed from the team.".format(member) - ) + test_comments.append(f"User {member} set to be removed from the team.") ret["result"] = None else: result = __salt__["github.remove_team_member"]( @@ -417,22 +379,16 @@ def team_present( if result: extra_changes = " due to MFA violation" if mfa_violation else "" ret["changes"][member] = { - "old": "User {} is in team {}".format(member, name), - "new": "User {} is not in team {}{}".format( - member, name, extra_changes - ), + "old": f"User {member} is in team {name}", + "new": f"User {member} is not in team {name}{extra_changes}", } else: ret["result"] = False - ret["comment"] = "Failed to remove user {} from team {}.".format( - member, name - ) + ret["comment"] = f"Failed to remove user {member} from team {name}." return ret if member_change: # Refresh team cache - __salt__["github.list_team_members"]( - name, profile=profile, ignore_cache=False, **kwargs - ) + __salt__["github.list_team_members"](name, profile=profile, ignore_cache=False, **kwargs) if len(test_comments) > 0: ret["comment"] = "\n".join(test_comments) @@ -473,24 +429,24 @@ def team_absent(name, profile="github", **kwargs): target = __salt__["github.get_team"](name, profile=profile, **kwargs) if not target: - ret["comment"] = "Team {} does not exist".format(name) + ret["comment"] = f"Team {name} does not exist" ret["result"] = True return ret else: if __opts__["test"]: - ret["comment"] = "Team {} will be deleted".format(name) + ret["comment"] = f"Team {name} will be deleted" ret["result"] = None return ret result = __salt__["github.remove_team"](name, profile=profile, **kwargs) if result: - ret["comment"] = "Deleted team {}".format(name) - ret["changes"].setdefault("old", "Team {} exists".format(name)) - ret["changes"].setdefault("new", "Team {} deleted".format(name)) + ret["comment"] = f"Deleted team {name}" + ret["changes"].setdefault("old", f"Team {name} exists") + ret["changes"].setdefault("new", f"Team {name} deleted") ret["result"] = True else: - ret["comment"] = "Failed to delete {}".format(name) + ret["comment"] = f"Failed to delete {name}" ret["result"] = False return ret @@ -508,7 +464,7 @@ def repo_present( license_template=None, teams=None, profile="github", - **kwargs + **kwargs, ): """ Ensure a repository is present @@ -605,16 +561,14 @@ def repo_present( if len(parameters) > 0: repo_change = { - "old": "Repo properties were {}".format(old_parameters), - "new": "Repo properties (that changed) are {}".format(parameters), + "old": f"Repo properties were {old_parameters}", + "new": f"Repo properties (that changed) are {parameters}", } if __opts__["test"]: ret["changes"]["repo"] = repo_change ret["result"] = None else: - result = __salt__["github.edit_repo"]( - name, profile=profile, **parameters - ) + result = __salt__["github.edit_repo"](name, profile=profile, **parameters) if result: ret["changes"]["repo"] = repo_change else: @@ -623,7 +577,7 @@ def repo_present( return ret else: # Repo does not exist - it will be created. - repo_change = {"old": None, "new": "Repo {} has been created".format(name)} + repo_change = {"old": None, "new": f"Repo {name} has been created"} if __opts__["test"]: ret["changes"]["repo"] = repo_change ret["result"] = None @@ -634,7 +588,7 @@ def repo_present( if not result: ret["result"] = False - ret["comment"] = "Failed to create repo {}.".format(name) + ret["comment"] = f"Failed to create repo {name}." return ret # Turns out that trying to fetch teams for a new repo can 404 immediately @@ -652,7 +606,7 @@ def repo_present( if current_teams is None: ret["result"] = False - ret["comment"] = "Failed to verify repo {} after creation.".format(name) + ret["comment"] = f"Failed to verify repo {name} after creation." return ret ret["changes"]["repo"] = repo_change @@ -669,34 +623,28 @@ def repo_present( for team_name in current_team_names: if team_name not in teams: team_change = { - "old": "Repo {} is in team {}".format(name, team_name), - "new": "Repo {} is not in team {}".format(name, team_name), + "old": f"Repo {name} is in team {team_name}", + "new": f"Repo {name} is not in team {team_name}", } if __opts__["test"]: ret["changes"][team_name] = team_change ret["result"] = None else: - result = __salt__["github.remove_team_repo"]( - name, team_name, profile=profile - ) + result = __salt__["github.remove_team_repo"](name, team_name, profile=profile) if result: ret["changes"][team_name] = team_change else: ret["result"] = False - ret[ - "comment" - ] = "Failed to remove repo {} from team {}.".format( - name, team_name - ) + ret["comment"] = f"Failed to remove repo {name} from team {team_name}." return ret # Next add or modify any necessary teams for team_name, permission in teams.items(): if team_name not in current_team_names: # Need to add repo to team team_change = { - "old": "Repo {} is not in team {}".format(name, team_name), - "new": "Repo {} is in team {}".format(name, team_name), + "old": f"Repo {name} is not in team {team_name}", + "new": f"Repo {name} is in team {team_name}", } if __opts__["test"]: ret["changes"][team_name] = team_change @@ -709,11 +657,7 @@ def repo_present( ret["changes"][team_name] = team_change else: ret["result"] = False - ret[ - "comment" - ] = "Failed to remove repo {} from team {}.".format( - name, team_name - ) + ret["comment"] = f"Failed to remove repo {name} from team {team_name}." return ret else: current_permission = ( @@ -723,19 +667,14 @@ def repo_present( ) if not current_permission: ret["result"] = False - ret["comment"] = ( - "Failed to determine current permission for team " - "{} in repo {}".format(team_name, name) - ) + ret[ + "comment" + ] = f"Failed to determine current permission for team {team_name} in repo {name}" return ret elif current_permission != permission: team_change = { - "old": "Repo {} in team {} has permission {}".format( - name, team_name, current_permission - ), - "new": "Repo {} in team {} has permission {}".format( - name, team_name, permission - ), + "old": f"Repo {name} in team {team_name} has permission {current_permission}", + "new": f"Repo {name} in team {team_name} has permission {permission}", } if __opts__["test"]: ret["changes"][team_name] = team_change @@ -748,10 +687,9 @@ def repo_present( ret["changes"][team_name] = team_change else: ret["result"] = False - ret["comment"] = ( - "Failed to set permission on repo {} from " - "team {} to {}.".format(name, team_name, permission) - ) + ret[ + "comment" + ] = f"Failed to set permission on repo {name} from team {team_name} to {permission}." return ret return ret @@ -783,26 +721,25 @@ def repo_absent(name, profile="github", **kwargs): target = None if not target: - ret["comment"] = "Repo {} does not exist".format(name) + ret["comment"] = f"Repo {name} does not exist" ret["result"] = True return ret else: if __opts__["test"]: - ret["comment"] = "Repo {} will be deleted".format(name) + ret["comment"] = f"Repo {name} will be deleted" ret["result"] = None return ret result = __salt__["github.remove_repo"](name, profile=profile, **kwargs) if result: - ret["comment"] = "Deleted repo {}".format(name) - ret["changes"].setdefault("old", "Repo {} exists".format(name)) - ret["changes"].setdefault("new", "Repo {} deleted".format(name)) + ret["comment"] = f"Deleted repo {name}" + ret["changes"].setdefault("old", f"Repo {name} exists") + ret["changes"].setdefault("new", f"Repo {name} deleted") ret["result"] = True else: - ret["comment"] = ( - "Failed to delete repo {}. Ensure the delete_repo " - "scope is enabled if using OAuth.".format(name) - ) + ret[ + "comment" + ] = f"Failed to delete repo {name}. Ensure the delete_repo scope is enabled if using OAuth." ret["result"] = False return ret diff --git a/src/saltext/github/utils/github.py b/src/saltext/github/utils/github.py index 1d6824f2..b3f87c5e 100644 --- a/src/saltext/github/utils/github.py +++ b/src/saltext/github/utils/github.py @@ -1,8 +1,6 @@ """ Connection library for GitHub """ - - import logging import salt.utils.http @@ -20,7 +18,7 @@ def get_user_pubkeys(users): Some example data structures that coupld be passed in would look like: - .. code_block:: yaml + .. code-block:: yaml ['user1', 'user2', 'user3'] @@ -44,7 +42,7 @@ def get_user_pubkeys(users): key_ids = user[tmp_user] user = tmp_user - url = "https://api.github.com/users/{}/keys".format(user) + url = f"https://api.github.com/users/{user}/keys" result = salt.utils.http.query( url, "GET", diff --git a/requirements/changelog.txt b/tests/functional/__init__.py similarity index 100% rename from requirements/changelog.txt rename to tests/functional/__init__.py diff --git a/tests/pytests/functional/conftest.py b/tests/functional/conftest.py similarity index 91% rename from tests/pytests/functional/conftest.py rename to tests/functional/conftest.py index 2fb2246b..2c7c84a3 100644 --- a/tests/pytests/functional/conftest.py +++ b/tests/functional/conftest.py @@ -33,8 +33,8 @@ def state_tree_prod(tmp_path_factory): @pytest.fixture(scope="module") def minion_config_defaults(): """ - Functional test modules can provide this fixture to tweak the default configuration dictionary - passed to the minion factory + Functional test modules can provide this fixture to tweak the default + configuration dictionary passed to the minion factory """ return {} @@ -81,8 +81,8 @@ def minion_opts( @pytest.fixture(scope="module") def master_config_defaults(): """ - Functional test modules can provide this fixture to tweak the default configuration dictionary - passed to the master factory + Functional test modules can provide this fixture to tweak the default + configuration dictionary passed to the master factory """ return {} @@ -138,3 +138,13 @@ def reset_loaders_state(loaders): finally: # Reset the loaders state loaders.reset_state() + + +@pytest.fixture(scope="module") +def modules(loaders): + return loaders.modules + + +@pytest.fixture(scope="module") +def states(loaders): + return loaders.states diff --git a/requirements/dev.txt b/tests/functional/modules/__init__.py similarity index 100% rename from requirements/dev.txt rename to tests/functional/modules/__init__.py diff --git a/tests/functional/modules/test_github.py b/tests/functional/modules/test_github.py new file mode 100644 index 00000000..792aba61 --- /dev/null +++ b/tests/functional/modules/test_github.py @@ -0,0 +1,10 @@ +import pytest + +pytestmark = [ + pytest.mark.requires_salt_modules("github.example_function"), +] + + +@pytest.fixture +def github(modules): + return modules.github diff --git a/requirements/docs-auto.txt b/tests/functional/states/__init__.py similarity index 100% rename from requirements/docs-auto.txt rename to tests/functional/states/__init__.py diff --git a/tests/functional/states/test_github.py b/tests/functional/states/test_github.py new file mode 100644 index 00000000..8ed05b8a --- /dev/null +++ b/tests/functional/states/test_github.py @@ -0,0 +1,18 @@ +import pytest + +pytestmark = [ + pytest.mark.requires_salt_states("github.exampled"), +] + + +@pytest.fixture +def github(states): + return states.github + + +def test_replace_this_this_with_something_meaningful(github): + echo_str = "Echoed!" + ret = github.exampled(echo_str) + assert ret.result + assert not ret.changes + assert echo_str in ret.comment diff --git a/requirements/docs.txt b/tests/integration/modules/__init__.py similarity index 100% rename from requirements/docs.txt rename to tests/integration/modules/__init__.py diff --git a/tests/integration/modules/test_github.py b/tests/integration/modules/test_github.py new file mode 100644 index 00000000..b600f049 --- /dev/null +++ b/tests/integration/modules/test_github.py @@ -0,0 +1,13 @@ +import pytest + +pytestmark = [ + pytest.mark.requires_salt_modules("github.example_function"), +] + + +def test_replace_this_this_with_something_meaningful(salt_call_cli): + echo_str = "Echoed!" + ret = salt_call_cli.run("github.example_function", echo_str) + assert ret.exitcode == 0 + assert ret.json + assert ret.json == echo_str diff --git a/requirements/lint.txt b/tests/integration/states/__init__.py similarity index 100% rename from requirements/lint.txt rename to tests/integration/states/__init__.py diff --git a/tests/pytests/integration/conftest.py b/tests/pytests/integration/conftest.py deleted file mode 100644 index de99d98b..00000000 --- a/tests/pytests/integration/conftest.py +++ /dev/null @@ -1,109 +0,0 @@ -""" - tests.pytests.integration.conftest - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - PyTest fixtures -""" - -import logging - -import pytest - -log = logging.getLogger(__name__) - - -@pytest.fixture(scope="package") -def salt_master(salt_master_factory): - """ - A running salt-master fixture - """ - with salt_master_factory.started(): - yield salt_master_factory - - -@pytest.fixture(scope="package") -def salt_minion(salt_master, salt_minion_factory): - """ - A running salt-minion fixture - """ - assert salt_master.is_running() - with salt_minion_factory.started(): - # Sync All - salt_call_cli = salt_minion_factory.salt_call_cli() - ret = salt_call_cli.run("saltutil.sync_all", _timeout=120) - assert ret.returncode == 0, ret - yield salt_minion_factory - - -@pytest.fixture(scope="module") -def salt_sub_minion(salt_master, salt_sub_minion_factory): - """ - A second running salt-minion fixture - """ - assert salt_master.is_running() - with salt_sub_minion_factory.started(): - # Sync All - salt_call_cli = salt_sub_minion_factory.salt_call_cli() - ret = salt_call_cli.run("saltutil.sync_all", _timeout=120) - assert ret.returncode == 0, ret - yield salt_sub_minion_factory - - -@pytest.fixture(scope="package") -def salt_cli(salt_master): - """ - The ``salt`` CLI as a fixture against the running master - """ - assert salt_master.is_running() - return salt_master.salt_cli(timeout=30) - - -@pytest.fixture(scope="package") -def salt_call_cli(salt_minion): - """ - The ``salt-call`` CLI as a fixture against the running minion - """ - assert salt_minion.is_running() - return salt_minion.salt_call_cli(timeout=30) - - -@pytest.fixture(scope="package") -def salt_cp_cli(salt_master): - """ - The ``salt-cp`` CLI as a fixture against the running master - """ - assert salt_master.is_running() - return salt_master.salt_cp_cli(timeout=30) - - -@pytest.fixture(scope="package") -def salt_key_cli(salt_master): - """ - The ``salt-key`` CLI as a fixture against the running master - """ - assert salt_master.is_running() - return salt_master.salt_key_cli(timeout=30) - - -@pytest.fixture(scope="package") -def salt_run_cli(salt_master): - """ - The ``salt-run`` CLI as a fixture against the running master - """ - assert salt_master.is_running() - return salt_master.salt_run_cli(timeout=30) - - -@pytest.fixture(scope="module") -def salt_ssh_cli(salt_master, salt_ssh_roster_file, sshd_config_dir): - """ - The ``salt-ssh`` CLI as a fixture against the running master - """ - assert salt_master.is_running() - return salt_master.salt_ssh_cli( - timeout=180, - roster_file=salt_ssh_roster_file, - target_host="localhost", - client_key=str(sshd_config_dir / "client_key"), - base_script_args=["--ignore-host-keys"], - ) diff --git a/tests/pytests/unit/conftest.py b/tests/unit/conftest.py similarity index 74% rename from tests/pytests/unit/conftest.py rename to tests/unit/conftest.py index e19db6cf..b3b6ceda 100644 --- a/tests/pytests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,25 +1,19 @@ -import asyncio import os import pytest - import salt.config -import salt.transport.tcp -from tests.support.mock import MagicMock, patch @pytest.fixture def minion_opts(tmp_path): """ - Default minion configuration with relative temporary paths to not require root permissions. + Default minion configuration with relative temporary paths to not + require root permissions. """ root_dir = tmp_path / "minion" opts = salt.config.DEFAULT_MINION_OPTS.copy() opts["__role"] = "minion" opts["root_dir"] = str(root_dir) - opts["master_uri"] = "tcp://{ip}:{port}".format( - ip="127.0.0.1", port=opts["master_port"] - ) for name in ("cachedir", "pki_dir", "sock_dir", "conf_dir"): dirpath = root_dir / name dirpath.mkdir(parents=True) @@ -32,7 +26,8 @@ def minion_opts(tmp_path): @pytest.fixture def master_opts(tmp_path): """ - Default master configuration with relative temporary paths to not require root permissions. + Default master configuration with relative temporary paths to not + require root permissions. """ root_dir = tmp_path / "master" opts = salt.config.master_config(None) @@ -50,7 +45,8 @@ def master_opts(tmp_path): @pytest.fixture def syndic_opts(tmp_path): """ - Default master configuration with relative temporary paths to not require root permissions. + Default master configuration with relative temporary paths to not + require root permissions. """ root_dir = tmp_path / "syndic" opts = salt.config.DEFAULT_MINION_OPTS.copy() @@ -64,14 +60,3 @@ def syndic_opts(tmp_path): opts["log_file"] = "logs/syndic.log" opts["conf_file"] = os.path.join(opts["conf_dir"], "syndic") return opts - - -@pytest.fixture -def mocked_tcp_pub_client(): - transport = MagicMock(spec=salt.transport.tcp.TCPPubClient) - transport.connect = MagicMock() - future = asyncio.Future() - transport.connect.return_value = future - future.set_result(True) - with patch("salt.transport.tcp.TCPPubClient", transport): - yield diff --git a/requirements/py3.5/docs.txt b/tests/unit/modules/__init__.py similarity index 100% rename from requirements/py3.5/docs.txt rename to tests/unit/modules/__init__.py diff --git a/tests/unit/modules/test_github.py b/tests/unit/modules/test_github.py new file mode 100644 index 00000000..02fecd24 --- /dev/null +++ b/tests/unit/modules/test_github.py @@ -0,0 +1,13 @@ +import pytest +import salt.modules.test as testmod +import saltext.github.modules.github as github_module + + +@pytest.fixture +def configure_loader_modules(): + module_globals = { + "__salt__": {"test.echo": testmod.echo}, + } + return { + github_module: module_globals, + } diff --git a/requirements/py3.5/lint.txt b/tests/unit/states/__init__.py similarity index 100% rename from requirements/py3.5/lint.txt rename to tests/unit/states/__init__.py diff --git a/tests/unit/states/test_github.py b/tests/unit/states/test_github.py new file mode 100644 index 00000000..df29bb28 --- /dev/null +++ b/tests/unit/states/test_github.py @@ -0,0 +1,32 @@ +import pytest +import salt.modules.test as testmod +import saltext.github.modules.github as github_module +import saltext.github.states.github as github_state + + +@pytest.fixture +def configure_loader_modules(): + return { + github_module: { + "__salt__": { + "test.echo": testmod.echo, + }, + }, + github_state: { + "__salt__": { + # "github.example_function": github_module.example_function, + }, + }, + } + + +def test_replace_this_this_with_something_meaningful(): + echo_str = "Echoed!" + expected = { + "name": echo_str, + "changes": {}, + "result": True, + "comment": f"The 'github.example_function' returned: '{echo_str}'", + } + # assert github_state.exampled(echo_str) == expected + assert True