构建 github page
使用 github action
例子
name: Deploy GitHub Pages
on:
schedule:
- cron: '0 0 * * *'
# Runs on pushes targeting the default branch
# push:
# branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
# check files changed
changes:
runs-on: ubuntu-latest
outputs:
md: $
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
md:
- '**/*.md'
# Build job
build:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.md == 'true'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Build with Jekyll
uses: adoyle-h/[email protected]
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
# Deployment job
deploy:
environment:
name: github-pages
url: $
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
看这里的 adoyle-h/[email protected]
是我根据 actions/[email protected]
修改的。
改动的原因:因为 actions/jekyll-build-pages 使用的是 github-pages gem 来生成 jekyll page 的。原生的 github page 也是用的这个 gem。但它的缺点是只允许使用这个 gem 里自带的 jekyll 插件,用户无法使用其他插件。
改动的地方:
- 修改 page-gems 源码。发布新的 gem。
- 打 git tag,触发 github action 构建 jekyll-build-pages 镜像。
- 把 action.yml 的镜像改成
当前项目名@tag
。
具体可参考我的 jekyll-build-pages。
构建并发布自己的 jekyll-build-pages 镜像:
- fork 项目,修改代码。
- 打开 github action 页面,允许运行 workflow。并在 github 项目设置 workflow 可写权限。
- 修改代码,打 git tag 并推送到 github。就会自动触发 action,自动构建 docker 镜像,并推送到 github container registry。