利用 github actions 自动发布 github pages

github actions

Posted by alovn on December 10, 2019

之前写博客一直在家用自己的电脑上用jekyll build 后,再push 到github. 现在用公司的电脑,偶尔闲暇时间想记录些东西怎么办? 我需要先安装 ruby, 然后再安装 jekyll,太麻烦了有木有? 最近了解到了github 推出了自己的 CI/CD 功能: github actions. 这次尝试一下用它来自动构建发布github pages。

进入到自己的github 项目,会看到 Actions 标签页,会看到如下界面: github_actions_jekyll.png

github 会根据项目的类型,推荐你使用相应的workflow. 如果是其他语言,比如说Golang, 就会推荐 go 的workflow.

github_actions_go.png

github actions 已经内置了大多数比较流行的的 workflow:

github_actions_popular.png

我使用了推荐的jekyll, 点击【set up this workflow】。

然后编辑保存 /.github/workflows/jekyll.yml, 会在当前仓库的目录下创建相应的文件, 文件名可以随便取:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name: Jekyll site CI

on: 
  push:
    branches: master

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master
    - name: Build the site in the jekyll/builder container
      env:
        JEKYLL_ENV: prod 
      run: |
        docker run \
        -v $:/srv/jekyll -v $/_site:/srv/jekyll/_site \
        jekyll/builder:latest /bin/bash -c "chmod 777 /srv/jekyll && jekyll build --future"

上面这个workflow的整个流程在master分支发生push事件时触发,运行环境是ubuntu。当提交代码后会先执行action/checkout 拉取master代码,然后运行docker, 执行jekyll build。

现在只需要在github 中编辑 markdown, 保存一下就会自动发布blog了, 是不是比之前方便多了。

自从某软收购github之后, github也不停的感冒,之前github上已经有了类似 Travis 等第三方的CI工具, 现在github做了原生支持,也会伤了第三方的CI公司的利益。还是希望github越来越好. 能吸引更多的用户去使用.