diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index ad5aba96..84bc3097 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -1,180 +1,26 @@ +--- 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 + push: + branches: - "main" + - "releases/**" + - "stable/**" pull_request: - schedule: - - cron: 1 0 * * * # Run daily at 0:01 UTC + branches: + - "main" workflow_call: -jobs: - prepare: - name: prepare - runs-on: ubuntu-22.04 - outputs: - matrix: ${{ steps.generate_matrix.outputs.matrix }} - steps: - - name: Determine matrix - id: generate_matrix - uses: coactions/dynamic-matrix@v4 - with: - min_python: "3.9" - max_python: "3.13" - default_python: "3.10" - other_names: | - lint - docs - pkg - py39-ansible214 - py39-ansible215 - py310-ansible215 - py310-ansible217 - py311-ansible215 - py312-ansible216 - py312-ansible217 - py312-devel - py313-devel - smoke - platforms: linux,macos - macos: minmax - build: - name: ${{ matrix.name }} - - runs-on: ${{ matrix.os || 'ubuntu-22.04' }} - needs: prepare - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.prepare.outputs.matrix) }} - env: - FORCE_COLOR: 1 - PYTEST_REQPASS: 109 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # needed by setuptools-scm - submodules: true - - - 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@v4 - 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@v4 - 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' - - - run: ${{ matrix.command }} - - - run: ${{ matrix.command2 }} - if: ${{ matrix.command2 }} - - - run: ${{ matrix.command3 }} - if: ${{ matrix.command3 }} - - - run: ${{ matrix.command4 }} - if: ${{ matrix.command4 }} - - - run: ${{ matrix.command5 }} - if: ${{ matrix.command5 }} - - - name: Archive logs - uses: actions/upload-artifact@v4 - with: - name: logs-${{ matrix.name }}.zip - include-hidden-files: true - path: | - .tox/**/log/ - .tox/**/.coverage* - .tox/**/coverage.xml +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true - - name: Report failure if git reports dirty status - run: | - if [[ -n $(git status -s) ]]; then - # shellcheck disable=SC2016 - echo -n '::error file=git-status::' - printf '### Failed as git reported modified and/or untracked files\n```\n%s\n```\n' "$(git status -s)" | tee -a "$GITHUB_STEP_SUMMARY" - exit 99 - fi - # https://github.com/actions/toolkit/issues/193 - - check: - if: always() - permissions: - id-token: write - checks: read - - needs: - - build - runs-on: ubuntu-latest - - steps: - # checkout needed for codecov action which needs codecov.yml file - - uses: actions/checkout@v4 - - - name: Set up Python # likely needed for coverage - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - run: pip3 install 'coverage>=7.5.1' - - - name: Merge logs into a single archive - uses: actions/upload-artifact/merge@v4 - with: - name: logs.zip - include-hidden-files: true - pattern: logs-*.zip - # artifacts like py312.zip and py312-macos do have overlapping files - separate-directories: true - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: logs.zip - path: . - - - name: Check for expected number of coverage.xml reports - run: | - JOBS_PRODUCING_COVERAGE=16 - if [ "$(find . -name coverage.xml | wc -l | bc)" -ne "${JOBS_PRODUCING_COVERAGE}" ]; then - echo "::error::Number of coverage.xml files was not the expected one (${JOBS_PRODUCING_COVERAGE}): $(find . -name coverage.xml |xargs echo)" - exit 1 - fi - - - name: Upload coverage data - uses: codecov/codecov-action@v4 - with: - name: ${{ matrix.name }} - # verbose: true # optional (default = false) - fail_ci_if_error: true - use_oidc: true # cspell:ignore oidc - - - name: Check codecov.io status - if: github.event_name == 'pull_request' - uses: coactions/codecov-status@main - - - name: Decide whether the needed jobs succeeded or failed - uses: re-actors/alls-green@release/v1 - with: - jobs: ${{ toJSON(needs) }} - - - name: Delete Merged Artifacts - uses: actions/upload-artifact/merge@v4 - with: - include-hidden-files: true - delete-merged: true +jobs: + tox: + uses: ansible/team-devtools/.github/workflows/tox.yml@main + with: + other_names: | + docs + lint + pkg diff --git a/.gitignore b/.gitignore index 8e14d578..59a247c1 100644 --- a/.gitignore +++ b/.gitignore @@ -134,3 +134,4 @@ ansible_collections # Generated by setuptools-scm src/ansible_compat/_version.py +node_modules diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..fcec5d76 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,28 @@ +{ + "name": "ansible-compat", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "prettier": "^3.4.2" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..bb8539da --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "prettier": "^3.4.2" + } +}