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

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
Scott Helme
Scott Helme
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
J
Java Code Geeks
U
Unit 42
The GitHub Blog
The GitHub Blog
H
Help Net Security
T
Tenable Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Spread Privacy
Spread Privacy
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
L
Lohrmann on Cybersecurity
T
Threatpost
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
I
InfoQ
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
L
LINUX DO - 最新话题
K
Kaspersky official blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Threat Research - Cisco Blogs
C
Check Point Blog
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
A
Arctic Wolf
Y
Y Combinator Blog
N
News | PayPal Newsroom
M
MIT News - Artificial intelligence
Latest news
Latest news
H
Hacker News: Front Page
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
I
Intezer
爱范儿
爱范儿
F
Fortinet All Blogs
P
Palo Alto Networks Blog
C
CERT Recently Published Vulnerability Notes

Sehnsucht

记一次博客换图床的过程 观《花束般的恋爱》 读《活过》 东京 旅行篇 亲人逝去 我为什么想养鱼 防止AI爬取你的博客 「monthly 」博客重构 游戏全成就 好看的小说 人生的每一步都不会是浪费-2024年终 「weekly」星期五综合征 「weekly」听播客 杂谈 读《美丽新世界》 「weekly」社交媒体 恶性事件 新世界 「weekly」认知觉醒 美丽新世界 follow 「weekly」独立博客9问题 双十一买书 读《惊呆了!原来这就是社会学》 一次聊天与自我建设 2024-09月记 补番《relife》 树状数组简单理解 lvm简单使用 某公众号废案 fail2ban基本使用 Podman 环境使用 Nginx Proxy Manager 最佳实践 2024-07同学聚会 vps使用podman部署freshrss Gitlab CICD 实践,思考与记录 装备升级:新的PC gitlab局域网搭建流程 FastMail迁移至GMail+Cloudflare Email Routing 读《黑客与画家》 leetcode 第 391 场周赛 Astro添加过渡后DarkModeToggle按钮失效 nuxt3使用echarts5渲染中国地图 人生刻度 又到凤凰花朵开放的时候 2023-05-10 实习结束 2023-04-26 广州博物馆游记 YOASOBI「たぶん」官方音乐视频 风灵玉秀-发如雪 带我的老哥离职了 从p10k转向Starship lunarvim国内安装踩坑记录 什么是对称加密非对称加密、密钥交换、数字签名、证书 强调体验的一种思考时间的方式 ArchLinux使用vscode编写latex报错The font "FontAwesome" cannot be found ArchLinux安装(移动硬盘)流程 yay一个或多个文件没有通过有效性检查! 2022年终 hugo建站伊始 clash设置relay前置代理(校园网破解改进记录) 群青 · YOASOBI · Ayase 华为 matepad pro 11使用体验 Nginx使用acme.sh免费安装ssl证书 永远属于你的安娜 在线 童年趣事 童心,是比野心更难得的梦想 2021年终总结 基于jeeSite的软件测试课程作业 流程记录 Linux不同用户安装不同版本jdk Wifi4更换Wifi6路由器的使用体验 Flask 上传图片并灰度显示 玩客云刷机debain个人记录 jython 简单入门 Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务器,freestyle风格 在Web项目中配置Log4j --指南-- Codeforces Round 753 (Div. 3) ABCDE 浅谈fork函数 JavaWeb servlet 使用Cookie记录用户访问次数 Codeforces Round Educational Codeforces Round 114 (Rated for Div. 2) ABC 2021牛客多校7 I xay loves or 2021牛客多校9 H Happy Number 2021牛客多校8 D OR 2021牛客多校5 B Boxes 2021牛客多校5 H Holding Two 2021牛客多校2 D Er Ba Game 2021牛客多校1 F Find 3-friendly Integers 2021牛客多校1 B Ball Dropping 记人生第一次投简历和笔试 原型模式 2021-2-20 雨时随记 关于一维差分数组的例子 halo个人建站 关于手机ping电脑和电脑ping手机 泛型类简单理解 CodeForces - 849C From Y to Y 2020牛客国庆集训派对day3 Leftbest 约瑟夫环问题---2020牛客国庆集训派对day2 AKU NEGARAKU mysql 5.7 忘记密码如何更改 CF 1099B Squares and Segments CF 998A Balloons CF 998B Cutting 链表应用之多项式相加 CF 1150A Stock Arbitraging CF 1199A City Day CF 1199B Water Lily CF 982A Row CF 934A A Compatible Pair CF 629B Far Relative’s Problem 651A Joysticks 651B Beautiful Paintings
博客自动发布方案
2024-08-01 · via Sehnsucht

我想了一套obsidian与博客的同步方案,在obsidian里写文章,提交到github后blog自动更新

前情提要

我的博客一般是先在obsidian里写,位置放在public/blog/中,已经用obsidian的模板插入了frontmatter,然后直接复制到blog中,因为文章需要d2所以需要blog项目在本地生成svg后再上传

一般来说比较繁琐,但是文章其实我之前写的并不多,而较为繁琐的过程反而加深了”仪式感”,对此我并没有异见,反而滋滋有味

但是在写gitlab ci脚本的时候突然想到github action似乎是可以跨仓库访问推送的,那么完全可以用github action自动完成上面的事情

流程

由于我的blog是发布到serverless平台的,d2部分就不放在github action中了

Diagram

blog 仓库配置

我的两个仓库都是私有的

为了让ob仓库访问到blog仓库,需要提前创建用于访问的token

  1. SettingsDeveloper Settings中创建对blog仓库的访问token,并设置对仓库的读写权限
  2. 在ob仓库中,在Settings中,secrets and variables下,设置action的单独的 secrets 变量(就是步骤1中获得的token),命名为BLOG_ACCESS_TOKEN

这样就行了,BLOG_ACCESS_TOKEN在下一步要用到,而token最长时间也就1年,到时候需要更新

github action 配置

在ob仓库中创建.github/workflows/sync-blog.yml,并写入

name: 博客文章同步

on:
  push:
    branches:
      - master # 当本仓库的master分支push的时候触发

jobs:
  build:
    runs-on: ubuntu-latest # 使用ubuntu容器
    
    steps:
      - name: 拉取docs代码
        uses: actions/checkout@v4 # 拉取ob仓库的master分支代码,置于./下
        with:
          ref: master

      - name: 拉取blog代码
        uses: actions/checkout@v4
        with:
          repository: <<you/blog-repo>> # 拉取blog仓库的master分支代码,置于./blog-dir下
          token: ${{ secrets.BLOG_ACCESS_TOKEN }}
          path: blog-dir
          ref: master

      - name: 同步文章
        run: cp -r ./public/blog/* ./blog-dir/src/content/posts/

      - name: 更新到blog仓库 # 如果发现了有更新再提交,没有更新就不提交
        run: |
            cd blog-dir
            if [ -n "$(git status --porcelain)" ]; then
                git config --global user.name "github-actions[bot]"
                git config --global user.email "github-actions[bot]@users.noreply.github.com"
                git add .
                git commit -m "docs: 从docs同步文章"
                git push
            else
                echo "No changes to commit"
            fi
        env:
            GITHUB_TOKEN: ${{ secrets.BLOG_ACCESS_TOKEN }}

需要设置自己的you/blog-repo

这个yml就不再赘述了,不熟悉的可以查阅文档

关于d2

我是将服务部署到了云平台,如果是部署到自己的web服务器那就直接在服务器上安装d2就行了,剩下的就可以用github action自动同步编译后的文件

部署到了云平台的话,由于d2的安装命令只需一行,无需编译安装,故只需要在npm run build之前执行curl -fsSL https://d2lang.com/install.sh | sh -s --就行了。也就是说,构建命令由npm run build变成curl -fsSL https://d2lang.com/install.sh | sh -s -- && npm run build

总结

我其实还想了别的同步方案:

  • 子模块,将博客文章专门放到一个子模块(缺点是麻烦
  • 通过headless cms,blog站点远程获取(对现在的文章结构改变太大,还要改blog代码
  • 写一个插件,当带有”blog”标签的文章都自动发布到网站

在我看来还是直接用github action省心的多