我正在使用github托管我的博客并使用静态网站Generator HUGO使其成为可能,但是使其脱机并编译它太繁琐,然后将公共文件夹上传到gh-pages或使其在docs文件夹中可用。
所以我想自动化这个过程,所以每当我在内容中创建一个新的.md文件时,它应该生成静态站点并将公共文件夹复制到gh-pages或以下组合 -
注意:我主要想使用Travis-ci,但任何其他自动化平台也会很酷
答案 0 :(得分:0)
为GitHub Pages建立Hugo博客的一种好方法是使用两个单独的存储库:
命名第二个存储库username.github.io
(使用您的GitHub用户名)。 GitHub Pages将自动将其部署到https://username.github.io/。
然后将第二个存储库作为git子模块添加到第一个存储库。子模块必须位于./public
,Hugo会在该位置生成静态内容。这使您可以轻松地将生成的内容推送到GitHub。
git submodule add \
https://github.com/username/username.github.io.git \
public
此过程在Hugo官方教程Hosting on GitHub中有更详细的说明。
如果要完全自动化,可以为第一个存储库设置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
deploy.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 "username@users.noreply.github.com"
git config user.name "username"
fi
git add .
git commit -m "Rebuild site"
git push --force origin HEAD:master
最后,在Travis CI上设置环境变量GITHUB_AUTH_SECRET
,以提供对username.github.io
存储库的访问。博客文章还介绍了如何为此使用单独的漫游器帐户,从而限制了对username.github.io
存储库的CI访问。
答案 1 :(得分:0)
这天(2020年10月),您将不需要使用外部CICD服务(例如Travis-CI)。
如GitHub Action Hero · James Ives and “GitHub Pages Deploy” 中的“ Michelle Mannering”所述,您可以使用GitHub Actions。
具体来说,James Ives的GitHub Pages Deploy Action:
此GitHub Action将自动将您的项目部署到GitHub Pages。
可以对其进行配置,以将生产就绪代码推送到您想要的任何分支中,包括gh-pages
和docs
。
它还可以处理跨存储库的部署。
示例:
name: Build and Deploy
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout ?️
uses: actions/checkout@v2.3.1 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
with:
persist-credentials: false
- name: Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run: |
npm install
npm run build
- name: Deploy ?
uses: JamesIves/github-pages-deploy-action@3.6.2
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages # The branch the action should deploy to.
FOLDER: build # The folder the action should deploy.
CLEAN: true # Automatically remove deleted files from the deploy branch