-
Notifications
You must be signed in to change notification settings - Fork 4.8k
123 lines (115 loc) · 3.39 KB
/
mobile-perf.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
name: Mobile/Perf
permissions:
contents: read
on:
workflow_run:
workflows:
- Request
types:
- completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
load:
secrets:
app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
app-id: ${{ secrets.ENVOY_CI_APP_ID }}
lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_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) }}