惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
T
Threat Research - Cisco Blogs
C
Cisco Blogs
Recent Announcements
Recent Announcements
S
Securelist
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LINUX DO - 最新话题
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
H
Help Net Security
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Project Zero
Project Zero
I
Intezer
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
T
Tenable Blog
Jina AI
Jina AI
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志

Dr34m's Blog

I Expect You To Die(我希望你死) 1,2,3 完整中文攻略 Linux换国内源 && docker安装 && 换加速镜像 Vue3 + Element-Plus 极简速查 随笔 pyinstaller打包的程序执行报错Failed to extract xxxx decompression resulted in return code -1 taoSync排除项简易教程 apscheduler的cron配置项 如何在绿联NAS中使用TaoSync同步我的文件到各个网盘 GB28181抓包记录 JS计算字节大小,把字节转换为KB/MB/GB/TB等 在Python中使用onvif管理摄像头,包括设备发现,获取RTSP地址,获取设备信息,截图,云台控制与缩放,设置时间 编写bat脚本实现对vue项目构建并压缩 内网穿透工具frp快速使用 CentOS 7.9 安装基础开发环境jdk redis nacos nginx mysql Pyinstaller 逆向 VUE实现复制与粘贴_获取剪切板内容 Electron + xterm.js + node-pty + vue 实现本地终端 child_process exec 中文乱码 Windows&Linux 解决方法 yum 更新 gcc CentOS安装并使用conda 将fluid主题博客的静态资源由第三方改为本地存储 一个上手即用的通用公众号/小程序/h5/app框架 python批量转化doc到docx SpringBoot单元测试注入空指针 TensorFlow 预测出现NaN的一种可能以及解决方法 随笔 python归一化数据 windows下python安装sasl遇到的问题及解决 将对象List中的某个字段放到新的List中[转载] Python http.server 本地服务支持跨域 TensorFlow入门 Flink学习笔记 windows本地配置spark开发环境 dataX使用 Apache Hive 学习笔记 hadoop学习笔记 element-ui 自带事件添加自定义参数 windows 11安装安卓应用程序 centos7安装zookeeper centos7安装jdk8 用idea开发spring项目过程中热重启 docker学习笔记 CentOS7安装k8s集群 通过Github Actions部署静态网站到腾讯云COS,并自动刷新CDN 用Typora编写Hexo博客时图片的处理 常用的Linux进程基本命令 python实现微信jsapi签名 VsCode开发Python常用配置 mysql获取当期日期是该年第几周 LocalDate获取当前周周一日期 删除node_modules重新安装 基于firewalld端口转发 pip 安装 tensorflow MemoryError Java过滤html标签 mysql清空表,并让自增从0开始 JavaScript获取当前周或下n周的周n的日期 java复制不同实体类中相同的字段 前端下载二进制文件 mysql获取最近一段时间数据 python - pip换源 svn提交后jenkins自动部署 常见nginx反向代理配置 h5实现一种自动滚动的告警列表 nginx代理网站子目录到本地目录 centos下hexo + svn + jenkins实现博客自动部署 centos中jenkins配置环境变量 centos安装jenkins centos安装svn服务器 Ubuntu 20.04 换国内源 Vs Code编写md文件实现实时预览 Python自动处理依赖 海滨校园助手api使用文档 hexo-yilia主题相册 Java实现文件重命名,Java文件追加写入,java读取图片尺寸 Hexo安装配置并托管至github 新起点,新征程 在ubuntu安装jdk并配置环境变量 一个不到300行的C语言消灭敌机游戏 搭建L(Linux)+A(Apache)+M(MySQL)+P(PHP)网站环境,并安装Discuz 搭建L(Linux)+N(Nginx)+M(MySQL)+P(PHP)网站环境,并安装Wordpress NSA工具包验证之RDP漏洞利用 NSA工具包验证之IIS6.0漏洞利用 NSA工具包验证之SMB漏洞利用 SEO Ultimate 7.6.5.9汉化版(中文版)免费下载 在腾讯云服务器搭建FBCTF平台 FBCTF汉化简体中文免费下载,FBCTF更新缓存代码 wordpress发送邮件设置以及常见问题解决 短网址 一个小白的自学建站史(菜鸟建站入门) 危山 水调歌头 水调歌头
Hexo + Github Actions 提交代码自动部署 云服务器 腾讯云COS github-pages
Dr3@m · 2021-07-23 · via Dr34m's Blog

最终成果

编写文章后只需提交代码,之后自动构建hexo生成public文件夹,并自动将其发布到你需要的平台,还可以自动生成release用于存档,方便随时回滚到过去任意一版博客。

本文要求已经对Hexo有一点了解,并且知道怎么把hexo源码放到github,如果您刚接触Hexo,可以参考Hexo安装配置并托管至github

如果不想依赖github,可以参考这套自建方案centos下hexo + svn + jenkins实现博客自动部署svn提交后jenkins自动部署

实现过程

一、新建仓库存放Hexo源码

如果有了就不用新建,这里存放的是hexo源码,可以公开也可以私有,具体方法不赘述。

二、创建Github Actions实现自动构建Hexo得到public

  • 进入仓库Actions-new workflow

  • set up a workflow yourself

  • 编辑如下后提交保存,其中Node版本可以自己修改
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
name: Hexo博客持续集成

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: 检出仓库代码
uses: actions/checkout@master

- name: 安装Node.js 11.x
uses: actions/setup-node@master
with:
node-version: "11.x"

- name: 安装Hexo依赖
run: |
npm install hexo-cli -g
npm install

- name: 构建Hexo
run: |
hexo clean
hexo generate

三、发布到你想要发布的地方(以下几种方式选一即可,也可多选)

3.1 发布到云服务器(以下几种方式选一即可)

3.1.1 通过FTP方式(很慢,不推荐)

进入仓库-Settings-Secrets-New secret,分别新建三条名为FTP_SERVERFTP_USERNAMEFTP_PASSWORD,值为FTP地址、FTP账号和FTP密码的secret,如需更多配置例如端口号等可以参考FTP-Deploy-Action

存储在Secrets里的内容是很安全的,只有仓库所有者和协作者有权使用,但也仅限于使用,没有人可以查看其内容。

将以下文件追加到仓库\.github\workflows\main.yml文件下后提交,注意缩进,- name要和上边的- name对齐。

1
2
3
4
5
6
7
- name: 部署Hexo到云服务器
uses: SamKirkland/FTP-Deploy-Action@4.1.0
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./public/

这个脚本在删除操作会报550错误,项目Issues也提到了这个问题,目前没有解决。可以通过在with里配置dangerous-clean-slatetrue绕过这个问题,但是这会删除FTP所有文件后提交,会很慢。提交后就会自动部署,去服务器查看效果吧。

3.1.2 通过SSH方式

进入仓库-Settings-Secrets-New secret,分别新建三条名为SERVER_SSH_KEYSERVER_HOSTSERVER_USER,值为SSH私钥、SSH地址和SSH用户名的secret,如需更多配置例如端口号等可以参考ssh-deploy

存储在Secrets里的内容是很安全的,只有仓库所有者和协作者有权使用,但也仅限于使用,没有人可以查看其内容。

将以下文件追加到仓库\.github\workflows\main.yml文件下后提交,注意缩进,- name要和上边的- name对齐。

1
2
3
4
5
6
7
8
9
- name: 部署到云服务器
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-avzr --delete"
SOURCE: "./public/"
REMOTE_HOST: ${{ secrets.SERVER_HOST }}
REMOTE_USER: ${{ secrets.SERVER_USER }}
TARGET: "/www/wwwroot/dr34m.cn/"

这个方式比FTP快非常多,通常数秒即可完成,FTP方式要数分钟。提交后就会自动部署,去服务器查看效果吧。

3.2 发布到腾讯云COS

进入仓库-Settings-Secrets-New secret,分别新建两条名为TCLOUD_API_IDTCLOUD_API_KEY,值为腾讯云API秘钥SecretIdSecretKey的secret。

存储在Secrets里的内容是很安全的,只有仓库所有者和协作者有权使用,但也仅限于使用,没有人可以查看其内容。

将以下文件追加到仓库\.github\workflows\main.yml文件下,将其中的blog-1252906577ap-shanghai改为你自己的存储桶名称和地域,https://dr34m.cn/改为自己的域名后提交,注意缩进,- name要和上边的- name对齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- name: 安装腾讯云依赖
run: |
sudo pip install coscmd
sudo pip install tccli

- name: 配置腾讯云依赖
env:
SECRET_ID: ${{ secrets.TCLOUD_API_ID }}
SECRET_KEY: ${{ secrets.TCLOUD_API_KEY }}
BUCKET: blog-1252906577 #改为自己的存储桶名称
REGION: ap-shanghai #改为自己的地域
run: |
coscmd config -a $SECRET_ID -s $SECRET_KEY -b $BUCKET -r $REGION
tccli configure set secretId $SECRET_ID
tccli configure set secretKey $SECRET_KEY
tccli configure set region $REGION

- name: 上传到腾讯云COS并刷新CDN
run: |
coscmd upload -rfs --delete ./public/ /
tccli cdn PurgePathCache --cli-unfold-argument --Paths https://dr34m.cn/ --FlushType flush

如果不需要刷新CDN则可以简化如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- name: 安装腾讯云依赖
run: |
sudo pip install coscmd

- name: 配置腾讯云依赖
env:
SECRET_ID: ${{ secrets.TCLOUD_API_ID }}
SECRET_KEY: ${{ secrets.TCLOUD_API_KEY }}
BUCKET: blog-1252906577 #改为自己的存储桶名称
REGION: ap-shanghai #改为自己的地域
run: |
coscmd config -a $SECRET_ID -s $SECRET_KEY -b $BUCKET -r $REGION

- name: 上传到腾讯云COS并刷新CDN
run: |
coscmd upload -rfs --delete ./public/ /

更详细的教程,包括腾讯云相关配置可以参考通过Github Actions部署静态网站到腾讯云COS,并自动刷新CDN。提交后就会自动部署,去COS查看效果吧。

3.3 发布到 github-pages

这一步的前提是你的hexo之前已经托管到github-pages,_config.yml文件中已经有类似下边的代码

1
2
3
4
deploy:
type: git
repo: git@github.com:dr34m-cn/dr34m-cn.github.io.git
branch: master

如果没有,可以参考Hexo安装配置并托管至github

进入仓库-Settings-Secrets-New secret,新建一条名为HEXO_DEPLOY_PRIVATE_KEY,值为Github私钥的secret。

存储在Secrets里的内容是很安全的,只有仓库所有者和协作者有权使用,但也仅限于使用,没有人可以查看其内容。

将以下文件追加到仓库\.github\workflows\main.yml文件下,将其中的名称邮箱改为你自己的后提交,注意缩进,- name要和上边的- name对齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- name: 配置Github部署私钥
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts

- name: 配置Git信息
run: |
git config --global user.name '名称'
git config --global user.email '邮箱'

- name: 部署Hexo到Github
run: hexo deploy

提交后就会自动部署,去github-pages查看效果吧。

四、存档

将以下文件追加到仓库\.github\workflows\main.yml文件下,然后提交,注意缩进,- name要和上边的- name对齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- name: 打包压缩
run: tar -zcvf release.tgz public

- name: 发布 Release
id: create_release
uses: actions/create-release@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} #这个令牌是Actions提供的,你不需要创建自己的令牌
with:
tag_name: ${{ github.run_id }}
release_name: Release ${{ github.run_id }}
draft: false
prerelease: false

- name: 上传构建结果到 Release
id: upload-release-asset
uses: actions/upload-release-asset@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release.tgz
asset_name: release.tgz
asset_content_type: application/x-tgz

完成后可看到存档如下

结尾

也可以参考我的项目中的配置,我的项目优先完成腾讯云COS部署,然后是托管到github,发布 Release。

参考文章:利用GitHub+Actions自动部署Hexo博客GitHub Actions 自动发布Hexo 并通过 FTP上传 到阿里云ECSgithubActions部署文件到服务器