diff --git a/.github/workflows/pypi.yaml b/.github/workflows/cd-pypi.yaml similarity index 95% rename from .github/workflows/pypi.yaml rename to .github/workflows/cd-pypi.yaml index 914a368bda..d0ec691e8d 100644 --- a/.github/workflows/pypi.yaml +++ b/.github/workflows/cd-pypi.yaml @@ -1,4 +1,4 @@ -name: Upload Python Package +name: "[CD] Upload to pypi" on: release: diff --git a/.github/workflows/test.yaml b/.github/workflows/ci-branch.yaml similarity index 98% rename from .github/workflows/test.yaml rename to .github/workflows/ci-branch.yaml index d47574d179..905b66fab3 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/ci-branch.yaml @@ -1,6 +1,6 @@ -name: Testing +name: "[CI] Test branch" -on: [push, pull_request] +on: [push] jobs: unitlint: diff --git a/.github/workflows/ci-pr-coverage.yaml b/.github/workflows/ci-pr-coverage.yaml new file mode 100644 index 0000000000..dd02c69983 --- /dev/null +++ b/.github/workflows/ci-pr-coverage.yaml @@ -0,0 +1,31 @@ +name: "[CI] Upload PR coverage" + +on: + workflow_run: + workflows: ["[CI] Test PR"] + types: + - completed + +jobs: + upload-coverage: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Download All Artifacts + uses: actions/download-artifact@v4 + with: + pattern: coverage-* + merge-multiple: true + + - name: Upload coverage report + if: '!cancelled()' + uses: codecov/codecov-action@v3 + with: + override_commit: ${{ github.event.workflow_run.head_sha }} + override_pr: ${{ github.event.workflow_run.pull_requests[0].number }} + token: ${{ secrets.CODECOV_TOKEN }} + files: "coverage-*.xml" + fail_ci_if_error: true + verbose: true diff --git a/.github/workflows/ci-pr.yaml b/.github/workflows/ci-pr.yaml new file mode 100644 index 0000000000..d2c78cd36e --- /dev/null +++ b/.github/workflows/ci-pr.yaml @@ -0,0 +1,73 @@ +name: "[CI] Test PR" + +on: [pull_request] + +jobs: + unitlint: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: [ 3.8, 3.9, "3.10", "3.11", "3.12" ] + + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - name: Install Tox and any other packages + run: pip install tox + - name: Run Tox + run: | + tox -e style + tox -e type + tox -e py + env: + COVERAGE_FILE: ".coverage.${{ matrix.python }}" + - name: Store coverage file + uses: actions/upload-artifact@v4 + if: matrix.os == 'ubuntu-latest' + with: + name: coverage-${{ matrix.python }} + path: .coverage.${{ matrix.python }} + integration: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: [3.8] + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - name: Install cfn-lint + run: | + pip3 install -e . + - name: Run cfn-lint + run: | + cfn-lint test/fixtures/templates/good/generic.yaml + cat test/fixtures/templates/good/generic.yaml | cfn-lint + dependencies: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python: [3.8] + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - name: Install cfn-lint + run: | + pip3 install -e . + pip install --upgrade pip + pip install --upgrade setuptools + - uses: pypa/gh-action-pip-audit@v1.0.8 + with: + ignore-vulns: | + GHSA-r9hx-vwmv-q579 diff --git a/tox.ini b/tox.ini index b28b050c9f..7d282d5848 100644 --- a/tox.ini +++ b/tox.ini @@ -7,6 +7,7 @@ commands = coverage run -m unittest discover -s {posargs:test} coverage xml skip_install = True +passenv = COVERAGE_FILE deps = coverage>=7.2.1 pydot