Merge parallel benchmarks + include propagator + latest GH action (#838)

* Include propagator benchmarks + latest GH action
* When we moved the aws-xray propagator in #720, we needed to update the benchmark step of the workflow
* Additionally, the GH action has evolved since we added benchmarks so we should use the latest version

* Merge all parallel benchmarks after they complete
This commit is contained in:
(Eliseo) Nathaniel Ruiz Nowell
2021-12-23 00:36:47 -08:00
committed by GitHub
parent 9219677adb
commit c962da908c

View File

@ -45,17 +45,40 @@ jobs:
key: v4-build-tox-cache-${{ env.RUN_MATRIX_COMBINATION }}-${{ hashFiles('tox.ini', 'gen-requirements.txt', 'dev-requirements.txt') }} key: v4-build-tox-cache-${{ env.RUN_MATRIX_COMBINATION }}-${{ hashFiles('tox.ini', 'gen-requirements.txt', 'dev-requirements.txt') }}
- name: run tox - name: run tox
run: tox -f ${{ matrix.python-version }}-${{ matrix.package }} -- --benchmark-json=${{ env.RUN_MATRIX_COMBINATION }}-benchmark.json run: tox -f ${{ matrix.python-version }}-${{ matrix.package }} -- --benchmark-json=${{ env.RUN_MATRIX_COMBINATION }}-benchmark.json
- name: Find and merge benchmarks - name: Find and merge ${{ matrix.package }} benchmarks
# TODO: Add at least one benchmark to every package type to remove this (#249) # TODO: Add at least one benchmark to every package type to remove this (#249)
if: matrix.package == 'sdkextension' if: matrix.package == 'sdkextension' || matrix.package == 'propagator'
run: >-
mkdir -p benchmarks;
jq -s '.[0].benchmarks = ([.[].benchmarks] | add)
| if .[0].benchmarks == null then null else .[0] end'
**/**/tests/*${{ matrix.package }}*-benchmark.json > benchmarks/output_${{ matrix.package }}.json
- name: Upload all benchmarks under same key as an artifact
if: ${{ success() }}
uses: actions/upload-artifact@v2
with:
name: benchmarks
path: benchmarks/output_${{ matrix.package }}.json
combine-benchmarks:
runs-on: ubuntu-latest
needs: build
if: ${{ always() }}
name: Combine benchmarks from previous build job
steps:
- name: Checkout Contrib Repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v2
- name: Download all benchmarks as artifact using key
uses: actions/download-artifact@v2
with:
name: benchmarks
path: benchmarks
- name: Find and merge all benchmarks
run: >- run: >-
jq -s '.[0].benchmarks = ([.[].benchmarks] | add) jq -s '.[0].benchmarks = ([.[].benchmarks] | add)
| if .[0].benchmarks == null then null else .[0] end' | if .[0].benchmarks == null then null else .[0] end'
**/**/tests/*${{ matrix.package }}*-benchmark.json > output.json benchmarks/output_*.json > output.json;
- name: Report on benchmark results - name: Report on benchmark results
# TODO: Add at least one benchmark to every package type to remove this (#249) uses: benchmark-action/github-action-benchmark@v1
if: matrix.package == 'sdkextension'
uses: rhysd/github-action-benchmark@v1
with: with:
name: OpenTelemetry Python Benchmarks - Python ${{ env[matrix.python-version ]}} - ${{ matrix.package }} name: OpenTelemetry Python Benchmarks - Python ${{ env[matrix.python-version ]}} - ${{ matrix.package }}
tool: pytest tool: pytest