Skip to content

Bootstrap CI workflows and update DESCRIPTION#23

Open
WestonVoglesonger wants to merge 3 commits into
mainfrom
issue-9-ci-bootstrap
Open

Bootstrap CI workflows and update DESCRIPTION#23
WestonVoglesonger wants to merge 3 commits into
mainfrom
issue-9-ci-bootstrap

Conversation

@WestonVoglesonger
Copy link
Copy Markdown

Summary

First PR in the Week-5 plan from #22 — sets up GitHub Actions CI and replaces the roxygen2 boilerplate in DESCRIPTION. Bundled per the tracking issue's plan because CI needs a valid DESCRIPTION to run R CMD check at all.

Changes

  • .github/workflows/R-CMD-check.yaml — 3-OS × 3-R-version matrix (ubuntu/macos/windows × release/oldrel/devel) running --as-cran. Stan compile artifacts cached per OS+R version. R-devel jobs are continue-on-error: true to absorb upstream churn (Bioconductor / R-devel breakage). Adapted from the imuGAP / imugap-map CI pattern.
  • .github/workflows/lint.yamllintr::lint_package() on every push/PR, LINTR_ERROR_ON_LINT: true. Expected to fail on main until the lint cleanup PR (Linting #8) lands; surfacing the violations is the entire point.
  • .github/workflows/test-coverage.yamlcovr::package_coverage() on ubuntu-release, uploads cobertura.xml as an artifact. Codecov upload step deferred until a CODECOV_TOKEN repo secret is configured.
  • .Rbuildignore — exclude .github/ so workflow files don't end up in the built source tarball.
  • DESCRIPTION — replaces roxygen2 boilerplate:
    • Title: Bayesian Compartmental Infection Models from Individual Outcomes
    • Description: first-pass wording, see below
    • Authors@R: Claire P. Smith (cre/aut, ORCID from imuGAP record) and Jack Goodall (aut), based on git history.

Open questions for review

  • Title and Description wording — please tune. The wording is a reasonable first pass; happy to rewrite.
  • Authors@R — Claire is set as cre since she's the primary code author per git log. Carl is not currently listed; add if appropriate. Jack Goodall is aut; downgrade to ctb if that's more accurate. Emails are pulled from git log.
  • No Codecov yet — coverage runs and uploads as an artifact, but no Codecov push. Will wire up once CODECOV_TOKEN is set (mirrors imuGAP #46).

What CI will look like on this PR

Expect:

  • R-CMD-check matrix — probably green on linux/mac, may surface DESCRIPTION-related notes or Stan-on-Windows issues we haven't seen before.
  • lintwill fail. That's expected; PR 2 (Linting #8) cleans up.
  • test-coverage — should pass on ubuntu-release.

Opened as draft so we can iterate based on actual CI output.

Closes #9, #10.
Refs #22.

Sets up the GitHub Actions CI baseline for the CRAN push:

- R-CMD-check.yaml: 3-OS x 3-R-version matrix (ubuntu/macos/windows
  release/oldrel/devel) with --as-cran, Stan compile cache, devel jobs
  continue-on-error. Adapted from the imuGAP / imugap-map CI pattern.
- lint.yaml: lintr on every push/PR with LINTR_ERROR_ON_LINT=true.
  Expected to fail on main until the lint cleanup PR lands; surfacing
  the violations is the point.
- test-coverage.yaml: covr::package_coverage on ubuntu-release,
  cobertura.xml uploaded as artifact. (Codecov hookup deferred until a
  CODECOV_TOKEN secret is configured.)
- .Rbuildignore: exclude .github/ from the built package.
- DESCRIPTION: replace roxygen2 boilerplate with real Title,
  Description, and Authors@R (Claire P. Smith as cre/aut, Jack Goodall
  as aut, based on git history). Wording is a starting point — please
  refine on review.

Closes #9, #10.
@WestonVoglesonger WestonVoglesonger added the enhancement New feature or request label May 22, 2026
@WestonVoglesonger WestonVoglesonger self-assigned this May 22, 2026
Weston Voglesonger added 2 commits May 22, 2026 15:19
R-CMD-check on the initial CI run surfaced two issues that block check
across all platforms:

- Tests fail with "there is no package called 'dplyr'" because the
  package uses dplyr/Claddis/posterior/stringr/tidyr via :: but none
  of those are declared in Imports. Add them.
- ERROR: configure exists but is not executable. Set the executable
  bit on configure (the standard rstantools-generated stub that runs
  rstan_config() at install time).

Refs #9, #10.
macOS jobs failed building 'expm' (a transitive dep) from source:
  fatal error: 'libintl.h' file not found

macOS doesn't ship GNU gettext headers; libintl.h has to come from
brew. Add the same brew + ~/.R/Makevars setup imuGAP uses to expose
the gettext include + lib paths to R's source-package compilation.

Refs #9.
@WestonVoglesonger WestonVoglesonger marked this pull request as ready for review May 22, 2026 20:09
@WestonVoglesonger
Copy link
Copy Markdown
Author

@csmith701 — this is the first PR in the CRAN push tracked in #22. Ready for your review.

A few things worth flagging:

DESCRIPTION is a starting point, not a final draft:

  • Title: Bayesian Compartmental Infection Models from Individual Outcomes — I tried to capture what the package does from reading the vignettes and exported functions, but you should rewrite this if it's off.
  • Description: same — a first-pass paragraph.
  • Authors@R: you're listed as cre/aut with the clairesmith6995@gmail.com email from git log and your ORCID from imuGAP's DESCRIPTION (0000-0003-1069-9460). Jack Goodall is aut with the email from his commits. Flip / remove / re-role as you see fit. Carl isn't currently listed — add him if appropriate.

Two CI failures are intentional, please don't be alarmed:

  • lint (40 warnings) — by design. The lint workflow is LINTR_ERROR_ON_LINT: true, so any warning fails the job. PR Package #2 in the plan (closes Linting #8) is the cleanup pass; this PR's job is just to wire up the infrastructure. The check-result aggregator (which actually gates the matrix) is green.
  • macos-latest (devel) — Bioconductor 3.24's macOS binary index 404s for R 4.7 right now (R-devel is fresh; Bioconductor's binaries lag). continue-on-error makes this not block. Will clear once their binaries catch up.

Two real bugs this PR surfaced and fixed:

  • dplyr, Claddis, posterior, stringr, tidyr were all used via :: in R/hestia_functions.R but not declared in Imports. Tests failed across all platforms with "no package called 'dplyr'". Added all five.
  • configure was committed without the executable bit, so R CMD INSTALL rejected the package on Unix. chmod +x.

What's next (per #22):

No rush — flag anything that needs changing.

Copy link
Copy Markdown
Member

@pearsonca pearsonca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claire will need to fix the package title, otherwise looks good for basic sketch out.

we should have a look at trimming down dependency list

Comment thread DESCRIPTION
@@ -1,24 +1,37 @@
Package: hestia
Title: What the Package Does (One Line, Title Case)
Title: Bayesian Compartmental Infection Models from Individual Outcomes
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@csmith701 Household ESTimation for Infection Analysis? I forget precisely what hestia stands for, but roughly that.

@WestonVoglesonger
Copy link
Copy Markdown
Author

@csmith701 friendly ping, this one's just waiting on you. Per @pearsonca's review the only blocker is the package title in DESCRIPTION; the rest got a soft LGTM. If you can set a final Title: (and adjust Authors@R / Description while you're in there), this is ready to merge and unblocks the rest of the #22 CRAN sequence.

Separately, I split Carl's dependency-trimming note into #33 so it doesn't hold up this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add R CI/CD github workflow automations

2 participants