Есть ли способ воспроизвести поведение 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, чтобы он запускался каждый день.
Для этого я могу настроить следующее. Я скопировал это из этого вопроса
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: здесь