LV03-GitHubActions-01-GithubPages的自动发布
我有一个hexo静态站点,托管在Github Pages上,每一次都要手动更新,是不是可以通过Github Actions搞一个自动更新的东西,当我上传自己的笔记的时候,自动更新站点?若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
PC端开发环境 | Windows | Windows11 |
Ubuntu | Ubuntu20.04.2的64位版本 | |
VMware® Workstation 17 Pro | 17.6.0 build-24238078 | |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) | |
Win32DiskImager | Win32DiskImager v1.0 | |
Linux开发板环境 | Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04 | |
linux内核 | linux-4.19.71(NXP官方提供) |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | GitHub Actions 工作流程语法 | GitHub Actions 工作流程语法 - GitHub 文档 - GitHub 文档 |
YAML官网 | 在这里可以找到YAML的基本语法 |
点击查看相关文件下载
分类 | 网址 | 说明 |
--- | --- | --- |
在刚开始使用Hexo
的时候安装的脚本、插件、引用的样式和文章等都比较少,编译部署起来就还好,时间也不长,但是当哪些越来越多的时候,编译时间也越来越久,而且Gitee Pages
在仓库部署完毕后,还需要手动点击更新,才能完成页面的部署,不免就有些麻烦了,本文将介绍Github
自带的自动部署工具Github Actions
来实现静态网站的自动部署。
一、Github Actions
介绍
Github Actions
是GitHub
于 2018 年 10 月推出的一个CI/CD
服务。那什么是CI/CD
呢?CI/CD
其实说的是三件事情:
- 持续集成(Continuous Integration)
- 持续交付(Continuous Delivery)
- 持续部署(Continuous Deployment)
按照自己的理解,就是一个可以在Github
仓库中自动执行一些命令的工具,它的配置文件为yaml
格式。本文不是主要详细介绍它的语法,而是介绍如何使用这个工具来完成自动部署,所以这里就不写更多关于语法的啦(主要原因还是自己也不是特别了解😭),更多详细介绍可以查看官方介绍文档:Github Actions
二、Github Actions
使用
注意:若是直接复制以下代码,还请替换[UserName]
为自己的Github
或者Gitee
名字,另外就是那些环境变量一定要在自己站点源码的Secrets
中配置好。
1. 创建仓库
在一切的一切开始之前肯定是需要一个仓库啦😄,我这里存放源码的是创建的私人仓库,这里就不写如何创建仓库、建立远程连接和上传源码了。
2. 获取Token
Token
就是Personal access tokens
,即私人访问令牌,看自己的源码仓库是放在Github
还是其他平台了,我的是在Github
上,Gitee
作为镜像站,所以我只需要在Github
上进行操作,这里简单记录一下如何在这两个平台获取Token
的方式。
3. 在源码仓库创建环境变量
不想在文件中直接写私人令牌的话,可以在自己存放源码的仓库中添加环境变量:【Settings】→【Secrets】→【New repository secret】,在这里添加完之后,便可以在Github Actions
的配置文件中通过${{ secrets.[Environment secrets name] }}
来引用,更加的安全一些。
4. 创建Github Actions
的配置文件
在站点[blogRoot]
文件夹下也就是根目录下创建.github/workflows
工作流程文件夹,一共创建2个文件夹workflows
为.github
的子文件夹,然后再工作流程文件夹下创建自动部署配置文件autodeploy.yml
,名字任取,是yml
格式文件即可。
5. 添加gulp
压缩功能
本地的时候有gulp
压缩代码功能,自然也是可以实现Github Actions
自动部署的时候进行静态压缩啦,在autodeploy.yml
配置文件的job
中部署Github
之前添加以下内容,若是有报错之类的,可以将安装gulp
相关内容移动到安装依赖
之前。
1 | - name: 安装gulp |
6. 同步自动部署Gitee Pages
有大神编写了插件以便于实现Gitee Pages
的自动部署,相关文章和相关的Github
项目在文章开头已经说过,可以参考,另外仓库的说明文档中也写了具体的使用方法。
6.1 添加私钥和密码
- 第一步:添加个人私钥和Gtiee的登陆密码到站点私有仓库的环境变量中
个人私钥和公钥都在.ssh
文件夹内,私钥为~/.ssh/id_rsa
文件内,使用时将文件内所内容,包括-----BEGIN RSA PRIVATE KEY-----
和-----END RSA PRIVATE KEY-----
在内的全部内容都存放到变量值里。Gitee
密码就是自己的登录密码。
这里的私钥是哪里的私钥?应该是我们在上传源码的时候的设备中SSH相关目录下的私钥,需要注意的是GitHub和Gitee上要有相同的一个SSH公钥,仓库中的私钥要与公钥相配对:
否则就可能出现下边的问题:
6.2 自动部署配置文件
- 第二步:修改自动部署配置文件
在结尾添加以下内容:
1 | - name: 同步到 Gitee |