首页 > 其他分享 >配置Hexo的GitHub Actions自动推送

配置Hexo的GitHub Actions自动推送

时间:2024-04-22 18:23:14浏览次数:23  
标签:文件夹 git Hexo hexo Actions github themes GitHub build

还在用hexo d来推送你的Blog到Github上吗?本文教您如何使用Github Actions自动推送!

生成公私钥对

首先,你需要准备一个ssh的公私钥匙对。你可以使用本地的 ssh-keygen 也可以使用在线网站,例如 https://8gwifi.org/sshfunctions.jsp 这样的公私钥生成器。生成完后,保存下你的公私钥(分别就是 Public keyPrivate key),准备之后的步骤使用

生成 Deploy key

首先,进入你的 Github blog 仓库,也就是 yourname.github.io 然后点击 Settings. 在右边找到 Deploy keys

什么是 Deploy keys
Deploy keys 是为 git ssh 而生的。Deploy keys是一组公钥,只有拥有与这些公钥配对的私钥的人才能操作该仓库。
仓库的Deploy keys,是这个仓库的专有的key,用这个公私钥对,只能操作这个项目,其他项目都没有权限。

image
现在,点击右侧的 Add deploy key。将你生成的公钥粘贴到deploy key里面。勾选 Allow write access 以允许之后github actions push到你的仓库中。这里 title 可以随便填写,方便你自己记忆即可。

新建代码仓库

进入你的 hexo blog 文件夹。现在,你需要在这里建立一个代码仓库,用作之后的数据存放

git init
touch .gitignore
touch build.sh

build.sh 文件的作用是不用修改 .github/workflows 里的内容而修改你的自动化build操作。

gitignore

编辑你的 .gitignore 文件,写入以下内容:

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml
.deploy_git/
data/
themes

这将忽略大部分会有hexo帮你生成的文件夹。

注意,我们这里把 themes 文件夹忽略掉了!因此,你必须在之后的部署中把你的主题下载回来。这里我们以我用的主题 Anatolo 为例子。

首先,把你的主题所改动的文件复制出来,放到asserts文件夹里。例如我改动了 Anatolo 主题里面的 source/images 文件夹,于是我把这整个文件夹复制到了blog的根目录的 asserts/images 文件夹。

修改 build.sh

编辑 build.sh 文件,对于我来说,我需要写入以下内容:

mkdir themes
git clone https://github.com/blinkfox/hexo-theme-matery themes/hexo-theme-matery
cp ./_config.theme.yml ./themes/hexo-theme-matery/_config.yml
#由于我没有改动相关内容,所以将这一行注释掉
#cp -r ./asserts/images/* ./themes/Anatolo/source/images/

npm install hexo-renderer-pug --save
npm install hexo-renderer-stylus --save

npx hexo g

  • mkdir themes 的作用是创建被我们忽略掉的themes文件夹
  • git clone 把这个主题从github上clone到themes中间
  • 后面的两个 cp 是将我们需要对主题进行的改动复制进去
  • 两个 npm install 是需要hexo-theme-matery主题安装后需要进行的操作。(实际上它应该已经保存在了 node modules 里面,可以不写)
  • npx hexo g 将blog生成到 /public 文件夹中

现在,执行 build.sh 应该可以正常生成一个你的blog了。

上传到 github

现在,去github创建一个 Private 仓库。注意,如果你不希望别人只需要简单的 fork 一下就能创造一个和你一模一样的仓库,甚至暴露你的配置文件中可能涉及到的私有信息,那就选择 Private

现在, git remote add origin <你的仓库地址>。将你的hexo 仓库上传上去。

配置 Actions

去你的private仓库里,打开 Settings ,找到左侧的 Actions 里的 General,右边会有 Actions permissions。 把它切换成 Allow all actions and reusable workflows

配置 secret

去你的private仓库里,打开 Settings ,找到左侧的 Secrets and varibles 里的 Actions,点击 New repository secret.这里我们Name填写 DEPLOY_PRI (后面的代码会用到)。Secret就填写你刚刚生成的私钥

创建 Workflow

在你的hexo文件夹里新建 .github\workflows\build.yml, 编辑,写下以下内容:

name: Build

on:
  push:
    branches:
      - main

jobs:
  build_blog:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - run: npm install
      - run: bash build.sh

      - name: Configure Git # 配置Git
        env:
          DEPLOY_PRI: ${{secrets.DEPLOY_PRI}} # 这里就是刚刚配置的私钥了
          GIT_USERNAME: ${{ github.repository_owner }} #Github用户名,这里用了Actions自带的变量,也可以写死。
          GIT_EMAIL: ${{ github.repository_owner }}@user.github.com # 邮箱,可以写自己的邮箱。
        run: |
          sudo timedatectl set-timezone "Asia/Shanghai"
          mkdir -p ~/.ssh/
          echo "$DEPLOY_PRI" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan github.com >> ~/.ssh/known_hosts
          git config --global user.name '$DEPLOY_PRI'
          git config --global user.email '$DEPLOY_PRI'

      - name: Commit Blog # 提交文档到Git仓库
        env:
          GIT_URL: '[email protected]:HE-ZI-YAN/HE-ZI-YAN.github.io.git' # 把它换成项目的地址,注意要用SSH格式的。
        run: |
          cd public
          git init
          git remote add origin $GIT_URL
          git add -A
          git commit -m "Blog auto generated."

      - name: Push blog # 推送
        run: |
          cd public
          git push origin HEAD:master --force

[email protected]换成项目的地址,注意要用SSH格式的。

大功告成了!现在 git add .git commit 然后 git push origin main

你的Github blog应该可以自动推送了。

标签:文件夹,git,Hexo,hexo,Actions,github,themes,GitHub,build
From: https://www.cnblogs.com/java-six/p/18151182

相关文章

  • github的Contributions找不到自己:设置git commit邮箱与用户名
    最近发现公司的开源项目github都找不到我的名字公司前端库TDesign无论是vue还是react,都找不到我:https://github.com/Tencent/tdesign-vue/graphs/contributors部门的前端库vue2vue3版本照样没有自己 https://github.com/TencentBlueKing/bkui-vue3 为什么Github没有记录你......
  • Github进行fork后如何与原仓库同步
    Github进行fork后如何与原仓库同步https://github.com/selfteaching/the-craft-of-selfteaching/issues/671.场景描述太多人同时在帮忙修订错别字或优化xiaolai的the-craft-of-selfteaching了。如果你提交的pullrequest未被接受且得到回复说:“重新fork”,其实是你遇到一......
  • vs code--AI编码助手(GitHub Copilot)安装使用
    GitHubCopilot是现在最流行的编程代码助手,现在介绍一下vscode安装使用过程。vscode选择扩展点击,输入Copilot,显示GitHubCopilot和GitHubCopilotChat。现在是默认一起装,装其中一个另外一个都会自动安装。 安装好需要登录GitHub 点击跳到GitHub网页界面 需要输入Dev......
  • 什么是 GitHub Wiki 以及如何使用它?
    GitHubWiki是你项目文档的一个很好的地方。你可以使用wiki来创建、管理和托管你的存储库的文档,以便其他人可以使用并为你的项目做出贡献。GitHubWiki很容易开始使用,无需安装任何其他软件。最好的部分是wiki与你的GitHub存储库集成在一起。你不需要任何其他工具-你只......
  • Robust mapping of spatiotemporal trajectories and cell–cell interactions in hea
    这篇论文主要介绍了一种名为"Robustmappingofspatiotemporaltrajectoriesandcell-cellinteractionsinhealthyanddiseasedtissues"的新方法,该方法能够在健康和疾病组织中对细胞过程进行可靠的映射,同时研究细胞间的相互作用。在生物组织中,细胞类型、局部组成和状态、分......
  • hexo 折腾小记
    hexo是一套静态网页生成框架类似的还有JekyllGitHub默认推荐的框架/Hugo(......
  • 一周涨 15k Star 的开源项目「GitHub 热点速览」
    https://www.cnblogs.com/xueweihan/p/18137334 你训练大语言模型(LLM)用的什么框架?有没有想过不用框架训练GPT-2?GitHub上就有这么一位大神(AndrejKarpathy),他仅用大约1k行的C代码就完成了GPT-2模型的训练,代码纯手撸、不依赖任何机器学习框架,作者这么做仅仅是觉得很有趣......
  • [POI2007] ATR-Tourist Attractions
    [POI2007]ATR-TouristAttractions题目背景EnglishEdition题目描述给出一张有\(n\)个点\(m\)条边的无向图,每条边有边权。你需要找一条从\(1\)到\(n\)的最短路径,并且这条路径在满足给出的\(g\)个限制的情况下可以在所有编号从\(2\)到\(k+1\)的点上停留过。每......
  • POI2007ATR-Tourist Attractions
    最短路#状压dp#滚动优化#POI#Year2007从前\(k\)个跑\(dijksta\),对这\(k\)个点到达的状态状压会MLE,考虑每次转移都只会增加一个状压下的\(1\),按照\(popcount\)分组做滚动//Author:xiaruizeconstintINF=0x3f3f3f3f;constintMOD=1000000007;constin......
  • Git及Github使用
    使用角度找开源项目的途径•Trending:https://github.com/trending/•HelloGitHub:https://github.com/521xueweihan/HelloGitHub•科技爱好者周刊:https://github.com/ruanyf/weekly特殊的查找资源小技巧-常用前缀后缀•找百科大全awesomexxx•找例子xxxsample•......