关于自定义工作流
自定义工作流允许通过使用 GitHub Actions 来构建 GitHub Pages 站点。您仍然可以通过工作流文件选择要使用的分支,但您可以使用自定义工作流做更多的事情。要开始使用自定义工作流,您必须首先为当前仓库启用它们。有关更多信息,请参阅“配置 GitHub Pages 站点的发布源”。
配置configure-pages
操作
GitHub Actions 通过configure-pages
操作启用 GitHub Pages 的使用,该操作还允许您收集有关网站的不同元数据。有关更多信息,请参阅configure-pages
操作。
要使用此操作,请将此代码段放在所需工作流中的jobs
下。
- name: Configure GitHub Pages
uses: actions/configure-pages@v3
此操作有助于支持从任何静态站点生成器到 GitHub Pages 的部署。为了使此过程不那么重复,您可以为一些最广泛使用的静态站点生成器使用工作流模板。有关更多信息,请参阅“使用工作流模板”。
配置upload-pages-artifact
操作
upload-pages-artifact
操作使您可以打包和上传工件。GitHub Pages 工件应该是包含单个tar
文件的压缩gzip
存档。tar
文件的大小必须小于 10GB,并且不应包含任何符号链接或硬链接。有关更多信息,请参阅upload-pages-artifact
操作。
要在当前工作流中使用此操作,请将此代码段放在jobs
下。
- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@v1
部署 GitHub Pages 工件
deploy-pages
操作处理部署工件所需的设置。为了确保正常运行,应满足以下要求
- 作业必须至少具有
pages: write
和id-token: write
权限。 needs
参数必须设置为构建步骤的id
。不设置此参数可能会导致独立部署,该部署会持续搜索尚未创建的工件。- 必须建立一个
environment
来强制执行分支/部署保护规则。默认环境是github-pages
。 - 要将页面的 URL 指定为输出,请使用
url:
字段。
有关更多信息,请参阅deploy-pages
操作。
# ...
jobs:
deploy:
permissions:
contents: read
pages: write
id-token: write
runs-on: ubuntu-latest
needs: jekyll-build
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
steps:
- name: Deploy artifact
id: deployment
uses: actions/deploy-pages@v1
# ...
链接单独的构建和部署作业
您可以在单个工作流文件中链接您的build
和deploy
作业,从而无需创建两个单独的文件即可获得相同的结果。要在工作流文件中开始操作,您可以在jobs
下定义一个build
和deploy
作业来执行您的作业。
# ...
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
# Deployment job
deploy:
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
# ...
在某些情况下,您可能选择将所有内容组合到一个作业中,尤其是在不需要构建过程的情况下。因此,您将只关注部署步骤。
# ...
jobs:
# Single deploy job no building
deploy:
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload Artifact
uses: actions/upload-pages-artifact@v2
with:
# upload entire directory
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
# ...
您可以定义您的作业以在不同的运行器上顺序或并行运行。有关更多信息,请参阅“选择工作流的功能”。