背景介绍

昨天更新博客时发现travis服务不可用,查看travis网页,发现进度卡在拉取源码的时候,灵光闪现想到了github之前推出的action服务

由于那会比较忙,同时也需要申请才能使用action,现在已经开始正式上线,周末闲来无事,尝试一个新玩具?

官方资料大家自行进入网站查阅即可,本文就不做更多的转载了,如果之前用过kubernetes会觉得,action的yaml文件配置和kubernetes很像。

关于的入门的教程,或者说是中文的介绍资料,推荐搜索阮一峰的博客,有两篇文章,第一篇是基础的语法介绍,第二篇是一个实际的案例。

正文

需要的知识点

  • github secrets
  • action 语法

核心的job使用现有的组件完成,推送到国内gitee使用command实现,command这部分比较粗暴,都是强制推送,沿用了使用travis的逻辑。

name: github pages and gitee pages

on:
  push:
    branches:
      - hugo

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          extended: true

      - name: Build Github and Gitee ## 单个step只能写一个run命令
        run: hugo -b "https://www.xiangtianlong.com/" -d "github_public" && hugo -b "https://www.xiangtianlong.com/" -d "gitee_public" && ls

      - name: Deploy Github
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.BLOG_TOKEN }}
          publish_dir: ./github_public
          publish_branch: master
          cname: xiangtianlong.com

      - name: Deploy Gitee
        run: cd ./gitee_public && git init && git config user.name "TianlongXiang" && git config user.email "tianlongxiang51@gmail.com" && git add . && git commit -m "Update TianlongXiang's Blog" && git push --force "https://xiangtianlong:${{ secrets.GITEE_PASSWORD }}@gitee.com/xiangtianlong/xiangtianlong.git" master:master   

后记

从官方市场提供的action来看,目前支持的玩法挺多,构建docker镜像以后也能不再依赖dockerhub提供的服务

查阅hugo的issue,发现使用github action自动部署git pages,最终发布的网页需要在master分支,如果是部署在其他分支,在setting界面,github会提示部署的网页存在语法问题

实际上只是由于hugo的源文件放在了master分支,github当作jelly博客的源码进行检测,无法检查无法通过导致的报错

解决方案也简单,hugo源码文件放到其他分支,静态文件发布在master分支