-
Notifications
You must be signed in to change notification settings - Fork 5.3k
138 lines (130 loc) · 4.12 KB
/
mobile-perf.yml
File metadata and controls
138 lines (130 loc) · 4.12 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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'
&& github.event.workflow_run.repository.full_name == github.repository
&& contains(fromJSON('["pull_request_target", "push", "schedule"]'), github.event.workflow_run.event)
uses: ./.github/workflows/_load.yml
with:
check-name: mobile-perf
build:
permissions:
actions: read
contents: read
packages: read
if: ${{ needs.load.outputs.request && 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: bazel
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=ci
--config=mobile-rbe
--config=mobile-release
//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=ci
--config=mobile-rbe
--config=mobile-release
//test/performance:test_binary_size
ref: main
target: size-main
compare:
permissions:
actions: read
contents: read
packages: read
if: ${{ needs.load.outputs.request && 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'
&& github.event.workflow_run.repository.full_name == github.repository
&& contains(fromJSON('["pull_request_target", "push", "schedule"]'), github.event.workflow_run.event)
&& needs.load.outputs.request
&& fromJSON(needs.load.outputs.request).run.mobile-perf
needs:
- load
- build
- compare
uses: ./.github/workflows/_finish.yml
with:
needs: ${{ toJSON(needs) }}