setup-github-actions-ci
About
This skill sets up GitHub Actions CI/CD for R packages, configuring multi-platform R CMD checks, test coverage reports, and automated pkgdown site deployment. It uses r-lib/actions for standardized workflows and is ideal when establishing CI for new R packages or adding these features to existing ones. Developers should apply it to automate testing across platforms and documentation deployment.
Quick Install
Claude Code
Recommendednpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-github-actions-ciCopy and paste this command in Claude Code to install this skill
Documentation
name: setup-github-actions-ci locale: de source_locale: en source_commit: 6f65f316 translator: claude translation_date: "2026-03-17" description: > GitHub Actions CI/CD fuer R-Pakete konfigurieren einschliesslich R CMD check auf mehreren Plattformen, Testabdeckungsberichten und pkgdown-Site- Bereitstellung. Verwendet r-lib/actions fuer Standardworkflows. Anwenden beim Einrichten von CI/CD fuer ein neues R-Paket, beim Hinzufuegen von Multiplattform-Tests zu einem bestehenden Paket, beim Konfigurieren der automatisierten pkgdown-Site-Bereitstellung oder beim Hinzufuegen von Codeabdeckungsberichten zu einem Repository. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: r-packages complexity: intermediate language: R tags: r, github-actions, ci-cd, testing, automation
GitHub Actions CI fuer R-Pakete einrichten
Automatisierten R CMD check, Testabdeckung und Dokumentationsbereitstellung ueber GitHub Actions konfigurieren.
Wann verwenden
- Einrichten von CI/CD fuer ein neues R-Paket auf GitHub
- Hinzufuegen von Multiplattform-Tests zu einem bestehenden Paket
- Konfigurieren der automatisierten pkgdown-Site-Bereitstellung
- Hinzufuegen von Codeabdeckungsberichten
Eingaben
- Erforderlich: R-Paket mit gueltigem DESCRIPTION und Tests
- Erforderlich: GitHub-Repository (oeffentlich oder privat)
- Optional: Ob pkgdown-Bereitstellung einbezogen werden soll (Standard: nein)
- Optional: Ob Abdeckungsberichte einbezogen werden sollen (Standard: nein)
Vorgehensweise
Schritt 1: R CMD Check Workflow erstellen
.github/workflows/R-CMD-check.yaml erstellen:
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
name: R-CMD-check
permissions: read-all
jobs:
R-CMD-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
fail-fast: false
matrix:
config:
- {os: macos-latest, r: 'release'}
- {os: windows-latest, r: 'release'}
- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'}
- {os: ubuntu-latest, r: 'release'}
- {os: ubuntu-latest, r: 'oldrel-1'}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
R_KEEP_PKG_SOURCE: yes
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-pandoc@v2
- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
http-user-agent: ${{ matrix.config.http-user-agent }}
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck
needs: check
- uses: r-lib/actions/check-r-package@v2
with:
upload-snapshots: true
build_args: 'c("--no-manual", "--compact-vignettes=gs+qpdf")'
Erwartet: Workflow-Datei .github/workflows/R-CMD-check.yaml erstellt mit einer Multiplattform-Matrix (macOS, Windows, Ubuntu) die Release, Devel und Oldrel abdeckt.
Bei Fehler: Wenn das Verzeichnis .github/workflows/ nicht existiert, mit mkdir -p .github/workflows erstellen. YAML-Syntax mit einem YAML-Linter verifizieren.
Schritt 2: Testabdeckungs-Workflow erstellen (optional)
.github/workflows/test-coverage.yaml erstellen:
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
name: test-coverage
permissions: read-all
jobs:
test-coverage:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::covr, any::xml2
needs: coverage
- name: Test coverage
run: |
cov <- covr::package_coverage(
quiet = FALSE,
clean = FALSE,
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package")
)
covr::to_cobertura(cov)
shell: Rscript {0}
- uses: codecov/codecov-action@v4
with:
fail_ci_if_error: ${{ github.event_name != 'pull_request' && true || false }}
file: ./cobertura.xml
plugin: noop
token: ${{ secrets.CODECOV_TOKEN }}
Erwartet: Workflow-Datei .github/workflows/test-coverage.yaml erstellt. Abdeckungsberichte werden bei jedem Push und PR zu Codecov hochgeladen.
Bei Fehler: Wenn der Codecov-Upload fehlschlaegt, verifizieren dass das CODECOV_TOKEN-Secret in den Repository-Einstellungen gesetzt ist. Fuer oeffentliche Repos kann der Token optional sein.
Schritt 3: pkgdown-Bereitstellungs-Workflow erstellen (optional)
.github/workflows/pkgdown.yaml erstellen:
on:
push:
branches: [main, master]
release:
types: [published]
workflow_dispatch:
name: pkgdown
permissions:
contents: write
pages: write
jobs:
pkgdown:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-pandoc@v2
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::pkgdown, local::.
needs: website
- name: Build site
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
shell: Rscript {0}
- name: Deploy to GitHub pages
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4
with:
clean: false
branch: gh-pages
folder: docs
Erwartet: Workflow-Datei .github/workflows/pkgdown.yaml erstellt. Die Site wird bei Push nach main oder Release gebaut und auf den gh-pages-Branch bereitgestellt.
Bei Fehler: Wenn die Bereitstellung fehlschlaegt, sicherstellen dass das Repository contents: write-Berechtigungen aktiviert hat. Verifizieren dass _pkgdown.yml development: mode: release gesetzt hat.
Schritt 4: Statusabzeichen zur README hinzufuegen
Zu README.md hinzufuegen:
[](https://github.com/USERNAME/REPO/actions/workflows/R-CMD-check.yaml)
Erwartet: README zeigt ein Live-CI-Statusabzeichen das nach jedem Workflow-Durchlauf automatisch aktualisiert wird.
Bei Fehler: Wenn das Abzeichen "no status" anzeigt, verifizieren dass der Workflow-Dateiname in der Abzeichen-URL mit der tatsaechlichen Datei uebereinstimmt. Einen Commit pushen um den ersten Workflow-Durchlauf auszuloesen.
Schritt 5: GitHub-Repository-Einstellungen konfigurieren
- GitHub Pages aktivieren (Settings > Pages) mit Verweis auf den
gh-pages-Branch falls pkgdown verwendet wird CODECOV_TOKEN-Secret hinzufuegen falls Abdeckungsberichte verwendet werden- Sicherstellen dass
GITHUB_TOKENausreichende Berechtigungen hat
Erwartet: GitHub Pages ist fuer pkgdown-Bereitstellung konfiguriert. Erforderliche Secrets sind gesetzt. Token-Berechtigungen reichen fuer die Workflows aus.
Bei Fehler: Wenn die Pages-Bereitstellung fehlschlaegt, unter Settings > Pages pruefen ob die Quelle auf den gh-pages-Branch gesetzt ist. Wenn Secrets fehlen, unter Settings > Secrets and variables > Actions hinzufuegen.
Schritt 6: Pushen und verifizieren
git add .github/
git commit -m "GitHub Actions CI Workflows hinzufuegen"
git push
Den Actions-Tab auf GitHub pruefen um zu verifizieren dass die Workflows erfolgreich laufen.
Erwartet: Gruene Haekchen bei allen Jobs im GitHub Actions-Tab. Workflows werden sowohl bei Push- als auch bei PR-Events ausgeloest.
Bei Fehler: Workflow-Logs im Actions-Tab pruefen. Haeufige Probleme: fehlende Systemabhaengigkeiten (zu extra-packages hinzufuegen), Vignetten-Build-Fehler (sicherstellen dass der Pandoc-Setup-Schritt vorhanden ist), YAML-Syntaxfehler.
Validierung
- R CMD check besteht auf allen Matrix-Plattformen
- Abdeckungsbericht wird generiert (falls konfiguriert)
- pkgdown-Site wird bereitgestellt (falls konfiguriert)
- Statusabzeichen wird in README angezeigt
- Workflows werden sowohl bei Push als auch bei PR ausgeloest
Haeufige Stolperfallen
- Fehlende
permissions: GitHub Actions erfordert jetzt explizite Berechtigungen. Mindestenspermissions: read-allhinzufuegen - Systemabhaengigkeiten: Einige R-Pakete brauchen Systembibliotheken.
r-lib/actions/setup-r-dependenciesverwenden, das die meisten Faelle behandelt - Vignetten ohne Pandoc: Immer
r-lib/actions/setup-pandoc@v2einbeziehen - pkgdown-Entwicklungsmodus: Sicherstellen dass
_pkgdown.ymldevelopment: mode: releasefuer GitHub Pages gesetzt hat - Caching-Probleme:
r-lib/actions/setup-r-dependencieshandhabt Caching automatisch
Verwandte Skills
create-r-package-- Anfaengliches Paket-Setup einschliesslich CI-Workflowbuild-pkgdown-site-- Detaillierte pkgdown-Konfigurationsubmit-to-cran-- CI-Checks sollten CRAN-Erwartungen widerspiegelnrelease-package-version-- Bereitstellung bei Release ausloesen
GitHub Repository
Related Skills
evaluating-llms-harness
TestingThis Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.
cloudflare-cron-triggers
TestingThis skill provides comprehensive knowledge for implementing Cloudflare Cron Triggers to schedule Workers using cron expressions. It covers setting up periodic tasks, maintenance jobs, and automated workflows while handling common issues like invalid cron expressions and timezone problems. Developers can use it for configuring scheduled handlers, testing cron triggers, and integrating with Workflows and Green Compute.
webapp-testing
TestingThis Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.
finishing-a-development-branch
TestingThis skill helps developers complete finished work by verifying tests pass and then presenting structured integration options. It guides the workflow for merging, creating PRs, or cleaning up branches after implementation is done. Use it when your code is ready and tested to systematically finalize the development process.
