Есть ли способ воспроизвести поведение blogdown::serve_site()
, когда он кэширует файлы (т. е. восстанавливает только недавно обновленные или измененные файлы), но без фактического локального предварительного просмотра?
Причина, по которой я спрашиваю, заключается в том, что я хотел бы автоматизировать этот процесс с помощью действий Github, и это, похоже, не работает при использовании 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, чтобы он запускался каждый день.
Для этого я могу настроить следующее. Я скопировал это из этот вопрос
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 находится здесь