-
Notifications
You must be signed in to change notification settings - Fork 58
167 lines (153 loc) · 5.45 KB
/
ci.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: CI
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
jobs:
test:
strategy:
matrix:
os: [ubuntu-22.04, macos-12, windows-2022]
name: Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- run: pip install .[testing]
name: Install
- run: pytest --durations 10
name: Run pytest
docs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install
run: pip install .[docs]
- name: Build docs
run: cd docs && make html
- name: Build coverage
run: cd docs && make coverage
- name: Test coverage
run: |
if [ -s docs/_build/coverage/python.txt ]; then
echo "Doc coverage is missing for the for:"
cat docs/_build/coverage/python.txt
exit 1
fi
test-ecosystem:
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
name: Test Ecosystem
runs-on: ubuntu-20.04
steps:
- run: sudo apt update; sudo apt install -y libegl1
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '8'
- uses: actions/checkout@v3
with:
fetch-depth: 0
path: archinfo
- run: git -C archinfo checkout master # FIXME: temporary workaround for == versions
- run: pip install ./archinfo
# Checkout and install all the ecosystem packages
# Core packages
# pyvex
- run: git clone --depth 1 --recursive https://github.com/angr/pyvex.git
- run: pip install ./pyvex
# cle
- run: git clone --depth 1 https://github.com/angr/cle.git
- run: pip install ./cle
# TODO: remove this once angr installs claripy directly
- run: git clone --depth 1 https://github.com/angr/claripy.git
- run: pip install ./claripy
# TODO: remove this once angr installs ailment directly
- run: git clone --depth 1 https://github.com/angr/ailment.git
- run: pip install ./ailment
# angr
- run: git clone --depth 1 https://github.com/angr/angr.git
- run: sed -i 's/pyvex[^"]*/pyvex/g' angr/pyproject.toml # FIXME: temporary workaround for == versions
- run: pip install ./angr
# angr management
- run: git clone --depth 1 https://github.com/angr/angr-management.git
- run: pip install ./angr-management
# binaries
- run: git clone --depth 1 https://github.com/angr/binaries.git
# Extended packages
# angr-platforms
- run: git clone --depth 1 https://github.com/angr/angr-platforms.git
- run: pip install ./angr-platforms
# pysoot
- run: git clone --depth 1 https://github.com/angr/pysoot.git -b refactor/jpype
- run: pip install ./pysoot
# archr, dep of rex
- run: git clone --depth 1 https://github.com/angr/archr.git
- run: pip install ./archr
# angrop
- run: git clone --depth 1 https://github.com/angr/angrop.git
- run: pip install ./angrop
# tracer, dep of rex
- run: git clone --depth 1 https://github.com/angr/tracer.git
- run: pip install ./tracer
# compilerex, patcherex
- run: git clone --depth 1 https://github.com/mechaphish/compilerex.git
- run: pip install ./compilerex
# povsim, dep of rex
- run: git clone --depth 1 https://github.com/mechaphish/povsim.git
- run: pip install ./povsim
# rex
- run: git clone --depth 1 https://github.com/angr/rex.git
- run: pip install ./rex
# colorguard, test dep of rex
- run: git clone --depth 1 https://github.com/mechaphish/colorguard.git
- run: pip install ./colorguard
# driller
- run: git clone --depth 1 https://github.com/shellphish/driller.git
- run: pip install ./driller
# heaphopper
- run: git clone --depth 1 https://github.com/angr/heaphopper.git
- run: pip install ./heaphopper
# patcherex
- run: git clone --depth 1 https://github.com/angr/patcherex.git
- run: pip install ./patcherex
# Reinstall archinfo in case it was overwritten by one of the ecosystem packages
- run: git -C archinfo checkout -
- run: pip install ./archinfo[testing]
- name: Set cores to get stored in /cores
run: |
sudo mkdir /cores
sudo chmod 777 /cores
# Core filenames will be of the form executable.pid.timestamp:
sudo bash -c 'echo "/cores/%e.%p.%t" > /proc/sys/kernel/core_pattern'
- name: Run pytest
run: |
ulimit -c unlimited
ulimit -v 6291456
pytest -rfEs --capture=no --log-cli-level=INFO --durations 10 --splits 10 --group ${{matrix.group}} cle angr
# angr-platforms pysoot angrop rex driller heaphopper patcherex
echo "Return code: $?"
env:
SKIP_SLOW_TESTS: 1
PYSOOT_HEAP_SIZE: 2147483648 # 2GB
- uses: actions/upload-artifact@v3
if: ${{ failure() }} # Run only if something went wrong
with:
name: cores
path: /cores