Hugo Automation 与 Travis-ci 和 Github 页面

2024-02-19

我正在使用 github 来托管我的博客,并使用静态站点生成器 HUGO 来实现这一点,但使其脱机并编译然后将公共文件夹上传到 gh-pages 或使其在 docs 文件夹中可用太繁琐了。

所以我想自动化这个过程,所以每当我在内容中创建一个新的 .md 文件时,它应该生成静态站点并将公共文件夹复制到 gh-pages 或以下组合 -

  • “源”分支中的源文件和发布到主目录的“公共”内容[用于用户和组织页面]
  • master 中的源文件并将“public”文件夹内容发布到“gh-pages”
  • 您想提出的任何其他方法

Note:我主要想使用 Travis-ci 但任何其他自动化平台也很酷


为 GitHub Pages 设置 Hugo 博客的一种好方法是使用两个单独的存储库:

  • 第一个存储库包含博客源,
  • 第二个存储库包含生成的内容。

命名第二个存储库username.github.io(使用您的 GitHub 用户名)。 GitHub Pages 会自动将其部署到https://用户名.github.io/ https://username.github.io/.

然后将第二个存储库作为 git 子模块添加到第一个存储库。子模块需要位于./public,这是 Hugo 生成静态内容的地方。这使您可以轻松地将生成的内容推送到 GitHub。

git submodule add \
    https://github.com/username/username.github.io.git \
    public

这个过程在 Hugo 官方教程中有更详细的解释在 GitHub 上托管 https://gohugo.io/hosting-and-deployment/hosting-on-github/.


持续集成

如果您想要完全自动化,您可以为第一个存储库设置 Travis CI。我在这里写了一篇关于此设置的详细文章:

使用 Travis CI 在 Github Pages 上托管 Hugo 博客 https://cjolowicz.github.io/posts/hosting-a-hugo-blog-on-github-pages-with-travis-ci/

Travis CI 调用 Hugo 并将生成的内容推送回 GitHub,并由 GitHub Pages 部署。为此,您需要一个.travis.yml文件和一个小的部署脚本:

.travis.yml

---
install:
  - curl -LO https://github.com/gohugoio/hugo/releases/download/v0.55.4/hugo_0.55.4_Linux-64bit.deb
  - sudo dpkg -i hugo_0.55.4_Linux-64bit.deb

script:
  - hugo

deploy:
  - provider: script
    script: ./deploy.sh
    skip_cleanup: true
    on:
      branch: master

部署.sh

#!/bin/bash

echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"

cd public

if [ -n "$GITHUB_AUTH_SECRET" ]
then
    touch ~/.git-credentials
    chmod 0600 ~/.git-credentials
    echo $GITHUB_AUTH_SECRET > ~/.git-credentials

    git config credential.helper store
    git config user.email "[email protected] /cdn-cgi/l/email-protection"
    git config user.name "username"
fi

git add .
git commit -m "Rebuild site"
git push --force origin HEAD:master

最后设置环境变量GITHUB_AUTH_SECRET在 Travis CI 上提供对username.github.io存储库。该博客文章还解释了如何为此使用单独的机器人帐户,限制 CI 访问username.github.io存储库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hugo Automation 与 Travis-ci 和 Github 页面 的相关文章

随机推荐

  • 在android中获取网关ip地址

    如何获取网关 IP 详细信息 可以选择使用 wifimanager 但是 如果没有 wify 当使用 USB 网络共享连接时 如何在 Android 设备中查找网关 DNS 和其他详细信息 我在android 2 3 4上使用cyanoge
  • 在我的项目中实施 ACTION_OPEN_DOCUMENT 时遇到问题

    我有 AddActivity 它可以让您从相机拍摄的图片或从图库中选择的图像中获取 URI 然后就可以去DetailsActivity查看图片了 我现在可以正常工作 直到您重新启动设备为止 重新启动并尝试转到该图像的 DetailsActi
  • R:如何在省略号中使用列表元素(如参数)?

    我不确定我的问题标记是否正确 但我试一试 我想使用一个带有使用省略号的函数的包 func 我所有的课堂论点My Class都在一个列表中 因为我有很多争论 所以我想避免func arg1 arg2 arg3 所以理想情况下我想做func m
  • 如何在Matlab中区分图例和轴?

    下面的堆栈溢出问题 Matlab 如何获取图形句柄中的所有轴句柄 https stackoverflow com questions 3938348 matlab how to obtain all the axes handles in
  • gnuplot:误解数据(直方图)

    我有以下示例数据文件 我想在其中绘制gnuplot作为直方图 1 1 2 2 4 3 我正在使用以下命令来绘制数据 plot sample data with boxes 生成以下图表 然而 图表应该看起来像这样 不应该有任何价值3 Fro
  • 为什么在 CSS 中 * 比属性继承具有更多的特殊性?

    简而言之 我有一个具有这两种样式的页面 color black div error color red 页面结构如下 div class error div class row form div class column Error tex
  • 致命异常:Firebase-Messaging-Intent-Handle -- java.lang.NoClassDefFoundError

    我的项目中没有使用任何 Firebase 或 Youtube 代码 库 然而最近 在 Android 预发布报告中 我看到了以下崩溃 FATAL EXCEPTION Firebase Messaging Intent Handle Proc
  • 使用 CDN 链接和 SCSS 覆盖 bootstrap 4

    我在这里看到的关于使用 SCSS 覆盖 Bootstrap v4 的所有答案都假设 Bootstrap 或 Bootstrap 的 CSS 文件 已下载到站点目录 我通过 CDN 链接将 bootstrap 导入到我的 layout htm
  • 使用包含数字的字符串对数组进行排序[重复]

    这个问题在这里已经有答案了 可能的重复 使用 NSSortDescriptor 对 NSString 值进行排序 就像 NSInteger 一样 https stackoverflow com questions 9674707 sorti
  • 我可以将 2 个cameraUpdates 与一个 animateCamera 一起使用吗?

    我正在尝试放大地图 CameraUpdate cameraUpdate CameraUpdateFactory newLatLngBounds mBounds this getResources getDisplayMetrics widt
  • phpDocumentor - 无法打开输入文件:phpdoc.php

    我正在尝试使用 phpDocumentor 第一次 我不知道我在做什么 实际上 我只想将它与 SublimeText 2 一起使用this https github com benmatselby sublime phpdocumentor
  • 更改枢轴控件中标题和标题的背景

    在我的 Phone 7 应用程序中 我使用了枢轴控件 现在我想更改其标题和标题区域的背景 我怎样才能实现这个目标 是否有可定制的枢轴控件的整体模板 我已经尝试将包含枢轴控件的网格的背景设置为标题颜色 然后将每个枢轴项的背景设置为原始背景颜色
  • 如何在 Google Cloud Platform 中为 Node 应用程序安装 Python3

    我正在为我的 Nodejs 应用程序使用谷歌云平台 问题 部署应用程序后 我可以访问 python2 7 但不能访问版本 3 usr bin 文件夹中似乎缺少此版本 const spawn require child process spa
  • 如何在 MongoDB 中搜索子数组

    我有这个 MongoDB 集合 id ObjectId 123 from name name from email email protected cdn cgi l email protection to name domains ema
  • 将 LIKE 子句的 SQL 语法缩短为 IN 子句

    在 SQL 中 有没有办法缩短语法 Select from TableName where ColumnName like A or ColumnName like B or ColumnName like C To Select from
  • 如何处理服务延迟的数据?

    在我的角度应用程序中 我需要将数据存储到一个数组中 该数组在初始阶段为空 Example someFunction let array console log step 1 this service getRest url subscrib
  • AVAssetReader 读取音频,然后失败

    我的应用程序读取音频并在生产者 消费者设置中播放它 消费者线程请求新样本渲染到硬件 生产者线程使用 AVAssetReader 将音频数据从磁盘读取到其缓冲区中 生产者线程循环运行 检查是否需要读取更多样本 制作者的缓冲区大小等于 4 秒的
  • 帮助使用比较器比较浮点成员变量

    我可以很好地比较字符串 但想知道如何对浮点数进行排名 getChange 返回一个字符串 我希望能够按降序排序 我怎样才能做到这一点 UPDATE package org stocktwits helper import java util
  • 从 Spring Security 过滤器返回自定义 http 错误消息

    我正在构建一个 REST API 它使用 Spring Security 及其过滤器链 通过 JWT 对用户进行身份验证 现在 如果这样的 JWT 丢失 过期或类似情况 我想向 API 使用者返回格式良好的错误消息 而不是默认的白标错误响应
  • Hugo Automation 与 Travis-ci 和 Github 页面

    我正在使用 github 来托管我的博客 并使用静态站点生成器 HUGO 来实现这一点 但使其脱机并编译然后将公共文件夹上传到 gh pages 或使其在 docs 文件夹中可用太繁琐了 所以我想自动化这个过程 所以每当我在内容中创建一个新