![dependabot[bot]](/assets/img/avatar_default.png)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
156 lines
5.2 KiB
YAML
156 lines
5.2 KiB
YAML
name: diff-shades
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths: ["src/**", "pyproject.toml", ".github/workflows/*"]
|
|
|
|
pull_request:
|
|
paths: ["src/**", "pyproject.toml", ".github/workflows/*"]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
configure:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.set-config.outputs.matrix }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "*"
|
|
|
|
- name: Install diff-shades and support dependencies
|
|
run: |
|
|
python -m pip install 'click==8.1.3' packaging urllib3
|
|
python -m pip install https://github.com/ichard26/diff-shades/archive/stable.zip
|
|
|
|
- name: Calculate run configuration & metadata
|
|
id: set-config
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
run: >
|
|
python scripts/diff_shades_gha_helper.py config ${{ github.event_name }} ${{ matrix.mode }}
|
|
|
|
analysis:
|
|
name: analysis / ${{ matrix.mode }}
|
|
needs: configure
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
HATCH_BUILD_HOOKS_ENABLE: "1"
|
|
# Clang is less picky with the C code it's given than gcc (and may
|
|
# generate faster binaries too).
|
|
CC: clang-12
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: ${{ fromJson(needs.configure.outputs.matrix )}}
|
|
|
|
steps:
|
|
- name: Checkout this repository (full clone)
|
|
uses: actions/checkout@v4
|
|
with:
|
|
# The baseline revision could be rather old so a full clone is ideal.
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "*"
|
|
|
|
- name: Install diff-shades and support dependencies
|
|
run: |
|
|
python -m pip install https://github.com/ichard26/diff-shades/archive/stable.zip
|
|
python -m pip install 'click==8.1.3' packaging urllib3
|
|
# After checking out old revisions, this might not exist so we'll use a copy.
|
|
cat scripts/diff_shades_gha_helper.py > helper.py
|
|
git config user.name "diff-shades-gha"
|
|
git config user.email "diff-shades-gha@example.com"
|
|
|
|
- name: Attempt to use cached baseline analysis
|
|
id: baseline-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ matrix.baseline-analysis }}
|
|
key: ${{ matrix.baseline-cache-key }}
|
|
|
|
- name: Build and install baseline revision
|
|
if: steps.baseline-cache.outputs.cache-hit != 'true'
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
run: >
|
|
${{ matrix.baseline-setup-cmd }}
|
|
&& python -m pip install .
|
|
|
|
- name: Analyze baseline revision
|
|
if: steps.baseline-cache.outputs.cache-hit != 'true'
|
|
run: >
|
|
diff-shades analyze -v --work-dir projects-cache/
|
|
${{ matrix.baseline-analysis }} ${{ matrix.force-flag }}
|
|
|
|
- name: Build and install target revision
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
run: >
|
|
${{ matrix.target-setup-cmd }}
|
|
&& python -m pip install .
|
|
|
|
- name: Analyze target revision
|
|
run: >
|
|
diff-shades analyze -v --work-dir projects-cache/
|
|
${{ matrix.target-analysis }} --repeat-projects-from
|
|
${{ matrix.baseline-analysis }} ${{ matrix.force-flag }}
|
|
|
|
- name: Generate HTML diff report
|
|
run: >
|
|
diff-shades --dump-html diff.html compare --diff
|
|
${{ matrix.baseline-analysis }} ${{ matrix.target-analysis }}
|
|
|
|
- name: Upload diff report
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.mode }}-diff.html
|
|
path: diff.html
|
|
|
|
- name: Upload baseline analysis
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.baseline-analysis }}
|
|
path: ${{ matrix.baseline-analysis }}
|
|
|
|
- name: Upload target analysis
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.target-analysis }}
|
|
path: ${{ matrix.target-analysis }}
|
|
|
|
- name: Generate summary file (PR only)
|
|
if: github.event_name == 'pull_request' && matrix.mode == 'preview-changes'
|
|
run: >
|
|
python helper.py comment-body
|
|
${{ matrix.baseline-analysis }} ${{ matrix.target-analysis }}
|
|
${{ matrix.baseline-sha }} ${{ matrix.target-sha }}
|
|
${{ github.event.pull_request.number }}
|
|
|
|
- name: Upload summary file (PR only)
|
|
if: github.event_name == 'pull_request' && matrix.mode == 'preview-changes'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: .pr-comment.json
|
|
path: .pr-comment.json
|
|
|
|
- name: Verify zero changes (PR only)
|
|
if: matrix.mode == 'assert-no-changes'
|
|
run: >
|
|
diff-shades compare --check ${{ matrix.baseline-analysis }} ${{ matrix.target-analysis }}
|
|
|| (echo "Please verify you didn't change the stable code style unintentionally!" && exit 1)
|
|
|
|
- name: Check for failed files for target revision
|
|
# Even if the previous step failed, we should still check for failed files.
|
|
if: always()
|
|
run: >
|
|
diff-shades show-failed --check --show-log ${{ matrix.target-analysis }}
|