需求

最近想实现一个自动部署惊天博客的功能,我有一个静态博客项目,是使用hugo进行编译和部署的,之前自己写了一个脚本将变动的博客自动编译部署到github page 上,也不是很麻烦。但是需要在本机执行一次命令,没有完全自动化,以前了解过github action的功能,可以在某个分支提交代码时触发一个任务,很适合我这个场景,今天来尝试一下。

github action 其实就是设置一个触发条件,然后github提供一个运行环境去执行我们实现定义好的程序,每次执行这个任务时,所给的环境都是崭新的,不保存数据。并且任务的执行时长和一天内的任务执行次数是有限制的。不然早就被薅秃了。

我的需求是,当我在博客项目main 分支 推送代码时,触发github action 执行 hugo --minify 将markdown 文件编译成静态的 html 文件,然后推送到我的github page 上,完成部署。锁执行的任务就只有三步——下载代码,编译和部署。

先说编译,这一步是需要用到hugo命令的,github action 给我们提供的环境肯定时没有这个命令的,我们需要下载安装,非常棒的是,github 收录了开发者已经写好的 action ,我们可以直接拿来用就好了,这个仓库中就有 hugo 相关的action—— peaceiris/actions-hugo@v2

同理, 部署步骤也有人提供了对应的action,我们也是直接拿来用就好了。—— peaceiris/actions-gh-pages@v3

编译之前其实还有一步,那就是下载代码,在一个全新的环境中,如果没有代码,难道要编译空气?下载代码肯定离不开 git 工具,难道要我们自己装一个 git ? 这倒不用自己做,也有现成的 action —— actions/checkout@v2

实现

我们的需求和步骤已经梳理完了,下面看怎么操作吧

  1. 在项目根目录下新建 .github/workflows/pages.yml 文件, 其中 yml 文件是可以随意命名的,但路径是固定的。
  2. 编写page.yml
name: dcblog_action # 名字on: # 触发条件push: # 有推送动作时触发branchesjkj:- main # 这里的意思是当 main分支发生push的时候,运行下面的jobsjobs: # 要执行的任务,可以时多个deploy: # 任务名runs-on: ubuntu-18.04 # 在什么环境运行任务steps:- uses: actions/checkout@v2 # 引用actions/checkout这个action,与所在的github仓库同名with:submodules: true # Fetch Hugo themes (true OR recursive) 获取submodule主题fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod- name: Setup Hugo # 步骤名自取uses: peaceiris/actions-hugo@v2 # hugo官方提供的action,用于在任务环境中获取hugowith:hugo-version: 'latest' # 获取最新版本的hugo- name: Buildrun: hugo --minify # 使用hugo构建静态网页- name: Deployuses: peaceiris/actions-gh-pages@v3 # 一个自动发布github pages的actionwith:external_repository: dccmmtop/dccmmtop.github.io # 发布到哪个repopersonal_token: xxxx # 发布到其他repo需要提供上面生成的personal access tokenpublish_dir: ./public # 注意这里指的是要发布哪个文件夹的内容,而不是指发布到目的仓库的什么位置,因为hugo默认生成静态网页到public文件夹,所以这里发布public文件夹里的内容publish_branch: master # 发布到哪个branch

personal_token 可以去你的github setting 中获取,记得保密

验证

下面在main 分支上推送一次代码,可以在github action 标签页下看到action 运行成功的标识,以及日志:

github Action使用相关推荐

  1. 如何使用GitHub Action自动发布JAR到Maven仓库

    之前发布开源项目Payment Spring Boot[1]到 Maven 中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一 ...

  2. GitHub Action + ACK:云原生 DevOps 落地利器

    作者 | 瑶靖 来源 | 阿里巴巴云原生公众号 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试. ...

  3. 使用Github Action发布函数到阿里云serverless平台

    简介: 本文简述了如何通过自定义Github Action自动化部署云函数到阿里云serverless平台中 阿里云提供了函数计算,即serverless支持.同时阿里云还提供了fun cli命令行工 ...

  4. GitHub Action + ACK:云原生 DevOps 落地利

    简介: 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试.部署和运维多个环节.但是依然有 20% ...

  5. 最全总结,GitHub Action自动化部署

    GitHub Action简介 GitHub Actions使你可以直接在你的GitHub库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建.测试.打包.发布.部署等等,也就是说你可以直接进 ...

  6. 什么样的 python 可以可谓专业 PyPI 项目?刚刚学到三个概念:pep8、Sphinx、pytest与GitHub Action的集成

    前言: 最近在读很火的 tianshou (基于 pytorch 提供深度强化学习算法的简易接口),两个清华本科生做的.很规范.很优秀的项目. 做出来的项目,想要让别人使用.维护.建立良性可持续社区, ...

  7. Github Action入门

    github action 概念介绍 能力介绍 支持分支 build, test, package, release, or deploy 支持 end-to-end continuous integ ...

  8. K8S 生态周报| Docker V2 GitHub Action 宣布 GA

    「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息.欢迎订阅知乎专栏「k8s生态」[1]. Docker V2 GitHub Action 已 GA Docker ...

  9. 【github action+python】完成定时任务并推送(学会自制)

    前言 参考图文解释Glados自动签到免费获取天数(github action版) 之前用了一阵sever酱,然后前两天说cookie过期了,后来改了也没用,于是想自己写一份cookie不过期的.我尝 ...

最新文章

  1. Java 18 要来了,你不会还在用Java 8吧?
  2. visual studio的试用版评估期已结束 解决办法
  3. MTK6589下传感器框架结构和代码分析以及传感器的参数指标
  4. application.yml如何显示成小叶子图标
  5. 自增符号++(自减符号--)带来的部分影响
  6. 单例Singleton
  7. Centos下MySql用户管理
  8. 如何输入一个整数逆序输出_如何匹配DSP输入输出信号
  9. 收藏 | 深度学习调参有哪些技巧?
  10. 1.10.返回四舍五入后的值.round()
  11. 机器人分拣技术与产品提供商“三维通”获2000万元Pre-A轮融资...
  12. java merge_java – OptimisticLockException当使用JPA merge()
  13. 使用ByteArray及AMF来提高Data Object的操作效率
  14. Flink DataStream的wordCount、数据源和Sink、Side Outputs、两阶段提交(two-phase commit, 2PC)
  15. Serialize Your Deck with Positron [XML Serialization, XSD, C#]
  16. RedShift护眼软件的配置
  17. WhatsApp营销与引流是怎么进行的?
  18. 爱快iKuai 安装成功后运行提示程序运行中解决办法
  19. excel怎么拆分表格
  20. PS给照片添加镜头梦幻光斑动态图片效果

热门文章

  1. 加速研发自动驾驶卡车,戴姆勒买下Torc Robotics多数股权...
  2. 【记录十七】Sling JCR Resources
  3. arduino 电子时钟
  4. Axios 简单使用指南
  5. 张宇:2020版数学1000题勘误及公告
  6. 我国逸管家中小企业融资难现状及分析(含开题报告、实践报告)(20180404105041)
  7. 华为荣耀4X反复重启且无法进入recovery模式
  8. Debian安装Python简要说明
  9. rsa/ecb/pkcs1padding php,PHPJAVA RSA/ECB/PKCS1Padding 加密解密
  10. 黑马程序员————IO流1(day18)