forked from damies13/rfswarm
-
Notifications
You must be signed in to change notification settings - Fork 0
148 lines (139 loc) · 5.74 KB
/
Regression_Tests_Manager.yaml
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
---
name: Regression Tests - Manager
on: workflow_call
jobs:
Manager:
strategy:
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
# robot: ['6.1.1', '7.0']
python: ['3.8', '3.9', '3.10', '3.11', '3.12']
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- name: "Echo Vars"
run: |
echo matrix.platform: ${{ matrix.platform }}
echo matrix.python: ${{ matrix.python }}
- name: (MacOS, <3.11) Fix Python's tkinter Issue-649 (https://github.com/actions/setup-python/issues/649)
shell: bash
if: ${{ startswith(matrix.platform, 'macos-') && contains('3.7;3.8;3.9;3.10', matrix.python) }}
run: |
brew install tcl-tk pyenv openssl readline sqlite3 xz zlib
env \
PATH="$(brew --prefix tcl-tk)/bin:$PATH" \
LDFLAGS="-L$(brew --prefix tcl-tk)/lib" \
CPPFLAGS="-I$(brew --prefix tcl-tk)/include" \
PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \
CFLAGS="-I$(brew --prefix tcl-tk)/include" \
PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' --with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6'" \
pyenv install ${{matrix.python}}
pyenv global ${{matrix.python}}
- name: setup-python
if: ${{ !startswith(matrix.platform, 'macos-') || contains('3.11;3.12;', matrix.python) }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Pip Update
run: python -m pip install --upgrade pip
- name: Checkout
uses: actions/checkout@v4
- name: "Apt Update"
if: ${{ matrix.platform == 'ubuntu-latest' }}
run: |
sudo apt update -y
- name: "Ubuntu Installs"
if: ${{ matrix.platform == 'ubuntu-latest' }}
run: |
sudo apt install -y python3-tk python3-dev python3-xlib scrot fluxbox # tesseract-ocr
sudo apt list --installed
- name: "Ubuntu Xvfb"
if: ${{ matrix.platform == 'ubuntu-latest' }}
run: |
export DISPLAY=:13.0
Xvfb :13 -screen 0 1920x1080x24 > /dev/null 2>&1 &
# xauth with complain unless ~/.Xauthority exists
touch ~/.Xauthority
# To view a listing of the .Xauthority file, enter the following
xauth list
sleep 1
# fluxbox
fluxbox &
- name: Update Robot Tag
shell: python
run: |
import os
tag = "${{ matrix.platform }}"
tagarr = tag.split("-")
tag = "{}-latest".format(tagarr[0])
env_file = os.getenv('GITHUB_ENV')
with open(env_file, "a") as myfile:
myfile.write("tag={}\n".format(tag))
- name: Download packages to dist
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Show Dist UM
if: ${{ matrix.platform != 'windows-latest' }}
run: |
ls -la dist
- name: Show Dist W
if: ${{ matrix.platform == 'windows-latest' }}
run: |
dir dist
- name: Install Manager from dist UM
if: ${{ matrix.platform != 'windows-latest' }}
run: pip install rfswarm_manager-*.whl
working-directory: ./dist
- name: Install Manager from dist W
if: ${{ matrix.platform == 'windows-latest' }}
shell: cmd
run: for %%f in (rfswarm_manager-*.whl) do pip install %%f
working-directory: ./dist
- name: Install Agent from dist (for testing Issues) UM
if: ${{ matrix.platform != 'windows-latest' }}
run: pip install rfswarm_agent-*.whl
working-directory: ./dist
- name: Install Agent from dist (for testing Issues) W
if: ${{ matrix.platform == 'windows-latest' }}
shell: cmd
run: for %%f in (rfswarm_agent-*.whl) do pip install %%f
working-directory: ./dist
- run: pip install -r Tests/Regression/Manager/pip_requirements.txt
- name: Robot Framework
id: robottest
run: >
robot --include ${{ env.tag }}
--outputdir Tests/Regression/Manager/Logs/${{ matrix.platform }}_${{ matrix.python }}
Tests/Regression/Manager
env:
DISPLAY: :13.0
MATRIX_PLATFORM: ${{ matrix.platform }}
MATRIX_PYTHON: ${{ matrix.python }}
- name: Try and fix images with relative path
if: ${{ !cancelled() && matrix.platform != 'macos-latest' }}
run: |
cd Tests/Regression/Manager/Logs/${{ matrix.platform }}_${{ matrix.python }}
sed --in-place=.bak 's/img src=".*${{ matrix.platform }}_${{ matrix.python }}/img src="./g' ./output.xml
rebot ./output.xml
- name: Try and fix images with relative path (macos)
if: ${{ !cancelled() && matrix.platform == 'macos-latest' }}
run: |
cd Tests/Regression/Manager/Logs/${{ matrix.platform }}_${{ matrix.python }}
sed -i.bak 's/img src=".*${{ matrix.platform }}_${{ matrix.python }}/img src="./g' ./output.xml
rebot ./output.xml
- name: Archive Manager Logs
if: ${{ success() }}
uses: actions/upload-artifact@v4
with:
name: Manager-${{ matrix.platform }}-${{ matrix.python }}
path: Tests/Regression/Manager/Logs/${{ matrix.platform }}_${{ matrix.python }}
retention-days: 15
- name: Archive Manager Logs (longer retention if failed)
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: Manager-${{ matrix.platform }}-${{ matrix.python }}
path: Tests/Regression/Manager/Logs/${{ matrix.platform }}_${{ matrix.python }}
retention-days: 90