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

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

使用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、拉取镜像

shell 复制代码
$ docker pull ghcr.io/l-trump/logseq-publish-spa:latest

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

shell 复制代码
$ 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" 是转换完的单页应用的存储位置

这是我自己测试时的指令

shell 复制代码
$ 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" 文件

yml 复制代码
image:
  name: ghcr.io/l-trump/logseq-publish-spa:latest
  entrypoint: ["/bin/sh", "-c", "ln -snf /bin/bash /bin/sh && /bin/bash -c $0" ]

stages:
  - deploy

pages:
  only:
    - master

  stage: deploy
  environment: live

  variables:
    THEME: light
    ACCENT_COLOR: blue

  script:
    - 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_COLOR

  artifacts:
    paths:
      - public

3、注册项目的gitlab-runner

shell 复制代码
# 执行注册指令
$ 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注册

相关推荐
测试开发技术2 天前
git rm 命令与系统的 rm 命令有什么区别?
git·gitlab·github·面试题
云和数据.ChenGuang3 天前
关闭 GitLab 升级提示的详细方法
运维·自动化·gitlab·es运维
读创商闻3 天前
极狐GitLab CEO 柳钢——极狐 GitLab 打造中国企业专属 AI 编程平台,引领编程新潮流
人工智能·gitlab
小川zs3 天前
gitee某个分支合并到gitlab目标分支
gitee·gitlab
你的人类朋友3 天前
✨【GitLab】【CI/CD】核心概念一览
gitlab·自动化运维·devops
Gold Steps.4 天前
基于 Gitlab、Jenkins与Jenkins分布式、SonarQube 、Nexus 的 CiCd 全流程打造
运维·ci/cd·gitlab·jenkins
咚咚?4 天前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
荔枝吻8 天前
【保姆级喂饭教程】GitLab创建用户规范,分支开发规范,提交日志规范
gitlab·git规范·分支规范
云畅新视界8 天前
从 CODING 停服到极狐 GitLab “接棒”,软件研发工具市场风云再起
人工智能·gitlab