Skip to content

Build and test

Build and test #5250

Workflow file for this run

---
name: Build and test
on:
push:
branches:
- grass[0-9]+
pull_request:
schedule:
# 01:00 Pacific Time (in UTC), every day (late night PT)
- cron: 0 8 * * *
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress:
# Do not cancel on protected branches, like grass8
${{ github.ref_protected != true }}
permissions: {}
jobs:
build:
name: ${{ matrix.grass-version }} (Python ${{ matrix.python-version }})
runs-on: ubuntu-22.04
strategy:
matrix:
# Test with relevant active branches or tags and supported Python
# versions, but also limit the number of jobs by, e.g., testing only
# every second version or testing older GRASS versions with older Python
# only.
include:
- grass-version: main
python-version: "3.11"
- grass-version: releasebranch_8_4
python-version: "3.10"
fail-fast: false
steps:
- name: Checkout core
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: OSGeo/grass
ref: ${{ matrix.grass-version }}
path: grass
- name: Checkout addons
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: grass-addons
- name: Get dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y wget git gawk findutils
xargs -a <(awk '! /^ *(#|$)/' "grass-addons/.github/workflows/apt.txt") -r -- \
sudo apt-get install -y --no-install-recommends --no-install-suggests
- name: Set up Python ${{ matrix.python-version }} as default Python
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: ${{ matrix.python-version }}
- name: Get Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r grass-addons/.github/workflows/requirements.txt
- name: Create installation directory
run: |
mkdir "$HOME/install"
- name: Set number of cores for compilation
run: |
echo "MAKEFLAGS=-j$(nproc)" >> "$GITHUB_ENV"
- name: Set LD_LIBRARY_PATH for GRASS GIS compilation
run: |
echo "LD_LIBRARY_PATH=$HOME/install/lib" >> "$GITHUB_ENV"
- name: Build GRASS GIS core
run: |
cd grass
../grass-addons/.github/workflows/build_grass.sh "$HOME/install"
- name: Add the bin directory to PATH
run: |
echo "$HOME/install/bin" >> "$GITHUB_PATH"
- name: Make simple grass command available (not needed in G8)
run: |
if [ ! -e "$HOME/install/bin/grass" ] ; then \
ln -s "$HOME"/install/bin/grass* "$HOME"/install/bin/grass ; fi
- name: Build addons
run: |
cd grass-addons/src
GRASS_INSTALL="$("$HOME/install/bin/grass" --config | sed -n '4{p;q}')"
make MODULE_TOPDIR="$GRASS_INSTALL"
- name: Get extra Python dependencies
run: |
GDAL_VERSION="$(gdal-config --version)"
export GDAL_VERSION
UDUNITS2_XML_PATH=/usr/share/xml/udunits/udunits2.xml
export UDUNITS2_XML_PATH
pip install -r grass-addons/.github/workflows/extra_requirements.txt
- name: Set up R
uses: r-lib/actions/setup-r@473c68190595b311a74f208fba61a8d8c0d4c247 # v2.11.1
with:
r-version: 4.2.1
- name: Get R dependencies
run: |
grass-addons/.github/workflows/install_r_packages.R
- name: Run tests
run: |
cd grass-addons/src
../.github/workflows/test.sh
- name: Make HTML test report available
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: testreport-grass-${{ matrix.grass-version }}-python-${{ matrix.python-version }}
path: grass-addons/src/testreport
retention-days: 3