Skip to content

dev-setup: actually install lintr (bypass renv + add system dev libs) #60

dev-setup: actually install lintr (bypass renv + add system dev libs)

dev-setup: actually install lintr (bypass renv + add system dev libs) #60

Workflow file for this run

name: CI
on:
push:
# main is intentionally excluded: publish.yaml builds + smoke-tests (then
# publishes) on main pushes, so running this too would just double the build.
# Every other branch (feature/dev branches) is gated here, plus all PRs.
branches-ignore: [main]
# Skip the ~3-min image rebuild for docs-only pushes. paths-ignore is a
# denylist (skip only when *every* changed file matches), so a new
# build-relevant file can never be silently excluded -- and no build input
# is markdown, so ignoring docs is safe.
paths-ignore:
- '**.md'
- 'docs/**'
- 'LICENSE'
pull_request:
paths-ignore:
- '**.md'
- 'docs/**'
- 'LICENSE'
permissions:
contents: read
jobs:
# Build the deliverable images and smoke-test them in-image. This runs the same
# scripts/build_images.sh used on the lab PC, so "CI green" == "builds + works on
# the workstation". Compiles FVS from source (FVS_BASE=source); first run is slow
# (FVS build + renv restore). FVS_BASE=ghcr is a verified faster alternative
# (extracts the prebuilt engine from usfs-fvs); add a buildx layer cache if build
# time becomes a problem.
images:
name: Build images + in-image smoke test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive # vendor/fvs (+NVEL), fvs-build, fvs-interface
# buildx + the GHA cache backend (CACHE=gha) so unchanged layers (the FVS
# compile, renv restore) are reused across PR/branch runs. publish.yaml
# deliberately omits this -- release builds miss the cache for
# reproducibility (docs/UPSTREAM_REVIEW.md A4).
- uses: docker/setup-buildx-action@v3
- name: Build + smoke test
run: bash scripts/build_images.sh
env:
ENGINE: docker
FVS_VARIANT: ie
FVS_BASE: source
CACHE: gha