当前位置: 首页 > news >正文

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用

  • 使用gitlab的CI/CD实现logseq笔记自动发布为单页应用
    • 如何实现将logseq的笔记发布成网站
    • 使用 logseq-publish-docker 实现手动发布
    • 使用gitlab的CI/CD实现自动发布
    • 过程中的问题及解决
    • 参考资料

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用

如何实现将logseq的笔记发布成网站

Logseq 是一个侧重于隐私的知识管理和协作的平台。可以实现笔记的完全本地化存储。并且可以基于Git实现多人协作。logseq官网的帮助网站,内容看起来是logseq编写的,并且实现了网站的发布。本文将介绍如何实现logseq笔记的网站发布。
在这里插入图片描述

使用 logseq-publish-docker 实现手动发布

logseq-publish-docker这个docker镜像,可以实现将logseq图谱发布成单页应用Single Page Application (SPA),灵感来自官方解决方案Logseq发布spa。可以在支持docker的服务器上将Logseq图谱发布成单页应用,无需配置开发环境。

1、在转换前要将logseq图谱中的笔记设置为发布状态

在这里插入图片描述

2、拉取镜像

$ docker pull ghcr.io/l-trump/logseq-publish-spa:latest

3、使用镜像将logseq知识图谱转换为单页应用

$ docker run -v ./graph:/graph:ro -v ./out:/out \-e PUB_THEME=light -it ghcr.io/l-trump/logseq-publish-spa:latest
  • “./graph” 是logseq图谱的位置
  • “./out” 是转换完的单页应用的存储位置

这是我自己测试时的指令

$ docker run -v /home/root/logseq-test-graph:/graph:ro -v /home/root/out:/out \ -e PUB_THEME=light -it ghcr.io/l-trump/logseq-publish-spa:latest

在这里插入图片描述

4、使用nginx发布,“.out” 目录下的文件

使用gitlab的CI/CD实现自动发布

为了保证图谱的隐私性,选择使用本地部署的gitlab来实现logseq图谱的多人协作,同时实现自动的发布。
1、配置logseq图谱的gitlab远程仓库
2、编写自动发布的“.gitlab-ci.yml” 文件

image:name: ghcr.io/l-trump/logseq-publish-spa:latestentrypoint: ["/bin/sh", "-c", "ln -snf /bin/bash /bin/sh && /bin/bash -c $0" ]stages:- deploypages:only:- masterstage: deployenvironment: livevariables:THEME: lightACCENT_COLOR: bluescript:- pwd- mkdir -p public- node /opt/logseq-publish-spa/publish_spa.mjs $CI_PROJECT_DIR/public --static-directory /opt/logseq-static --directory $CI_PROJECT_DIR --theme-mode $THEME --accent-color $ACCENT_COLORartifacts:paths:- public

3、注册项目的gitlab-runner

# 执行注册指令
$ gitlab-runner register
Please enter the gitlab-ci coordinator URL:
# 第一个参数输入 settings -> CI/CD -> Runners settings -> Setup a specific Runner manually 中的 第二个参数
Please enter the gitlab-ci token for this runner:
# 第二个参数输入 settings -> CI/CD -> Runners settings -> Setup a specific Runner manually 中的 第三个参数
Please enter the gitlab-ci description for this runner:
# 第三个参数输入执行器的名称
Please enter the gitlab-ci tags for this runner:
# 第四个参数输入执行器的标签
Whether to run untagged builds [true/false]:
# 第五个参数,是否执行无标签的构建选择 true
Whether to lock Runner to current project[true/false]:
# 第六个参数,是锁定执行器到当前项目选择 true
Please enter the executor:docker,docker-ssh,parallels,shell,viritualbox,docker+machine,kubernetes,ssh,docker-ssh+machine:
# 第七个参数,输入执行器,输入 docker
Please enter the default Docker image
# 第八个参数,输入默认docker镜像,输入ghcr.io/l-trump/logseq-publish-spa:latest

注册成功后,会在 /etc/gitlab-runner/config.toml 文件中会增加一个执行器
在这里插入图片描述

注册成功后,在gitlab中会显示刚注册的执行器
在这里插入图片描述

logseq图谱提交到gitlab中就可以触发自动构建实现logseq图谱的自动发布

过程中的问题及解决

  • 1、由于gitlab服务器在内网,无法拉取 logseq-publish-spa 镜像,即使开通外网访问权限也无法拉取镜像报Error response from daemon: manifest for ghcr.io/l-trump/logseq-publish-spa: 错误。

    在这里插入图片描述

    解决方法:使用Nexus构建本地docker Image 镜像仓库,将“logseq-publish-spa” 镜像下载后推送至本地的Nexus docker Image 镜像仓库中。“.gitlab-ci.yml” 文件中使用本地镜像。

  • 2、在执行自动发布的时报 “sh: 1: set: Illegal option -o pipefail”错误
    在这里插入图片描述

    解决方法:在 “.gitlab-ci.yml”文件中的 entrypoint 中增加 “ln -snf /bin/bash /bin/sh && /bin/bash -c $0” 参数,改为最终的形式, entrypoint: [“/bin/sh”, “-c”, “ln -snf /bin/bash /bin/sh && /bin/bash -c $0” ]

参考资料

官方发布项目
https://github.com/L-Trump/logseq-publish-docker - Docker image of this repository. This repository can be used with GitLab.
logseq-publish-docker
Gitlab-Runner注册

相关文章:

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用 使用gitlab的CI/CD实现logseq笔记自动发布为单页应用如何实现将logseq的笔记发布成网站使用 logseq-publish-docker 实现手动发布使用gitlab的CI/CD实现自动发布过程中的问题及解决参考资料 使用gitlab的CI/CD实现logseq笔记…...

云联壹云 FinOps:赋能某车企公有云成本管理与精细化运营

背景 某车企,世界 500 强企业,使用了大量的公有云资源,分布于多家公有云,月消费在千万级别。 业务线多且分散,相关的云消耗由一个核心团队进行管理,本次案例的内容将围绕这些云成本的管理展开的。 需求 …...

C#静态类与非静态类

1、静态类 静态类有几个重要的特点: 1)无法实例化:由于静态类不能被实例化,因此它不会占用对象内存。 2)静态成员:静态类只能包含静态成员(静态方法、静态属性、静态事件等)。 3&am…...

亚信安全:《2024云安全技术发展白皮书》

标签 云计算 安全威胁 云安全技术 网络攻击 数据保护 一句话总结 《云安全技术发展白皮书》全面分析了云计算安全威胁的演进,探讨了云安全技术的发展历程、当前应用和未来趋势,强调了构建全面云安全防护体系的重要性。 摘要 云安全威胁演进&#xff…...

GuLi商城-商品服务-API-品牌管理-云存储开通与使用

这里学习下阿里云对象存储 地址:对象存储 OSS_云存储服务_企业数据管理_存储-阿里云 登录支付宝账号,找到了我以前开通的阿里云对象存储 熟悉下API 文档中心 简介_对象存储(OSS)-阿里云帮助中心 我们将用这种方式上传阿里云OSS...

git 命令行初始化并上传项目

XXXX 为项目名称 1. 初始化 cd D:\XXXX git init git remote add origin http://账号192.168.1.231:8088/r/XXXX.git 2. 拉取项目,做本地合并 git pull origin master git fetch origin git merge origin/master 3. 添加注释,上传 git add . git c…...

Spring框架Mvc(2)

1.传递数组 代码示例 结果 2.集合参数存储并进行存储类似集合类 代码示例 postman进行测试 ,测试结果 3.用Json来对其进行数据的传递 (1)Json是一个经常使用的用来表示对象的字符串 (2)Json字符串在字符串和对象…...

Python学习笔记29:进阶篇(十八)常见标准库使用之质量控制中的数据清洗

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 质量控制…...

【LLM】一、利用ollama本地部署大模型

目录 前言 一、Ollama 简介 1、什么是Ollama 2、特点: 二、Windows部署 1.下载 2.安装 3.测试安装 4.模型部署: 5.注意 三、 Docker部署 1.docker安装 2.ollama镜像拉取 3.ollama运行容器 4.模型部署: 5.注意: 总结 前言…...

Java毕业设计 基于SSM vue新生报到系统小程序 微信小程序

Java毕业设计 基于SSM vue新生报到系统小程序 微信小程序 SSM 新生报到系统小程序 功能介绍 学生 登录 注册 忘记密码 首页 学校公告 录取信息 录取详情 师资力量 教师详情 收藏 评论 用户信息修改 宿舍安排 签到信息 在线缴费 教室分配 我的收藏管理 我要发贴 我的发贴 管理…...

玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南

上一篇,带大家分享了:如何薅一台腾讯云服务器。 不过,只有一个月免费额度,到期后需要付费使用。 相对而言,海外云厂商更加慷慨一些,比如微软Azure、甲骨文、亚马逊AWS等。 甲骨文2019年9月就推出了永久免…...

Zabbix——宏

目录 宏的类型 常用宏 定义和使用宏 宏的优先级 使用宏的示例 在 Zabbix 中,宏(Macros)是一个非常强大的功能,允许你在监控配置中使用动态变量。宏可以在各种配置项中使用,例如触发器、动作、通知、图形和模板等。…...

Unity 简单载具路线 Waypoint 导航

前言 在游戏开发和导航系统中,"waypoint" 是指路径中的一个特定位置或点。它通常用于定义一个物体或角色在场景中移动的目标位置或路径的一部分。通过一系列的 waypoints,可以指定复杂的移动路径和行为。以下是一些 waypoint 的具体用途&…...

科普文:微服务之服务网格Service Mesh

一、ServiceMesh概念 背景 随着业务的发展,传统单体应用的问题越来越严重: 单体应用代码库庞大,不易于理解和修改持续部署困难,由于单体应用各组件间依赖性强,只要其中任何一个组件发生更改,将重新部署整…...

第四十九章 解决 IRIS 中的 SOAP 问题 - 发送消息时出现问题

文章目录 第四十九章 解决 IRIS 中的 SOAP 问题 - 发送消息时出现问题 第四十九章 解决 IRIS 中的 SOAP 问题 - 发送消息时出现问题 如果在向 IRIS Web 服务或客户端发送或接收 SOAP 消息时遇到问题,请考虑以下常见场景列表: SOAP 消息可能包含极长的字…...

STM32-HAL-FATFS(文件系统)(没做完,stm32f103zet6(有大佬的可以在评论区说一下次板子为什么挂载失败了))

1STM32Cube配置 1-1配置时钟 1-2配置调试端口 1-3配置uart 1-4配置SDIO(注意参数)(其中他的初始化的异常函数给注释,SD卡文件写了) 配置了还要打开中断和DMA可在我的其他文章中看一样的 1-5配置FatFs (只改了图选中…...

线性代数基础概念:矩阵

目录 线性代数基础概念:矩阵 1. 矩阵的定义 2. 矩阵的运算 3. 矩阵的特殊类型 4. 矩阵的秩 5. 矩阵的初等变换 6. 矩阵的特征值与特征向量 7. 矩阵的应用 8. 矩阵总结 总结 线性代数基础概念:矩阵 矩阵是线性代数中的另一个重要概念&#xff0…...

【优化论】约束优化算法

约束优化算法是一类专门处理目标函数在存在约束条件下求解最优解的方法。为了更好地理解约束优化算法,我们需要了解一些核心概念和基本方法。 约束优化的核心概念 可行域(Feasible Region): 比喻:想象你在一个园艺场…...

7寸微型FPV无人机技术详解

对于7寸微型FPV(First Person View,第一人称视角)无人机技术的详解,可以从以下几个方面进行介绍: 一、定义与基本概念 FPV无人机,全称为“第一人称视角无人机”,它利用安装在无人机上的摄像头…...

大数据面试题之Presto[Trino](2)

目录 描述Presto中的Connector是什么? Presto如何实现数据源的插件化? 如何在单机上安装Presto? 描述在集群环境中部署Presto的步骤。 如何为Presto配置JVM参数? 如何优化Presto的配置以提高性能? Presto的日…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...