From e665ac67481569f4f2deb4890fd9d6a92ef91d83 Mon Sep 17 00:00:00 2001 From: "Bradley A. Thornton" Date: Thu, 30 May 2024 16:14:21 -0700 Subject: [PATCH] Test reusable from td (#191) * Test reusable from td * Add needs * Pass matrix in * Pass matrix in * Make pretty * Switch to test * Rename to tests outcome * To JSON * One file --- .github/workflows/tox.yml | 164 +------------------------------------- go.json | 50 ++++++++++++ 2 files changed, 54 insertions(+), 160 deletions(-) create mode 100644 go.json diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 606b15c..556519b 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -2,8 +2,8 @@ name: tox on: - push: # only publishes pushes to the main branch to TestPyPI - branches: # any integration branch but not tag + push: + branches: - "main" pull_request: branches: @@ -13,162 +13,6 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true -env: - FORCE_COLOR: 1 # tox, pytest, ansible-lint - PY_COLORS: 1 - 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@v1 - with: - min_python: "3.10" - max_python: "3.12" - default_python: "3.12" # used by jobs in other_names - other_names: | - lint - docs - pkg - platforms: linux,macos - - build: - name: ${{ matrix.name }} - runs-on: ${{ matrix.os || 'ubuntu-22.04' }} - needs: - - prepare - defaults: - run: - shell: ${{ matrix.shell || 'bash'}} - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.prepare.outputs.matrix) }} - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # needed by setuptools-scm - submodules: true - - - name: Set pre-commit cache - uses: actions/cache@v4 - if: ${{ matrix.passed_name == 'lint' }} - with: - path: | - ~/.cache/pre-commit - key: pre-commit-${{ matrix.name || matrix.passed_name }}-${{ hashFiles('.pre-commit-config.yaml') }} - - - name: Set up Python ${{ matrix.python_version || '3.10' }} - if: "!contains(matrix.shell, 'wsl')" - uses: actions/setup-python@v5 - with: - cache: pip - python-version: ${{ matrix.python_version || '3.10' }} - - - name: Install tox - run: | - python3 -m pip install --upgrade pip - python3 -m pip install --upgrade "tox>=4.0.0" - - - name: Log installed dists - run: python3 -m pip freeze --all - - - name: Initialize tox envs ${{ matrix.passed_name }} - run: python3 -m tox --notest --skip-missing-interpreters false -vv -e ${{ matrix.passed_name }} - timeout-minutes: 5 # average is under 1, but macos can be over 3 - - # sequential run improves browsing experience (almost no speed impact) - - name: tox -e ${{ matrix.passed_name }} - run: python3 -m tox -e ${{ matrix.passed_name }} - - - name: Archive logs and coverage data - uses: actions/upload-artifact@v4 - with: - name: logs-${{ matrix.name }}.zip - path: | - .tox/**/log/ - .tox/**/coverage.xml - - - 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: - pull-requests: write # allow codenotify to comment on pull-request - id-token: write - checks: read - - needs: - - build - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Set up Python - 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 - pattern: logs-*.zip - separate-directories: true - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: logs.zip - - - name: Check for expected number of coverage.xml reports - run: | - JOBS_PRODUCING_COVERAGE=5 - 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.passed_name }} - fail_ci_if_error: true - use_oidc: true - - - 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: - delete-merged: true - - - name: Notify repository owners about changes affecting them - uses: sourcegraph/codenotify@v0.6.4 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://github.com/sourcegraph/codenotify/issues/19 - continue-on-error: true + tox: + uses: ansible/team-devtools/.github/workflows/tox.yml@main diff --git a/go.json b/go.json new file mode 100644 index 0000000..07ab6f4 --- /dev/null +++ b/go.json @@ -0,0 +1,50 @@ +[ + { + "name": "lint", + "passed_name": "lint", + "python_version": "3.12", + "os": "ubuntu-22.04" + }, + { + "name": "docs", + "passed_name": "docs", + "python_version": "3.12", + "os": "ubuntu-22.04" + }, + { + "name": "pkg", + "passed_name": "pkg", + "python_version": "3.12", + "os": "ubuntu-22.04" + }, + { + "name": "py310", + "python_version": "3.10", + "os": "ubuntu-22.04", + "passed_name": "py310" + }, + { + "name": "py311", + "python_version": "3.11", + "os": "ubuntu-22.04", + "passed_name": "py311" + }, + { + "name": "py312", + "python_version": "3.12", + "os": "ubuntu-22.04", + "passed_name": "py312" + }, + { + "name": "py310-macos", + "python_version": "3.10", + "os": "macos-13", + "passed_name": "py310" + }, + { + "name": "py312-macos", + "python_version": "3.12", + "os": "macos-13", + "passed_name": "py312" + } +]