使用GitHub Actions运行R RMD文件报缺少rmarkdown包错误
报错根因
你碰到的there is no package called ‘rmarkdown’错误,本质是GitHub Actions的ubuntu-latest运行机是全新初始化的空白系统,既没有预装R运行环境,也没有你本地RStudio里提前装好的rmarkdown、knitr等依赖包,直接执行渲染命令必然缺包报错。
除此之外你现有配置还有两个会导致后续流程失败的问题:
- 没给工作流开放仓库写入权限,就算渲染成功也没法把结果push回仓库
- 缺R环境初始化、依赖安装步骤,后续就算装了rmarkdown,RMD文件里引用的其他第三方包也会报同样的缺包错误
修复操作
1. 开启工作流写入权限
进入仓库Settings页面,依次打开Actions > General设置页,拉到Workflow permissions板块,选中Read and write permissions后保存,否则工作流没有提交代码到仓库的权限。
2. 更新工作流配置文件
替换原有data_refresh.yaml的内容,补全R环境搭建、依赖安装步骤:
name: Package Data Refresh on: schedule: - cron: '0 12 * * *' workflow_dispatch: jobs: build: name: refresh the dashboard runs-on: ubuntu-latest steps: - name: checkout_repo uses: actions/checkout@v4 with: ref: 'master' fetch-depth: 0 - name: Setup R runtime uses: r-lib/actions/setup-r@v2 with: r-version: 'release' - name: Install R dependencies run: | install.packages( c("rmarkdown", "knitr"), repos = "https://cran.rstudio.com/" ) shell: Rscript {0} - name: Run render and push script run: bash ./bash/data_refresh.sh
提示:如果你的README.Rmd里用到了其他R包,比如tidyverse、DT这类,直接把包名加到上面c()的向量列表里就行,和你本地R装包的逻辑完全一致。
3. 优化bash脚本(可选,避免无意义报错)
替换原有./bash/data_refresh.sh内容,补全分支指定,把提交用户换成官方actions机器人,不用暴露自己的个人账号信息:
#!/bin/bash echo "Rendering the page..." Rscript -e "rmarkdown::render(input = 'README.Rmd')" if [[ -n "$(git status --porcelain)" ]]; then git config --global user.name 'github-actions[bot]' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' git add . git commit -m "Auto update Report" git push origin master fi
验证方式
把修改后的两个文件提交推送到master分支,进入仓库的Actions页面,手动触发一次工作流,就能正常跑通全流程:定时/手动触发后自动渲染RMD,有内容变更就自动提交回仓库,不用本地手动操作。
内容的提问来源于stack exchange,提问作者MCP_infiltrator
相关产品推荐
相关产品推荐

