-
-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (117 loc) · 3.77 KB
/
benchmark.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
124
125
126
127
128
129
130
131
132
133
# Copyright 2020-2022 Signal Messenger, LLC
# SPDX-License-Identifier: AGPL-3.0-only
name: Benchmark
on:
push:
branches:
- development
- '[0-9]+.[0-9]+.x'
pull_request:
jobs:
linux:
runs-on: ubuntu-latest
if: ${{ github.repository == 'signalapp/Signal-Desktop-Private' }}
timeout-minutes: 30
steps:
- name: Get system specs
run: lsb_release -a
- name: Get other system specs
run: uname -a
- name: Clone Desktop repo
uses: actions/checkout@v2
- name: Setup node.js
uses: actions/setup-node@v2
with:
node-version: '16.13.0'
- name: Install global dependencies
run: npm install -g [email protected]
- name: Install xvfb
run: sudo apt-get install xvfb
- name: Cache Desktop node_modules
id: cache-desktop-modules
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Build typescript
run: yarn generate
- name: Bundle
run: yarn build:webpack
- name: Run startup benchmarks
run: |
set -o pipefail
xvfb-run --auto-servernum node ts/test-mock/benchmarks/startup_bench.js |
tee benchmark-startup.log
timeout-minutes: 10
env:
NODE_ENV: production
RUN_COUNT: 10
ELECTRON_ENABLE_STACK_DUMPING: on
ARTIFACTS_DIR: artifacts/startup
- name: Run send benchmarks
run: |
set -o pipefail
rm -rf /tmp/mock
xvfb-run --auto-servernum node ts/test-mock/benchmarks/send_bench.js |
tee benchmark-send.log
timeout-minutes: 10
env:
NODE_ENV: production
RUN_COUNT: 100
ELECTRON_ENABLE_STACK_DUMPING: on
ARTIFACTS_DIR: artifacts/send
- name: Run group send benchmarks
run: |
set -o pipefail
rm -rf /tmp/mock
xvfb-run --auto-servernum node \
ts/test-mock/benchmarks/group_send_bench.js | \
tee benchmark-group-send.log
timeout-minutes: 10
env:
NODE_ENV: production
RUN_COUNT: 100
ELECTRON_ENABLE_STACK_DUMPING: on
ARTIFACTS_DIR: artifacts/group-send
- name: Run conversation open benchmarks
run: |
set -o pipefail
rm -rf /tmp/mock
xvfb-run --auto-servernum node \
ts/test-mock/benchmarks/convo_open_bench.js | \
tee benchmark-convo-open.log
timeout-minutes: 10
env:
NODE_ENV: production
RUN_COUNT: 100
ELECTRON_ENABLE_STACK_DUMPING: on
ARTIFACTS_DIR: artifacts/convo-open
- name: Upload benchmark logs on failure
if: failure()
uses: actions/upload-artifact@v2
with:
name: logs
path: artifacts
- name: Clone benchmark repo
uses: actions/checkout@v2
with:
repository: 'signalapp/Signal-Desktop-Benchmarks-Private'
path: 'benchmark-results'
token: ${{ secrets.AUTOMATED_GITHUB_PAT }}
- name: Push benchmark repo
working-directory: benchmark-results
run: |
npm ci
node ./bin/collect.js ../benchmark-startup.log data/startup.json
node ./bin/collect.js ../benchmark-send.log data/send.json
node ./bin/collect.js ../benchmark-group-send.log data/group-send.json
node ./bin/collect.js ../benchmark-convo-open.log data/convo-open.json
npm run build
git config --global user.email "[email protected]"
git config --global user.name "Signal Bot"
git add .
git commit --message "${GITHUB_REF} ${GITHUB_SHA}"
git push --force origin main