diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/ack.yml | 9 | ||||
-rw-r--r-- | .github/workflows/push.yml | 12 | ||||
-rw-r--r-- | .github/workflows/release.yml | 39 | ||||
-rw-r--r-- | .github/workflows/tox.yml | 110 |
4 files changed, 170 insertions, 0 deletions
diff --git a/.github/workflows/ack.yml b/.github/workflows/ack.yml new file mode 100644 index 0000000..bdf02b5 --- /dev/null +++ b/.github/workflows/ack.yml @@ -0,0 +1,9 @@ +# See https://github.com/ansible/devtools/blob/main/.github/workflows/ack.yml +name: ack +on: + pull_request_target: + types: [opened, labeled, unlabeled, synchronize] + +jobs: + ack: + uses: ansible/devtools/.github/workflows/ack.yml@main diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000..c0c8e95 --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,12 @@ +# See https://github.com/ansible/devtools/blob/main/.github/workflows/push.yml +name: push +on: + push: + branches: + - main + - "releases/**" + - "stable/**" + +jobs: + ack: + uses: ansible/devtools/.github/workflows/push.yml@main diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..b05de88 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +name: release + +on: + release: + types: [published] + +jobs: + before-release: + uses: ansible/ansible-compat/.github/workflows/tox.yml@main + + release: + name: release ${{ github.event.ref }} + needs: before-release + # unable to use environment with uses/with, basically cannot reuse release pipelines + environment: release + runs-on: ubuntu-22.04 + permissions: + id-token: write + + env: + FORCE_COLOR: 1 + PY_COLORS: 1 + TOX_PARALLEL_NO_SPINNER: 1 + + steps: + - name: Switch to using Python 3.12 by default + uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Install tox + run: python3 -m pip install --user "tox>=4.0.0" + - name: Check out src from Git + uses: actions/checkout@v4 + with: + fetch-depth: 0 # needed by setuptools-scm + - name: Build dists + run: python -m tox -e pkg + - name: Publish to pypi.org + uses: pypa/gh-action-pypi-publish@unstable/v1 diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml new file mode 100644 index 0000000..f56f266 --- /dev/null +++ b/.github/workflows/tox.yml @@ -0,0 +1,110 @@ +name: tox +on: + create: # is used for publishing to PyPI and TestPyPI + tags: # any tag regardless of its name, no branches + - "**" + push: # only publishes pushes to the main branch to TestPyPI + branches: # any integration branch but not tag + - "main" + pull_request: + schedule: + - cron: 1 0 * * * # Run daily at 0:01 UTC + workflow_call: + +jobs: + pre: + name: pre + runs-on: ubuntu-22.04 + outputs: + matrix: ${{ steps.generate_matrix.outputs.matrix }} + steps: + - name: Determine matrix + id: generate_matrix + uses: coactions/dynamic-matrix@v1 + with: + min_python: "3.9" + max_python: "3.12" + default_python: "3.10" + other_names: | + lint + docs + pkg + py39-ansible212 + py39-ansible213 + py39-ansible214 + py39-ansible215 + py310-ansible215 + py311-ansible215 + py312-ansible216 + py312-devel + smoke + platforms: linux,macos + macos: minmax + build: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os || 'ubuntu-22.04' }} + needs: pre + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.pre.outputs.matrix) }} + env: + FORCE_COLOR: 1 + + steps: + - name: Check out src from Git + uses: actions/checkout@v4 + with: + fetch-depth: 0 # needed by setuptools-scm + + - name: Set up Python ${{ matrix.python_version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python_version }} + + - name: Pre-commit cache + uses: actions/cache@v3 + with: + path: ~/.cache/pre-commit + key: ${{ matrix.name }}-pre-commit-${{ hashFiles('setup.cfg', 'tox.ini', 'pyproject.toml', '.pre-commit-config.yaml') }} + + - name: Pip cache + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ matrix.name }}-pip-${{ hashFiles('setup.cfg', 'tox.ini', 'pyproject.toml', '.pre-commit-config.yaml') }} + + - name: Install tox + run: python3 -m pip install --upgrade 'tox>=4.0.3' + + - name: Initialize tox envs + run: python -m tox --notest --skip-missing-interpreters false -vv -e ${{ matrix.passed_name }} + + - name: Test with tox + run: python -m tox -e ${{ matrix.passed_name }} + + - name: Archive logs + uses: actions/upload-artifact@v3 + with: + name: logs.zip + path: .tox/**/log/ + + - name: Upload coverage data + if: ${{ startsWith(matrix.passed_name, 'py') }} + uses: codecov/codecov-action@v3 + with: + name: ${{ matrix.passed_name }} + fail_ci_if_error: false # see https://github.com/codecov/codecov-action/issues/598 + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true # optional (default = false) + + check: # This job does nothing and is only used for the branch protection + if: always() + + needs: + - build + runs-on: ubuntu-22.04 + steps: + - name: Decide whether the needed jobs succeeded or failed + uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} |