CI (branch: dependabot/github_actions/ncipollo/release-action-1.13.0) #147
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |