generated from oracle/template-repo
-
Notifications
You must be signed in to change notification settings - Fork 17
98 lines (94 loc) · 3.81 KB
/
litevm.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
name: litevm test
on:
push:
branches:
- main
pull_request:
jobs:
commit-hooks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
name: Set up Python
with:
python-version: '3.x'
- name: Install pre-commit
run: pip install pre-commit
- name: Run pre-commit hooks
run: pre-commit run --all-files --show-diff-on-failure
test:
runs-on: ubuntu-20.04
strategy:
matrix:
# OL7 and OL8 use 3.6. OL9 uses 3.9. Also test on the latest.
python-minor: ["6", "9", "12"]
fail-fast: false
env:
# Manually set the tox environment list to the Python version.
# As a result, we should set "skip missing interpreters" to false,
# so that we fail if the test doesn't run.
TOX_OVERRIDE: "tox.envlist=py3${{ matrix.python-minor }}"
TOX_SKIP_MISSING_INTERPRETERS: "false"
steps:
- uses: actions/checkout@v4
# If we rely on using the same Python version for tox as we do for the
# testing version of Python, we end up getting different versions of tox
# with different behavior. Let's setup a well-defined python version for
# tox and use that. We need to place this one before the regular python
# setup so that the regular python takes precedence.
- name: Set up Python for Tox
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.${{ matrix.python-minor }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install qemu-kvm zstd gzip bzip2 cpio busybox-static fio
sudo wget -O /usr/bin/rpm2cpio https://github.com/rpm-software-management/rpm/raw/rpm-4.19.0-release/scripts/rpm2cpio.sh
echo '0403da24a797ccfa0cfd37bd4a6d6049370b9773e558da6173ae6ad25f97a428 /usr/bin/rpm2cpio' | sha256sum -c -
sudo chmod 755 /usr/bin/rpm2cpio
- name: Setup test environment
# Pinned virtualenv and tox are for the last versions which support
# detecting Python 3.6 and running tests on it.
run: |
python3.12 -m pip install --user --break-system-packages 'virtualenv<20.22.0' 'tox<4.5.0'
sed -i 's/sitepackages = true/sitepackages = false/' tox.ini
tox list
tox --notest
tox -e runner --notest
# Use Github Actions to cache RPMs by date. This can save a couple minutes
# in the run, which is nice. The cache contains the Yum sqlite database,
# and the downloaded RPMs.
#
# A cache miss results in getting the most recent cached data (e.g. from
# yesterday). The runner will check the repo metadata and get the updated
# data, and delete any stale data, so after the run completes, the
# testdata can be cached for future runs.
#
# On a cache hit, the test runner will still check the yum repo metadata,
# and if it differs from the cached data, it will clear and download it.
# So a cache hit isn't guaranteed to speed things up, but kernel packages
# aren't usually updated _that_ frequently.
- name: Get Date
id: get-date
run: |
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
shell: bash
- name: Cache RPMs
uses: actions/cache@v3
with:
path: testdata/yumcache
key: ${{ runner.os }}-rpms-${{ steps.get-date.outputs.date }}
restore-keys: |
${{ runner.os }}-rpms-
- name: Fetch RPMs
run: |
tox -e runner -- python -m testing.litevm.rpm
- name: Run tests
run: |
tox -e runner -- python -m testing.litevm.vm --python-version 3${{ matrix.python-minor }}