Skip to content

第五版博客发布完成

1. 技术选型

  我们知道CI/CD(持续集成/持续部署)是一种软件开发实践,旨在加快开发过程、提高软件质量和简化部署流程。

  本项目之初也想集成某种CI/CD技术来提高开发效率和跨平台性编码,最开始采用了 GitHub Actions ,编写deploy.yaml来构建、打包、部署,代码提交事件触发“工作流”(workflows)。但效率并不高,并且没有集成编写 issues 就自动集成到项目日志板块中。

  第一种方案劝退,于是想到了第二种方案,能否有一个中间件工具,来实现markdown到vitepress平台的持续自动化部署?在逛github中,我发现了一个项目 Elog!!是一种 开放式跨平台博客解决方案

  花里胡哨的,关键是我也不用飞书啊,我就用VSCode来写markdown,typora我感觉也不大方便写笔记(外存储image太拉了)。这让我想起之前公司的同事,使用VSCode的SSH功能远程连接Docker容器进行代码编辑,照样自动化和远程执行,不就是本地维护版本的CI/CD了?(主要是在大四实习的公司,做Java的时候没去在公司wiki里学k8s,倒是学会了一手很棒的git....)

  Elog支持picgo图床,这绝对是最佳的解决方案!但由于我的vitepress定制功能过多,单一的纯markdown是完全不够,于是为了更好的兼容部分Vue代码的编写,StackBlitz出现了。StackBlitz 是一个在线的全栈开发环境,它允许开发者在浏览器中直接编写、测试和分享代码。

在使用过程中你需要下载翻墙工具,来登录github

-> Clash.Verge_1.3.8_x64_portable.zip

订阅链接:

md
https://xipcloud.org/client/subscribe/clash/bfa4f20a9c8247c2aefb29eb55a99546

从而使得在跨开发平台上,可以轻易编写项目。

这里我们不采用picgo,使用更好的picList

-> picList

2. 自动部署及发布

  在准备工作完成之后,编写一个deploy.sh脚本文件来build打包成一个dist文件,用作静态网站发布。

点击展开deploy.sh
sh
#!/usr/bin/env sh

# 忽略错误
set -e

# 打包
pnpm run build

# 切换到 docs/.vitepress.dist目录
cd dist

msg="StackBlitz 自动部署 NetLify"

git init

# git config --global http.postBuffer 524288000
# git commit -m "自动部署vitepress"
# git config --global core.autocrlf false
git remote add origin https://github.com/zhangjunjie-cn/zhangjunjiee.git

# git checkout -b dist
#拉取fetch到最新仓库并merge合并
# git pull origin dist
# git merge origin/dist 
# git checkout dist 
# git branch --set-upstream-to=origin/dist  

git add -A
git commit -m "${msg}"
git push https://github.com/zhangjunjie-cn/zhangjunjiee.git --force master:dist 

# 返回上次所在的目录
cd -

# 删除dist文件夹
rm -rf dist

deploy.sh 的编写问题

因为是web vscode进行代码提交,提交的文件/dist是不需要 git init的,这就导致一个问题,在本地mian分支下需要将/dist提交到GitHub的oringin/dist分支上,默认的push orgin需要本地与远程的分支名相同,如需特别指定可以使用 git branch --set-upstream-to=origin/dist 进行指定,或者 git push origin master:dist,但是在web vscode环境下都error异常:

sh
remote: Enumerating objects: 154, done.
remote: Counting objects: 100% (154/154), done.
remote: Compressing objects: 100% (149/149), done.
remote: Total 154 (delta 0), reused 154 (delta 0), pack-reused 0
Unpacking objects: 100% (153/153), done.
Could not find dist.
To https://github.com/zhangjunjie-cn/zhangjunjiee.git
 ! [rejected]        master -> dist (non-fast-forward)
error: failed to push some refs to 'https://github.com/zhangjunjie-cn/zhangjunjiee.git'

提示找不到dist,我误以为必须要求本地的dist分支才能提交,指定远程的dist是不允许的,于是添加了以下代码:

sh
git pull origin dist
#git merge origin/dist 
git checkout dist

但提交的时候仍报这种异常,显然因为git的推送机制的问题,无法验证本地和云端的代码差异,由于web code没有git init 的缓存机制无法进行校验,于是唯一的解决方案就是跳过git push的校验,添加--force进行强制提交。

sh
git push https://github.com/zhangjunjie-cn/zhangjunjiee.git --force master:dist

  在/zhangjunjiee目录下,执行sh deploy.sh即可。在github项目中就会有一个dist的分支,我们主要使用这个分支进行代码的静态部署。然后在 Netlify 上指定你github上需要部署的分支,他会自动构建并发布。

  在 https://app.netlify.com/teams/lianyingzi1324/sites 上管理自己的项目,真的太棒了🥳🎉🎉。

3. 开发环境工具

九万字
九万字
黄诗扶
九万字
九万字
黄诗扶