关于自定义工作流
自定义工作流允许通过使用 GitHub Actions 构建 GitHub Pages 网站。您仍然可以通过工作流文件选择要使用的分支,但您可以使用自定义工作流完成更多操作。要开始使用自定义工作流,您必须首先为当前存储库启用它们。有关更多信息,请参阅“为 GitHub Pages 网站配置发布源”。
配置 configure-pages
操作
GitHub Actions 通过 configure-pages
操作启用 GitHub Pages 的使用,该操作还允许您收集有关网站的不同元数据。有关更多信息,请参阅 configure-pages
操作。
要在所需的 workflow 中使用该操作,请将其代码段放在 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
...
你可以定义你的作业在不同的运行程序上按顺序或并行运行。有关更多信息,请参阅“使用作业”。