Skip to content

CI (branch: dependabot/github_actions/ncipollo/release-action-1.13.0) #147

CI (branch: dependabot/github_actions/ncipollo/release-action-1.13.0)

CI (branch: dependabot/github_actions/ncipollo/release-action-1.13.0) #147

Workflow file for this run

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
env:
COLUMNS: 190
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:
pre-commit:
name: Pre-Commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-actionlint
- uses: ./.github/actions/setup-shellcheck
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Set Cache Key
run: |
echo "PY=$(python --version --version | sha256sum | cut -d' ' -f1)" >> "$GITHUB_ENV"
- uses: actions/cache@v3
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}|${{ hashFiles('.pre-commit-hooks/*') }}
- name: Install Dependencies
run: |
python -m pip install pre-commit==3.2.2
pre-commit install --install-hooks
- name: Run Pre-Commit
run: |
pre-commit run --show-diff-on-failure --color=always --all-files
docs:
name: Docs
runs-on: ubuntu-latest
needs: Pre-Commit
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.9 For Nox
uses: actions/setup-python@v4
with:
python-version: 3.9
- 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:
name: Linux
runs-on: ubuntu-latest
needs: Pre-Commit
timeout-minutes: 15
strategy:
fail-fast: false
max-parallel: 10
matrix:
include:
- {"salt-version": "3005.0", "python-version": "3.7", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.7", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.8", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.8", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.9", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.9", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.7", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.7", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.8", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.8", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "core", "source": "onedir"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "examples", "source": "onedir"}
env:
PYTHON: ${{ matrix.python-version }}
SALT: ${{ matrix.salt-version }}
TESTSUITE: ${{ matrix.testsuite }}
SOURCE: ${{ matrix.source }}
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Nox
run: |
python -m pip install --upgrade pip
pip install nox
- name: Install `tools` command
if: ${{ matrix.source == 'onedir' }}
run: |
python -m pip install -r requirements/tools.txt
- name: Download Salt Onedir
if: ${{ matrix.source == 'onedir' }}
run: |
tools ci download-onedir --platform ${{ runner.os }} --arch ${{ runner.arch }} ${{ matrix.salt-version }}
- name: Install Test Requirements
env:
SALT_REQUIREMENT: salt~=${{ matrix.salt-version }}
run: |
nox --force-color -e tests${{ matrix.testsuite == 'examples' && '-examples' || '' }}-${{ matrix.source == 'onedir' && 'onedir' || '3' }} --install-only
- name: Test
env:
SALT_REQUIREMENT: salt~=${{ matrix.salt-version }}
SKIP_REQUIREMENTS_INSTALL: YES
run: |
nox --force-color -e tests${{ matrix.testsuite == 'examples' && '-examples' || '' }}-${{ matrix.source == 'onedir' && 'onedir' || '3' }} -- -vv
- name: Upload Logs
if: always()
uses: actions/upload-artifact@main
with:
name: runtests-${{ runner.os }}-${{ matrix.python-version }}-salt-${{ matrix.salt-version }}-${{ matrix.source }}${{ matrix.testsuite == 'examples' && '-examples' || '' }}.log
path: artifacts/runtests-*.log
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-project.xml
flags: src,${{ runner.os }},${{ matrix.testsuite }}
name: project-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-tests.xml
flags: tests,${{ runner.os }},${{ matrix.testsuite }}
name: tests-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
windows:
name: Windows
runs-on: windows-latest
needs: Pre-Commit
timeout-minutes: 40
strategy:
fail-fast: false
max-parallel: 10
matrix:
include:
- {"salt-version": "3005.0", "python-version": "3.8", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.8", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.8", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.8", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "core", "source": "onedir"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "examples", "source": "onedir"}
env:
PYTHON: ${{ matrix.python-version }}
SALT: ${{ matrix.salt-version }}
TESTSUITE: ${{ matrix.testsuite }}
SOURCE: ${{ matrix.source }}
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Nox
run: |
python -m pip install --upgrade pip
pip install nox
- name: Install `tools` command
if: ${{ matrix.source == 'onedir' }}
shell: bash
run: |
python -m pip install -r requirements/tools.txt
- name: Download Salt Onedir
if: ${{ matrix.source == 'onedir' }}
shell: bash
run: |
tools ci download-onedir --platform ${{ runner.os }} --arch ${{ runner.arch }} ${{ matrix.salt-version }}
- name: Download libeay32.dll
shell: bash
if: ${{ matrix.python-version == '3.8' && startswith(matrix.salt-version, '3005') }}
run: |
PY_LOC=$(which python.exe)
export PY_LOC
echo "${PY_LOC}"
PY_DIR=$(dirname "${PY_LOC}")
export PY_DIR
echo "${PY_DIR}"
curl https://repo.saltproject.io/windows/dependencies/64/libeay32.dll --output "${PY_DIR}/libeay32.dll"
ls -l "${PY_DIR}"
- name: Define test session
shell: bash
id: define-test-session
run: echo "test-session=tests${{ matrix.testsuite == 'examples' && '-examples' || '' }}-${{ matrix.source == 'onedir' && 'onedir' || '3' }}" >> "$GITHUB_OUTPUT"
- name: Install Test Requirements
shell: bash
env:
SALT_REQUIREMENT: salt~=${{ matrix.salt-version }}
run: |
export PATH="/C/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64;$PATH"
nox --force-color --envdir 'C:\.nox' -e ${{ steps.define-test-session.outputs.test-session }} --install-only
- name: Patch salt/utils/win_network.py
shell: bash
if: ${{ startswith(matrix.salt-version, '3006') }}
run: |
if [ "${{ matrix.source }}" == "pypi" ]; then
patch 'C:\.nox\${{ steps.define-test-session.outputs.test-session }}\lib\site-packages\salt\utils\win_network.py' ./.github/patches/win_network.patch
else
patch '.\artifacts\salt\lib\site-packages\salt\utils\win_network.py' ./.github/patches/win_network.patch
fi
- 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"
echo "$PATH"
nox --force-color --envdir 'C:\.nox' -e ${{ steps.define-test-session.outputs.test-session }}
- name: Upload Logs
if: always()
uses: actions/upload-artifact@main
with:
name: runtests-${{ runner.os }}-${{ matrix.python-version }}-salt-${{ matrix.salt-version }}-${{ matrix.source }}${{ matrix.testsuite == 'examples' && '-examples' || '' }}.log
path: artifacts/runtests-*.log
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-project.xml
flags: src,${{ runner.os }},${{ matrix.testsuite }}
name: project-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-tests.xml
flags: tests,${{ runner.os }},${{ matrix.testsuite }}
name: tests-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
macos:
name: MacOS
runs-on: macOS-latest
needs: Pre-Commit
timeout-minutes: 40
strategy:
fail-fast: false
max-parallel: 6
matrix:
include:
- {"salt-version": "3005.0", "python-version": "3.9", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3005.0", "python-version": "3.9", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.9", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "core", "source": "pypi"}
- {"salt-version": "3006.0", "python-version": "3.10", "testsuite": "examples", "source": "pypi"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "core", "source": "onedir"}
- {"salt-version": "3006.x", "python-version": "3.10", "testsuite": "examples", "source": "onedir"}
env:
PYTHON: ${{ matrix.python-version }}
SALT: ${{ matrix.salt-version }}
TESTSUITE: ${{ matrix.testsuite }}
SOURCE: ${{ matrix.source }}
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Nox
run: |
python -m pip install --upgrade pip
pip install nox
- name: Install `tools` command
if: ${{ matrix.source == 'onedir' }}
run: |
python -m pip install -r requirements/tools.txt
- name: Download Salt Onedir
if: ${{ matrix.source == 'onedir' }}
run: |
tools ci download-onedir --platform ${{ runner.os }} --arch ${{ runner.arch }} ${{ matrix.salt-version }}
- name: Install Test Requirements
env:
SALT_REQUIREMENT: salt~=${{ matrix.salt-version }}
run: |
nox --force-color -e tests${{ matrix.testsuite == 'examples' && '-examples' || '' }}-${{ matrix.source == 'onedir' && 'onedir' || '3' }} --install-only
- name: Test
env:
SALT_REQUIREMENT: salt~=${{ matrix.salt-version }}
SKIP_REQUIREMENTS_INSTALL: YES
run: |
nox --force-color -e tests${{ matrix.testsuite == 'examples' && '-examples' || '' }}-${{ matrix.source == 'onedir' && 'onedir' || '3' }} -- -vv
- name: Upload Logs
if: always()
uses: actions/upload-artifact@main
with:
name: runtests-${{ runner.os }}-${{ matrix.python-version }}-salt-${{ matrix.salt-version }}-${{ matrix.source }}${{ matrix.testsuite == 'examples' && '-examples' || '' }}.log
path: artifacts/runtests-*.log
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-project.xml
flags: src,${{ runner.os }},${{ matrix.testsuite }}
name: project-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
- name: Upload coverage to Codecov
if: ${{ matrix.source != 'onedir' }}
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: artifacts/
env_vars: PYTHON,SALT,TESTSUITE,SOURCE
fail_ci_if_error: false
files: coverage-tests.xml
flags: tests,${{ runner.os }},${{ matrix.testsuite }}
name: tests-${{ runner.os }}-salt-${{ matrix.salt-version }}-Py${{ matrix.python-version}}-${{ matrix.testsuite }}-${{ matrix.source }}
verbose: true
build:
name: Build Package
runs-on: ubuntu-latest
needs:
- docs
- linux
- windows
- macos
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install Nox
run: |
python -m pip install nox
- name: Build a binary wheel and a source tarball
run: |
nox -e build
- name: Upload Built Wheel and Source Tarball
uses: actions/upload-artifact@v3
with:
name: release-artifacts
path: |
dist/*.tar.gz
dist/*.whl
- name: Build examples binary wheel and a source tarball
run: |
nox -e build -- examples
- name: Upload Built Examples Wheel and Source Tarball
uses: actions/upload-artifact@v3
with:
name: examples-release-artifacts
path: |
examples/dist/*.tar.gz
examples/dist/*.whl
release:
name: Publish Release
runs-on: ubuntu-latest
if: github.event.repository.fork == false && github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
environment: release
permissions:
contents: write # To be able to publish the gh-release
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
needs:
- build
steps:
- uses: actions/checkout@v3
- name: Download Built Wheel and Source Tarball
uses: actions/download-artifact@v3
with:
name: release-artifacts
path: dist/
- name: Create Github Release
uses: ncipollo/[email protected]
with:
artifactErrorsFailBuild: true
artifacts: "dist/*.tar.gz,dist/*.whl"
draft: false
generateReleaseNotes: true
makeLatest: true
prerelease: ${{ contains(github.ref, 'rc') }}
removeArtifacts: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish distribution 📦 to Test PyPI
uses: pypa/[email protected]
with:
repository-url: https://test.pypi.org/legacy/
print-hash: true
- name: Publish distribution 📦 to PyPI
uses: pypa/[email protected]
with:
print-hash: true
set-pipeline-exit-status:
# This step is just so we can make github require this step, to pass checks
# on a pull request instead of requiring all
name: Set the ${{ github.workflow }} Pipeline Exit Status
if: always()
runs-on: ubuntu-latest
needs:
- pre-commit
- docs
- linux
- windows
- macos
- build
- release
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"