gpt4 book ai didi

r - 将 blogdown 与 github 操作一起使用 - serve_site 的替代方案

转载 作者:行者123 更新时间:2023-12-05 02:52:05 25 4
gpt4 key购买 nike

有没有办法复制 blogdown::serve_site() 缓存文件的行为(即它只重建新更新或“触摸”的文件)但实际上不会导致本地预览?

我问的原因是我想使用 Github Actions 自动执行此过程,但在使用 serve_site 时似乎失败了。

作为引用,我使用 Netlify 来托管和构建网站。我的过程的一般要点是,我运行一个脚本来更新数据文件,然后在使用 serve_site 更新该文件之前“触摸”一个文件。

# touch the blog post that references this file
blogdown:::touch_file("path_to_file.Rmd")

# serve the site which re-renders just the touched post (not all posts)
blogdown::serve_site()

然后我可以提交它,Netlify 将更新站点。这在我的本地机器上运行得非常好,这也是我一段时间以来一直在做的事情。但我正在尝试使用 Github Actions 使其自动化,以便它每天运行。

为此,我可以设置以下内容。我从 this question 复制了这个

name: Get new data and rebuild site

on:
schedule:
- cron: "0 13 * * 1"
push:
branches:
- master

jobs:
scrape-and-commit:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: r-lib/actions/setup-r@master
- uses: r-lib/actions/setup-pandoc@v1
- name: Install packages
run: Rscript -e 'install.packages(c("tidyverse", "here", "blogdown"))'
- name: Install Hugo
run: Rscript -e 'blogdown::install_hugo(extended = TRUE, version = "0.66.0")'
- name: Get data
run: Rscript -e 'source(here::here("scripts", "weekly_data_process.R"), echo = TRUE)'
- name: Build site
run: Rscript -e 'blogdown::serve_site()'

它运行良好,直到它到达“构建站点”部分,在那里它挂起并且我收到以下错误。我假设这是因为该过程从未真正完成,所以只是超时。

Serving the directory /Users/runner/work/plussixoneblog/plussixoneblog at http://127.0.0.1:4321
##[error]The operation was canceled.

我已经尝试使用 blogdown::build_site()blogdown::build_hugo() 但是 build_site 重新呈现每个页面我不想要并且 build_hugo 不会重新呈现触摸的文件!

基本上我需要的是复制 serve_site 的缓存机制,以便它只呈现 RMD 比 HTML 文件更新的文件,而不尝试在本地预览它。

供引用 - 失败的 Github Action 运行是 here

最佳答案

我设法解决了这个问题,所以分享了答案。我所做的两件事似乎对这里有所帮助。

首先 - 使用 blogdown::build_site(local = TRUE)。本地部分是我之前遗漏的部分。

我还需要将操作的 touch_file 部分添加到运行命令中。我不确定这是否真的很重要,但这是最终让整个过程为我工作的步骤,所以我会说是的。

摘录如下。在“安装包”部分,您还需要添加您触摸的文件中使用的包。

jobs:
touch-and-rebuild:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: r-lib/actions/setup-r@master
- uses: r-lib/actions/setup-pandoc@v1
- name: Install packages
run: Rscript -e 'install.packages(c("here", "blogdown"))'
- name: Install Hugo
run: Rscript -e 'blogdown::install_hugo(extended = TRUE, version = "0.66.0")'
- name: Build site
run: |
blogdown:::touch_file(here::here("path", "to", "file.Rmd"))
blogdown:::build_site(TRUE)
shell: Rscript {0}

在此之后,您需要提交一些代码

关于r - 将 blogdown 与 github 操作一起使用 - serve_site 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62825976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com