前言

本篇介紹如何設定排程發表文章,透過自動化腳本發表文章。

原理

利用頁面 Front matter 的 date 值,把日期設 欲發表日期,透過 crontab 每日執行腳本發表文章。

排程發表的文章請將 draftfalse

Front matter 也可以使用以下參數:

  • draft 草稿
  • publishDate 發佈日期
  • expiryDate 過期日期

Hugo 本機運行指令

參數:-D 草稿(Draft)、-F 未來時間(Future)、-E 已過期(Expired)

  • 僅預覽草稿
hugo server -D
  • 僅預覽未來日期的文章
hugo server -F
  • 預覽草稿和未來日期的文章
hugo server -FD

deploy.sh

建立部屬腳本,依自身環境修改程式碼。

/bin/bash

# 設定環境變數,防止執行腳本無反應
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

cd /home/hugo/blog

# 刪除 index.lock 防止 Git 卡住
rm -f .git/index.lock

today=$(date +"%Y/%m/%d")

# Hugo 生成網站並檢查結果
hugo --cleanDestinationDir
if [ $? -ne 0 ]; then
  echo "Hugo generation failed" >> /home/hugo/deploy.log
  exit 1
fi

git add -A
git commit -m "${today}"
git branch -M main
git remote set-url origin git@github.com:<Git 帳號>/<Repository 名稱>.git
git push

echo "Deploy script finished at $(date)" >> /home/hugo/deploy.log

Crontab 設定

輸入 crontab -e 編輯工作排程,在最底下新增每日固定時間執行 deploy.sh 發布。

0 1 * * * /bin/bash /home/hugo/deploy.sh > /home/hugo/deploy.log 2>&1

參考

Draft, future, and expired content