Skip to content

Commit 4580b2e

Browse files
authored
Improve FreeBSD CI Workflows speeds (#358)
The `freebsd-vagrant-action` action now supports running on `Linux` runners, which almost halves the duration of `FreeBSD` building and testing.
1 parent 011af8a commit 4580b2e

5 files changed

Lines changed: 22 additions & 12 deletions

File tree

.github/actions/dependencies/install/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ runs:
260260
${{ matrix.compiler == 'LLVM' && 'clang' || 'g++ gcc' }}
261261
if: |
262262
startsWith(matrix.image, 'ubuntu:') ||
263-
(!matrix.image && runner.os == 'Linux')
263+
(!matrix.image && github.job != 'FreeBSD' && runner.os == 'Linux')
264264
265265
- name: Link `gcc`/`g++` (openSUSE)
266266
run: |

.github/workflows/build-and-test.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,11 @@ jobs:
182182
${{ matrix.box_generic }}
183183
(${{ matrix.build_system }})
184184
(${{ matrix.compiler }})
185-
runs-on: macos-latest
185+
runs-on: ubuntu-latest
186186
strategy:
187187
matrix:
188188
box_generic:
189+
- freebsd12
189190
- freebsd13
190191
build_system:
191192
- CMake
@@ -205,7 +206,7 @@ jobs:
205206
uses: actions/checkout@v4
206207

207208
- name: Provision VM
208-
uses: hummeltech/freebsd-vagrant-action@v1.3
209+
uses: hummeltech/freebsd-vagrant-action@v1.4
209210
with:
210211
box: generic/${{ matrix.box_generic }}
211212
cpus: ${{ env.BUILD_PARALLEL_LEVEL }}

tests/CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ execute_process(COMMAND ${APXS_EXECUTABLE} -q progname
2020
find_package(UnixCommands REQUIRED)
2121
find_program(CAT_EXECUTABLE NAMES cat REQUIRED)
2222
find_program(CURL_EXECUTABLE NAMES curl REQUIRED)
23+
find_program(GREP_EXECUTABLE NAMES grep REQUIRED)
2324
find_program(HTTPD_EXECUTABLE NAMES ${HTTPD_PROGNAME} REQUIRED)
2425
find_program(ID_EXECUTABLE NAMES id REQUIRED)
2526
find_program(KILL_EXECUTABLE NAMES kill REQUIRED)
@@ -36,6 +37,7 @@ find_program(TOUCH_EXECUTABLE NAMES gtouch touch REQUIRED)
3637
set(MAP_NAME "default")
3738
set(HTTPD0_PORT "59980")
3839
set(HTTPD1_PORT "59981")
40+
set(RENDERD1_HOST "0.0.0.0")
3941
set(RENDERD1_PORT "59991")
4042
set(WWW_USER_NAME "nobody")
4143

@@ -200,16 +202,23 @@ add_test(
200202
add_test(
201203
NAME dirty_tile
202204
COMMAND ${BASH} -c "
203-
TILE_STATUS_CMD=\"${TILE_DEFAULT_CMD}/status | cut -d. -f2\"
204-
TILE_STATUS_OUTPUT_OLD=$(\${TILE_STATUS_CMD})
205+
TILE_STATUS_CMD=\"${TILE_DEFAULT_CMD}/status\"
206+
TILE_LAST_RENDERED_AT_OLD=$(\${TILE_STATUS_CMD} | ${GREP_EXECUTABLE} -o 'Last rendered at [^\\.]*.')
207+
echo \"Tile Last Rendered At (Old): \${TILE_LAST_RENDERED_AT_OLD}\"
205208
sleep 5;
206-
TILE_DIRTY_OUTPUT=$(${TILE_DEFAULT_CMD}/dirty)
209+
TILE_DIRTY_CMD=\"${TILE_DEFAULT_CMD}/dirty\"
210+
TILE_DIRTY_OUTPUT=$(\${TILE_DIRTY_CMD})
211+
echo \"Dirty: \${TILE_DIRTY_OUTPUT}\"
207212
if [ \"\${TILE_DIRTY_OUTPUT}\" != \"Tile submitted for rendering\" ]; then
208213
exit 1;
209214
fi
210-
until [ \"\${TILE_STATUS_OUTPUT_OLD}\" != \"$(\${TILE_STATUS_CMD})\" ]; do
215+
TILE_LAST_RENDERED_AT_NEW=$(\${TILE_STATUS_CMD} | ${GREP_EXECUTABLE} -o 'Last rendered at [^\\.]*.')
216+
echo \"Tile Last Rendered At (New): \${TILE_LAST_RENDERED_AT_NEW}\"
217+
until [ \"\${TILE_LAST_RENDERED_AT_OLD}\" != \"\${TILE_LAST_RENDERED_AT_NEW}\" ]; do
211218
echo 'Sleeping 1s';
212219
sleep 1;
220+
TILE_LAST_RENDERED_AT_NEW=$(\${TILE_STATUS_CMD} | ${GREP_EXECUTABLE} -o 'Last rendered at [^\\.]*.');
221+
echo \"Tile Last Rendered At (New): \${TILE_LAST_RENDERED_AT_NEW}\";
213222
done
214223
"
215224
WORKING_DIRECTORY tests
@@ -275,7 +284,7 @@ set_tests_properties(render_speedtest PROPERTIES
275284
set_tests_properties(render_expired PROPERTIES
276285
DEPENDS render_speedtest
277286
FIXTURES_REQUIRED httpd_started
278-
TIMEOUT 20
287+
TIMEOUT 60
279288
)
280289
set_tests_properties(render_list PROPERTIES
281290
DEPENDS render_speedtest
@@ -290,7 +299,7 @@ set_tests_properties(render_old PROPERTIES
290299
set_tests_properties(download_tiles PROPERTIES
291300
FIXTURES_REQUIRED httpd_started
292301
FIXTURES_SETUP tiles_downloaded
293-
TIMEOUT 20
302+
TIMEOUT 60
294303
)
295304
set_tests_properties(check_tiles PROPERTIES
296305
DEPENDS download_tiles
@@ -301,7 +310,7 @@ set_tests_properties(dirty_tile PROPERTIES
301310
DEPENDS download_tiles
302311
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
303312
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
304-
TIMEOUT 20
313+
TIMEOUT 60
305314
)
306315
set_tests_properties(remove_tiles PROPERTIES
307316
DEPENDS download_tiles

tests/httpd.conf.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Redirect /renderd-example-map/leaflet/leaflet.min.js https://unpkg.com/leaflet/d
5151
ModTileMaxLoadMissing 5
5252
ModTileMaxLoadOld 2
5353
ModTileMissingRequestTimeout 10
54-
ModTileRenderdSocketAddr 127.0.0.1 @RENDERD1_PORT@
54+
ModTileRenderdSocketAddr @RENDERD1_HOST@ @RENDERD1_PORT@
5555
ModTileRequestTimeout 3
5656
ModTileThrottlingRenders 128 0.2
5757
ModTileThrottlingTiles 10000 1

tests/renderd.conf.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ URI=/tiles/renderd-example-webp
3333
XML=@PROJECT_SOURCE_DIR@/utils/example-map/mapnik.xml
3434

3535
[renderd1]
36-
iphostname=127.0.0.1
36+
iphostname=@RENDERD1_HOST@
3737
ipport=@RENDERD1_PORT@
3838
pid_file=@PROJECT_BINARY_DIR@/tests/run/renderd1.pid
3939
stats_file=@PROJECT_BINARY_DIR@/tests/run/renderd1.stats

0 commit comments

Comments
 (0)