Skip to content

chore(deps-dev): bump @semantic-release/github from 11.0.0 to 11.0.1 in the development-dependencies group #184

chore(deps-dev): bump @semantic-release/github from 11.0.0 to 11.0.1 in the development-dependencies group

chore(deps-dev): bump @semantic-release/github from 11.0.0 to 11.0.1 in the development-dependencies group #184

Workflow file for this run

name: CI
on:
workflow_call:
schedule:
- cron: "0 7 * * 1"
push:
branches:
- '*'
- '!main'
- '!beta'
- '!alpha'
pull_request:
permissions:
contents: read
jobs:
libxml2:
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Install required tools
run: sudo apt-get update && sudo apt-get install -y automake pkgconf libtool
- name: Configure build tools
run: |
cd thirdparty/libxml2
# omit the auto included configure step
NOCONFIGURE=1 ./autogen.sh
emconfigure ./configure --disable-shared --prefix=$GITHUB_WORKSPACE/dist \
--with-http=no --with-python=no --with-threads=no --with-zlib=no \
--with-modules=no --with-c14n=no --with-catalog=no --with-debug=no \
--with-html=no --with-iconv=no --with-iso8859x=no --with-legacy=no \
--with-push=no --with-reader=no --with-readline=no --with-regexps=no \
--with-valid=no --with-writer=no --with-xinclude=no --with-lzma=no \
--with-schematron=no --with-schemas=yes
- name: Start compilation
run: |
cd thirdparty/libxml2
emmake make install -j$(nproc)
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: libxml2
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
SQLite:
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Install required tools
run: sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tcl
- name: Configure build tools and compile
run: |
cd thirdparty/sqlite
git apply ../../patches/sqlite_fix_build.patch
export OPT_FEATURE_FLAGS="-DSQLITE_OMIT_ALTERTABLE -DSQLITE_OMIT_ANALYZE -DSQLITE_UNTESTABLE -DSQLITE_OMIT_SHARED_CACHE \
-DSQLITE_OMIT_AUTOVACUUM -DSQLITE_OMIT_BLOB_LITERAL -DSQLITE_OMIT_CHECK -DSQLITE_OMIT_COMPILEOPTION_DIAGS \
-DSQLITE_OMIT_DATETIME_FUNCS -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_EXPLAIN -DSQLITE_OMIT_FLAG_PRAGMAS \
-DSQLITE_OMIT_GENERATED_COLUMNS -DSQLITE_OMIT_HEX_INTEGER -DSQLITE_OMIT_INTEGRITY_CHECK -DSQLITE_OMIT_INTROSPECTION_PRAGMAS \
-DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_REINDEX -DSQLITE_OMIT_TCL_VARIABLE -DSQLITE_OMIT_TRACE \
-DSQLITE_OMIT_TRUNCATE_OPTIMIZATION -DSQLITE_OMIT_UTF16 -DSQLITE_OMIT_AUTHORIZATION"
export CFLAGS="-DSQLITE_ENABLE_RTREE -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 \
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA $OPT_FEATURE_FLAGS"
./configure --disable-shared --prefix=$GITHUB_WORKSPACE/dist
# build amalgamation without emscripten
make sqlite3.c
emconfigure ./configure --disable-shared --prefix=$GITHUB_WORKSPACE/dist
emmake make install -j$(nproc)
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: SQLite
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
GEOS:
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Configure build tools
run: |
cd thirdparty/geos
mkdir -p build && cd build
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF \
-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/dist -DBUILD_TESTING=OFF ..
- name: Start compilation
run: |
cd thirdparty/geos/build
emmake make install -j$(nproc)
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: GEOS
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
PROJ:
needs: [SQLite]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Restore previous build artifacts
uses: actions/[email protected]
with:
name: SQLite
path: dist/
- name: Configure build tools
run: |
cd thirdparty/PROJ
git apply ../../patches/proj_fix_build.patch
mkdir -p build && cd build
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF \
-DCMAKE_CXX_FLAGS=-fwasm-exceptions \
-DBUILD_TESTING=OFF -DSQLITE3_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include \
-DSQLITE3_LIBRARY=$GITHUB_WORKSPACE/dist/libsqlite3.a -DEXE_SQLITE3=$GITHUB_WORKSPACE/dist/bin \
-DENABLE_TIFF=OFF -DENABLE_CURL=OFF -DBUILD_APPS=OFF -DCMAKE_C_IMPLICIT_LINK_LIBRARIES=" " \
-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/dist -DBUILD_TESTING=OFF ..
- name: Start compilation
run: |
cd thirdparty/PROJ/build
emmake make install -j$(nproc)
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: PROJ
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
GDAL:
needs: [SQLite, PROJ]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Restore previous build artifacts
uses: actions/[email protected]
with:
pattern: '{SQLite,PROJ}'
path: dist/
merge-multiple: true
- name: Configure build tools
run: |
cd thirdparty/gdal
# trigger port loading
EM_DATA=$EMSDK/upstream/emscripten
EM_CACHE=$EM_DATA/cache
touch temp.c
emcc -c -s SUPPORT_LONGJMP=wasm -s USE_ZLIB=1 -s USE_LIBPNG=1 -s USE_LIBJPEG=1 temp.c
git apply ../../patches/gdal_reduce_size.patch
mkdir -p build && cd build
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist \
-DCMAKE_CXX_FLAGS="-s SUPPORT_LONGJMP=wasm" -DCMAKE_C_FLAGS="-s SUPPORT_LONGJMP=wasm" \
-DPROJ_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include -DPROJ_LIBRARY=$GITHUB_WORKSPACE/dist/lib/libproj.a \
-DSQLite3_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include -DSQLite3_LIBRARY=$GITHUB_WORKSPACE/dist/lib/libsqlite3.a \
-DPNG_LIBRARY=$EM_CACHE/sysroot/lib/wasm32-emscripten/libpng-wasm-sjlj.a \
-DGDAL_USE_ICONV=OFF -DGDAL_USE_INTERNAL_LIBS=OFF -DENABLE_GNM=OFF -DENABLE_PAM=OFF \
-DGDAL_USE_JSONC_INTERNAL=ON -DBUILD_APPS=OFF -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/dist -DBUILD_TESTING=OFF ..
- name: Start compilation
run: |
cd thirdparty/gdal/build
emmake make install -j$(nproc)
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: GDAL
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
MapServer:
needs: [GDAL, GEOS, PROJ, libxml2]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Restore previous build artifacts
uses: actions/[email protected]
with:
pattern: '{GDAL,GEOS,PROJ,libxml2}'
path: dist/
merge-multiple: true
- name: Configure build tools
run: |
cd thirdparty/mapserver
# trigger port loading
EM_DATA=$EMSDK/upstream/emscripten
EM_CACHE=$EM_DATA/cache
touch temp.c
emcc -c -s SUPPORT_LONGJMP=wasm -s USE_ZLIB=1 -s USE_FREETYPE=1 -s USE_LIBPNG=1 -s USE_LIBJPEG=1 temp.c
mkdir -p build && cd build
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DWITH_FRIBIDI=OFF -DWITH_HARFBUZZ=OFF -DWITH_ICONV=OFF -DWITH_CAIRO=OFF -DWITH_FCGI=OFF \
-DWITH_POSTGIS=OFF -DWITH_WCS=OFF -DWITH_GIF=OFF -DWITH_PROTOBUFC=OFF -DCMAKE_C_FLAGS="-s SUPPORT_LONGJMP=wasm" \
-DFREETYPE_INCLUDE_DIR=$EM_CACHE/sysroot/include/freetype2 -DFREETYPE_LIBRARY=$EM_CACHE/sysroot/lib/wasm32-emscripten \
-DJPEG_INCLUDE_DIR=$EM_CACHE/sysroot/include -DJPEG_LIBRARY=$EM_CACHE/sysroot/lib/wasm32-emscripten \
-DPNG_INCLUDE_DIR=$EM_CACHE/sysroot/include -DPNG_LIBRARY=$EM_CACHE/sysroot/lib/wasm32-emscripten \
-DZLIB_INCLUDE_DIR=$EM_CACHE/sysroot/include -DZLIB_LIBRARY=$EM_CACHE/sysroot/lib/wasm32-emscripten \
-DPROJ_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include -DPROJ_LIBRARY=$GITHUB_WORKSPACE$GITHUB_WORKSPACE/dist/lib \
-DLIBXML2_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include/libxml2 -DLIBXML2_LIBRARY=$GITHUB_WORKSPACE/dist/lib \
-DGDAL_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include -DGDAL_LIBRARY=$GITHUB_WORKSPACE/dist/lib \
-DGEOS_INCLUDE_DIR=$GITHUB_WORKSPACE/dist/include -DGEOS_LIBRARY=$GITHUB_WORKSPACE/dist/lib ..
- name: Start compilation
run: |
cd thirdparty/mapserver/build
emmake make mapserver -j$(nproc) # build mapserver.a target only
- name: Install artifacts
run: |
cd thirdparty/mapserver/build
cp libmapserver.a $GITHUB_WORKSPACE/dist/lib
cp *.h $GITHUB_WORKSPACE/dist/include
cp ../src/*.h $GITHUB_WORKSPACE/dist/include
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: MapServer
path: dist/
if-no-files-found: error
retention-days: 1
overwrite: true
WASM:
needs: [MapServer]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Restore previous build artifacts
uses: actions/[email protected]
with:
name: MapServer
path: dist/
- name: Install required tools
run: sudo apt-get update && sudo apt-get install -y brotli
- name: Start compilation
run: emmake make
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: WASM
path: |
dist/mapserver.*
dist/mapserver-node.js
if-no-files-found: error
retention-days: 1
overwrite: true
Vitest:
needs: [WASM]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
uses: ./.github/actions/prepare-build-env
- name: Restore previous build artifacts
uses: actions/[email protected]
with:
name: WASM
path: dist/
- name: Install npm dependencies
run: npm ci
- name: Run jest tests
run: npm test