Skip to content

Mobile/Perf

Mobile/Perf #36251

Workflow file for this run

name: Mobile/Perf
permissions:
contents: read
on:
workflow_run:
workflows:
- Request
types:
- completed
concurrency:
group: >-
${{ ((github.event.workflow_run.head_branch == 'main'
|| startsWith(github.event.workflow_run.head_branch, 'release/v'))
&& github.event.repository.full_name == github.repository)
&& github.run_id
|| github.event.workflow_run.head_branch }}-${{ github.event.repository.full_name }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
load:
secrets:
app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
app-id: ${{ secrets.ENVOY_CI_APP_ID }}
permissions:
actions: read
contents: read
packages: read
pull-requests: read
if: ${{ github.event.workflow_run.conclusion == 'success' }}
uses: ./.github/workflows/_load.yml
with:
check-name: mobile-perf
build:
permissions:
contents: read
packages: read
if: ${{ fromJSON(needs.load.outputs.request).run.mobile-perf }}
needs: load
name: Build test binaries
uses: ./.github/workflows/_mobile_container_ci.yml
with:
args: ${{ matrix.args }}
command: ./bazelw
ref: ${{ matrix.ref }}
request: ${{ needs.load.outputs.request }}
source: ${{ matrix.source }}
container-output: |
"bazel-bin/test/performance/test_binary_size": test_binary_size/${{ matrix.target }}
target: ${{ matrix.target }}
upload-name: ${{ matrix.target }}
upload-path: /tmp/container-output/test_binary_size
timeout-minutes: 90
strategy:
matrix:
include:
- name: Current size
args: >-
build
--config=mobile-remote-release-clang
//test/performance:test_binary_size
# Ensure files don't leak back into the main binary
source: |-
TOREMOVE=$(cat mobile/test/performance/files_em_does_not_use | grep -vE '^#')
rm $TOREMOVE
target: size-current
- name: Main size
args: >-
build
--config=mobile-remote-release-clang
//test/performance:test_binary_size
ref: main
target: size-main
compare:
permissions:
contents: read
packages: read
if: ${{ fromJSON(needs.load.outputs.request).run.mobile-perf }}
needs:
- load
- build
name: size_compare
uses: ./.github/workflows/_mobile_container_ci.yml
with:
args: >-
../dist/main.zip
../dist/current.zip
command: ./ci/test_size_regression.sh
downloads: |
size-current: dist/sizecurrent
size-main: dist/sizemain
request: ${{ needs.load.outputs.request }}
runs-on: ubuntu-22.04
source: |
mkdir dist
strip -s -o dist/main.stripped /home/runner/work/_temp/dist/sizemain/size-main
strip -s -o dist/current.stripped /home/runner/work/_temp/dist/sizecurrent/size-current
zip -9 dist/main.zip dist/main.stripped
zip -9 dist/current.zip dist/current.stripped
target: size-compare
timeout-minutes: 30
request:
secrets:
app-id: ${{ secrets.ENVOY_CI_APP_ID }}
app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
actions: read
contents: read
pull-requests: read
if: >-
${{ always()
&& github.event.workflow_run.conclusion == 'success'
&& fromJSON(needs.load.outputs.request).run.mobile-perf }}
needs:
- load
- build
- compare
uses: ./.github/workflows/_finish.yml
with:
needs: ${{ toJSON(needs) }}