天涯论坛

 找回密码
 立即注册
搜索
查看: 22|回复: 4

Github Action协同Hexo连续集成博客

[复制链接]

3055

主题

155

回帖

9923万

积分

论坛元老

Rank: 8Rank: 8

积分
99238925
发表于 2024-10-3 05:23:34 | 显示全部楼层 |阅读模式

Github Action协同Hexo连续集成博客

经过Hexo写博客,按照Hexo文档安装hexo并且找一个自己爱好的主题,安排在GitPage上,节省咱们自己的服务器资源

新建Github仓库

新建github仓库,如hexo-blog ,仓库倘若安排gitpage不可选取private。

新建Hexo目录

hexo init hexo-blog

正常配置hexo和hexo主题并起始写作,写作完成后:

倘若你的主题文件夹theme中有.git文件夹,请将其删除后再push代码

git init git add . git commit -m "first commit" git branch -M main git remote add origin git@github.com:xxxx/hexo-blog (xxx是你的github用户名) git push -u origin main

新建Git Page仓库

在Github中新建一个仓库,仓库名为:

<你的Git用户名>.github.io//用户名 如: sawyersven.github.io

至此准备工作完成,hexo-blog仓库存放博客的源码,xxx.github.io仓库存放打包生成的静态资源,下边起始配置CI

配置hexo deploy

添加hexo的git deploy依赖:

npm installhexo-deployer-git   / yarnadd hexo-deployer-git

在hexo-blog根目录的_config.yml文件中找到deploy字段并添加:

type为git(必须是git)

repo是要发布的repo的位置

... deploy:     typegit     repo: git@github.com:<gitusername>/<gitusername>.github.io.git ...

配置Github Action

GithubAction的文档

配置workflows

hexo-blog项目根目录下创建一个.github\workflows结构的目录,而后新建一个yml文件:

mkdir -p .github/workflowscd ./github/workflows  touch main.yml

而后咱们编辑main.yml:

name: Deploy  #随便取 on:   push:       branches:   # 当mainmaster分支被push到远端仓库的时候,触发ci           - main              - master  jobs:   build:     runs-on: ubuntu-latest   # 在ubuntu下执行后续的操作steps:       - name: Checkout Respository master branch#actions/checkout checkout到$GITHUB_WORKSPACE下的repo  默认为当前repo         uses: actions/checkout@master       - name: Setup Node.js 14.x # 安装node14         uses: actions/setup-node@master         with:           node-version14.17.3       - nameCache node modules  # 缓存依赖增多工作流的执行速度         uses: actions/cache@v1         idcache         with:           path: node_modules           key: ${{ runner.os }}-node-${{ hashFiles(**/[package-lock|yarn.lock].json) }}  这儿按照用的包管理工具切换lock文件,hashFile会为匹配的文件计算SHA-256哈希值           restore-keys: |             ${{runner.os}}-node-       - name: Setup Hexo Dependencies # 安装hexo-cli 并且安装依赖         run: |           npm installhexo-cli -g           npminstall       - name: Setup Deploy Private Key  # 给ubuntu环境添加ssh的私钥,先按这儿填,后边单独讲env:           HEXO_DEPLOY_PRIVATE_KEY: ${{secrets.HEXO_DEPLOY_PRI}}         run: |           mkdir -p ~/.ssh/           echo"$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa           chmod 600~/.ssh/id_rsa           ssh-keyscan github.com >> ~/.ssh/know_hosts       -name: Setup Git Infomation   # hexo deploy必须有git user.name和git user.email才可运行run: |           git config--global user.name "sawyersven"           git config --global user.email "kormondor@gmail.com"       - name: Deploy Hexo         run: |           hexo clean           hexo generate           hexo deploy

配置SSH key

由于是,在hexo-blog的仓库中提交代码而后构建到了xxx.github.io的仓库中,因此需要把SSH key配置在执行action的ubuntu环境中

首要在命令行中执行:

设置filename的时候意见设置为github_id_rsa其他名叫作,以便区分

ssh-keygen   # 生成的key默认在~/.ssh/github_id_rsa,windows在C:/User/<username>/.ssh/github_id_rsa

而后将公钥上传到github的ssh key中:点我直达配置页

选取New SSH key

title : 任意填

key: 用记事本或编辑器打开github_id_rsa.pub,将里面的文本粘贴进去.

配置Action Secrets

因为workflow的文件是在代码仓库中,脚本中的内容是对仓库可见的,倘若咱们有些隐私内容直接明文写在文件中,会被泄密因此github供给了Action secrect来帮咱们存放敏锐信息。在Actions中经过${{secrets.}}就可获取

进入blog-hexo的repo中,点击settings而后在侧边栏选取Secrets-Actions

而后选取New repository secret

name中填写HEXO_DEPLOY_PRI

value将github_id_rsa的内容复制后粘贴进去就可

至此github Action的配置就完成为了能够尝试更新hexo-blog的代码并push到github,而后观察Action中job的执行状况.

而后拜访xxx.github.io就可查看效果。

这儿意见将本机正在运用的ssh密钥对上传到github中,尤其是私钥.

这儿配置就完成为了,后文是有些知识点的弥补,可选取阅读

弥补阅读

main.yml中的Setup Deploy Private Key

- name: Setup Deploy rivate Key# 给ubuntu环境添加ssh的私钥,先按这儿填,后边单独讲         env:           HEXO_DEPLOY_PRIVATE_KEY: ${{secrets.HEXO_DEPLOY_PRI}}  # 设置环境变量run: |           mkdir -p ~/.ssh/echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa           chmod 600 ~/.ssh/id_rsa           ssh-keyscan github.com >> ~/.ssh/know_hosts

拆分理解

mkdir -p ~/.ssh/

创建.ssh文件夹

 echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa

读取环境变量$HEXO_DEPLOY_PRIVATE_KEY的值,并将其写入id_rsa中 , 其实这步操作约等于咱们在本地生成ssh key并将公钥上传到github的ssh key中,只是次序对调了罢了

chmod 600 ~/.ssh/id_rsa

设置文件权限为持有者可读写,其他人不可读写执行

ssh-keyscan github.com >> ~/.ssh/know_hosts

收集github.com的公钥并将其写入know_hosts,避免被openSSH警告

将Gitpage解析到自己的域名

在购买域名的服务商中添加新的CNAME解析,解析值填为:xxx.github.io (你的gitpage的拜访位置)

进入gitpage的仓库,并点击settings

image-20220715224453906

在custom domain中填写刚才解析的位置,github会校验域名的解析是不是是gitpage,倘若是就会successful.

这个时候拜访你解析的位置,就能够看到你的Github Page被解析过去了。

CNAME文件

发掘每次提交以后设置的Customer domain会被清除掉

因此运用CNAME文件守护

在hexo-blog的source文件夹下创建一个CNAM的文件,内容如下:

blog.sawyersven.xyz  # 仅有一行代码,便是你要解析的自定义域名

而后每次deploy后就不消手动调节custom domain了





上一篇:学而思app源码研发
下一篇:运用Hugo创立静态博客,并托管在Github Pages上
回复

使用道具 举报

3042

主题

2万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065870
发表于 2024-10-16 01:22:18 | 显示全部楼层
回顾过去一年,是艰难的一年;展望未来,是辉煌的一年。
回复

使用道具 举报

2942

主题

2万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979441
发表于 2024-10-29 18:27:43 | 显示全部楼层
大势所趋,用于讽刺一些制作目的就是为了跟风玩梗,博取眼球的作品。
回复

使用道具 举报

3057

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139068
发表于 2024-11-5 17:29:33 | 显示全部楼层
“沙发”(SF,第一个回帖的人)‌
回复

使用道具 举报

2990

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109218
发表于 2024-11-12 09:36:55 | 显示全部楼层
回顾历史,我们感慨万千;放眼未来,我们信心百倍。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 11:02 , Processed in 0.121503 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.