Bump docker/build-push-action from 2 to 5 #36
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-ignore: ["docs/**", "tests/**", "**.md", "**.rst"] | |
pull_request: | |
paths-ignore: ["docs/**", "tests/**", "**.md", "**.rst"] | |
workflow_dispatch: | |
inputs: | |
baseline: | |
description: > | |
The baseline revision. Pro-tip, use `.pypi` to use the latest version | |
on PyPI or `.XXX` to use a PR. | |
required: true | |
default: main | |
baseline-args: | |
description: "Custom Black arguments (eg. -l 79)" | |
required: false | |
target: | |
description: > | |
The target revision to compare against the baseline. Same tip applies here. | |
required: true | |
target-args: | |
description: "Custom Black arguments (eg. -S)" | |
required: false | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
analysis: | |
name: analysis / linux | |
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 | |
steps: | |
- name: Checkout this repository (full clone) | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v2 | |
- name: Install diff-shades and support dependencies | |
run: | | |
python -m pip install pip --upgrade | |
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: Calculate run configuration & metadata | |
id: config | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: > | |
python helper.py config ${{ github.event_name }} | |
${{ github.event.inputs.baseline }} ${{ github.event.inputs.target }} | |
--baseline-args "${{ github.event.inputs.baseline-args }}" | |
- name: Attempt to use cached baseline analysis | |
id: baseline-cache | |
uses: actions/[email protected] | |
with: | |
path: ${{ steps.config.outputs.baseline-analysis }} | |
key: ${{ steps.config.outputs.baseline-cache-key }} | |
- name: Build and install baseline revision | |
if: steps.baseline-cache.outputs.cache-hit != 'true' | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: > | |
${{ steps.config.outputs.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/ | |
${{ steps.config.outputs.baseline-analysis }} -- ${{ github.event.inputs.baseline-args }} | |
- name: Build and install target revision | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: > | |
${{ steps.config.outputs.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/ | |
${{ steps.config.outputs.target-analysis }} --repeat-projects-from | |
${{ steps.config.outputs.baseline-analysis }} -- ${{ github.event.inputs.target-args }} | |
- name: Generate HTML diff report | |
run: > | |
diff-shades --dump-html diff.html compare --diff --quiet | |
${{ steps.config.outputs.baseline-analysis }} ${{ steps.config.outputs.target-analysis }} | |
- name: Upload diff report | |
uses: actions/upload-artifact@v2 | |
with: | |
name: diff.html | |
path: diff.html | |
- name: Upload baseline analysis | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ steps.config.outputs.baseline-analysis }} | |
path: ${{ steps.config.outputs.baseline-analysis }} | |
- name: Upload target analysis | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ steps.config.outputs.target-analysis }} | |
path: ${{ steps.config.outputs.target-analysis }} | |
- name: Generate summary file (PR only) | |
if: github.event_name == 'pull_request' | |
run: > | |
python helper.py comment-body | |
${{ steps.config.outputs.baseline-analysis }} ${{ steps.config.outputs.target-analysis }} | |
${{ steps.config.outputs.baseline-sha }} ${{ steps.config.outputs.target-sha }} | |
${{ github.event.pull_request.number }} | |
- name: Upload summary file (PR only) | |
if: github.event_name == 'pull_request' | |
uses: actions/upload-artifact@v2 | |
with: | |
name: .pr-comment.json | |
path: .pr-comment.json | |
# This is last so the diff-shades-comment workflow can still work even if we | |
# end up detecting failed files and failing the run. | |
- name: Check for failed files in both analyses | |
run: > | |
diff-shades show-failed --check --show-log ${{ steps.config.outputs.baseline-analysis }}; | |
diff-shades show-failed --check --show-log ${{ steps.config.outputs.target-analysis }} |