GitHub Pages 想必搭建个人博客的都不会陌生。这是一种十分友好的博客搭建方式,由全球最大的同性交友平台为您的博客保驾护航,还提供 github.io 的域名让你可以在任何地方直接访问。
前言 本站同样是使用 GitHub Pages 搭建,使用自定义域名映射到了自有域名上,使用时间已经超过三年,得力于这个全球性的平台,博客一直也是屹立不倒,就是压根没什么人看而已,包括我自己。
分支部署阶段 在上一个阶段,网站使用的是 GitHub Pages 提供的分支部署方式。
简单地说,只要你将整个静态网站推送到某个分支,然后在项目设置中设置要部署的分支即可。
当然,由于绝大多数人都是使用的博客框架,然后经过各种工具构建成静态网站,所以古老的办法则是在本地进行构建,然后将构建好的静态网站上传至对应分支。
GitHub Actions 为我们提供了自动部署的方式,编写 workflows
工作流配置文件,便可以让 GitHub Actions 自动为你构建静态网站,下面以 Hexo 为例,文件保存在 .github/workflows/pages.yml
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 name: Pages on: push: branches: - dev jobs: pages: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Use Node.js lts uses: actions/setup-node@v3 with: node-version: 'lts' - name: Cache NPM dependencies uses: actions/cache@v3 with: path: node_modules key: ${{ runner.OS }}-npm-cache restore-keys: | ${{ runner.OS }}-npm-cache - name: Install Dependencies run: npm install - name: Build run: npm run build - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public publish_branch: master
这样便可以在推送原始文件到 dev 分支时,自动触发构建操作,并将构件好的静态网站推送至 master 分支,再结合之前提到的分支部署方式,就可以让你的网站发布在 <username>.github.io
。
Actions 部署阶段 虽然当前还是 Beta 测试版本,但我还是想尝尝鲜。
GitHub Actions 部署是将静态网站打包为一个 github-pages 文件,存放在 Actions 的工作区,网站发布时直接从 Actions 获取数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 name: Deploy hexo site to Pages on: push: branches: ["dev" ] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Use Node.js lts uses: actions/setup-node@v3 with: node-version: 'lts/Hydrogen' cache: 'npm' - name: Install Dependencies run: npm install - name: Build run: npm run build - name: Upload artifact uses: actions/upload-pages-artifact@v2 with: path: ./public 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
从使用结果来说,这种方式免去了在分支中管理网站的情况,毕竟静态网站只是源代码的附属产品,没必要维护在版本控制之中,对于一些爱好整洁的朋友还是相当不错的。