Bump docker/build-push-action from 3 to 5 #16
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: diff-shades | |
on: | |
push: | |
branches: [main] | |
paths: ["src/**", "setup.*", "pyproject.toml", ".github/workflows/*"] | |
pull_request: | |
paths: ["src/**", "setup.*", "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@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "*" | |
- name: Install diff-shades and support dependencies | |
run: | | |
python -m pip install click 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: | |
# 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@v3 | |
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 packaging urllib3 | |
python -m pip install -r .github/mypyc-requirements.txt | |
# 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 "[email protected]" | |
- 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 setup.py --use-mypyc bdist_wheel | |
&& python -m pip install dist/*.whl && rm build dist -r | |
- 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 setup.py --use-mypyc bdist_wheel | |
&& python -m pip install dist/*.whl | |
- 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 }} | |
--check-allow 'sqlalchemy:test/orm/test_relationship_criteria.py' |