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 页面 的相关文章

  • 将项目从 github 克隆到 RStudio 时出现错误消息“无法获取本地颁发者证书”

    我试图从 RStudio 克隆 github 的存储库 我已将 git 配置为版本控制可执行文件 我收到此错误消息 SSL 证书问题 无法获取本地颁发者证书 我需要做什么 Thanks 使用以下步骤 访问 github 站点 www git
  • Bazel 构建缺少严格的依赖关系

    我正在尝试使用 brazel 构建 Go 应用程序 它是一个现有的私有 GitHub 存储库 位置如下 github xyz com repo name 我正在研究 我的目标是从 main go 文件创建一个二进制文件 该文件的方法依赖于其
  • 说它已提交,但在 GitHub 中它没有显示

    我刚刚在 Ubuntu 机器上安装了 Rails 我设置了 git 并创建了一个 ssh 密钥来链接到我的帐户 我创建了一个要提交的存储库 并创建了一个示例项目来测试 名为first app 当我提交时 它说一切都已提交 但我去了 gith
  • iOS CoreData:“数据模型版本编译器”错误

    我在项目中创建了一个数据模型文件 ChatModel xcdatamodeld 然后我合并了github上的分支 project pbxproj 中存在冲突 我修好了它们 然后错误就发生了 Users mac zhongqing ios Z
  • 执行“挤压和合并”后可能出现问题?

    I used Squash and Merge用于合并dev分支到main因为我不想要来自的一些提交消息dev出现在的分支main但现在我发现main比 dev 提前 1 次提交 并且该图显示 两者之间没有联系dev and main 这是
  • 如何在一台电脑上拥有2个git用户?

    我想练习使用 GitHub 做拉取请求并学习如何观看git 差异不同用户之间 如何在 macOS 的终端上设置另一个用户帐户来执行此操作 如何在用户之间切换 充当第二用户有三个方面 1 GitHub账户 要以其他用户身份使用 GitHub
  • Git推送大文件时远端意外挂断

    当我尝试推送到我的 bitbucket 存储库时 出现以下错误 事实上 在 GitHub 中也是如此 数物体 48 完成 增量压缩最多使用 2 个线程 压缩对象 100 38 38 完成 写入对象 100 48 48 1 95 MiB 38
  • 如何在 JS 文件中使用 Github 机密

    我有一个基本的 git 存储库 其中包含用于构建和部署的 github 操作 主要是 HTML 和 TS 文件 但是我必须在一些需要保密的 API 密钥中使用 所以我想办法为他们使用 GITHUB SECRETS 如何在我的 js 或 TS
  • git 分叉是如何工作的?

    所以我登录了 github 并 fork 了一个项目 每次原始存储库更新时 我的分叉存储库都会更新吗 或者我应该每次都从原始存储库进行分叉 这样我就不会错过对原始存储库所做的任何新更改 分叉是存储库的副本 分叉存储库允许您自由地尝试更改 而
  • 在 Travis-CI 中启动 Vagrant VM

    如何使用 Vagrant 启动 Virtualbox 虚拟机特拉维斯 CI https travis ci org 我知道有时不支持在虚拟机内启动虚拟机 但也有报道成功 https www lewuathe com travisci vag
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 如何使用 GitHub API 一次检索多个用户?

    我能够获取单个用户 或自某个时间戳以来创建的所有用户 或者与 GitHub API 进行某些搜索匹配的位置 https developer github com v3 users get a single user https develo
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 如何签出仅在“git ls-remote”中列出的分支?

    我遇到了无法切换到仅列出的分支的情况git ls remote 这是详细信息 我分叉了一个 github repoA 作为 repoB 创建了自己的分支并将其推送到 ComputerA 中的 repoB 在 ComputerB 中 我将分叉
  • 如何禁用 GitHub 中的拉取请求?

    我试图了解如何禁用 github 中的 拉取请求 问题一 我们正在尝试使用变基工作流程 这意味着如果不是快速推进 那么使用拉取请求可能会有害 一种解决方案 为我想要禁用拉取请求的分支设置分支权限 或者将我添加为任何进入 master 的内容
  • 如何撤消删除 github wiki 页面的操作?

    我删除了 github 存储库 wiki 上的一个页面 单击该文件的链接现在会将我带到一个新的编辑屏幕 我认为这可能是在我的存储库分支中 但是在 chrome 上以隐身模式点击链接会出现错误 表明我无权编辑此文件 大概是因为我正在尝试创建它
  • Github:我的仓库登陆页面上缺少“设置”菜单

    设置 菜单应该是最后一个菜单 位于 图形 菜单之后 没有 设置 菜单会影响我设置 Webhook 的能力 是的 这是我的仓库 我拥有它 landing page of my test repo travis repo 我今天也遇到了同样的问
  • GitHub API 获取用户/组织总数

    Using GitHub API https developer github com v3 如何计算请求时的用户 组织总数 Users https developer github com v3 users and 组织机构 https
  • 如何调试 git Remote set-url 不起作用

    我无法更改 git 远程 urlgit to https 如下图所示 git remote set url不工作 git remote v 来源 git github com userName repoName git 获取 原点 git
  • 如何手动添加Android Studio依赖

    我多次尝试向我的项目添加依赖项 但每次都会出现错误 我想添加它们的依赖项是 de hdodenhof circleimageview 1 3 0 and com github bumptech glide glide 3 6 1 所以我想下

随机推荐

  • 在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 文件夹中可用太繁琐了 所以我想自动化这个过程 所以每当我在内容中创建一个新