Skip to content
This repository has been archived by the owner on Apr 14, 2023. It is now read-only.

pengx17/logseq-publish

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Note: Logseq team has published its official solution. As a result, I will archive mine here. Thanks for your supports thus far!

Logseq Publish Action

Publish your Logseq graph with a GitHub Action. ✨

This action is the missing piece for achieving a complete CD workflow for your public Logseq graph.

Example Logseq Graphs Published with this Action

Usage

A video to walk through.

Firstly, add this step to your GitHub workflow. You can refer to My Example Graph's workflows/main.yml as an example.

steps:
  - uses: actions/checkout@v2
  - name: Logseq Publish 🚩
    uses: pengx17/logseq-publish@v0.1
    with:
      version: latest
  - name: add a nojekyll file # to make sure asset paths are correctly identified
    run: touch $GITHUB_WORKSPACE/www/.nojekyll
  - name: Deploy 🚀
    uses: JamesIves/github-pages-deploy-action@4
    with:
      branch: gh-pages # The branch the action should deploy to.
      folder: www # The folder the action should deploy.
      clean: true

Whenever you push changes to your GitHub repo, your graph will be published to the gh-pages branch. A few minutes later, your GitHub Pages will get updated.

All options

  • src: Publish graph src directory. Defaults to `` (empty string, root repo directory).
  • dest: Publish destination directory. Defaults to www.
  • trace: Whether to generate and publish trace file for debugging. This trace file will be uploaded as an artifact to the run. Defaults to true.
  • theme: Selected theme. Defaults to light.
  • version: the Logseq App version. Note: only a few of the versions are available and may not work any longer.

How it works

Here is a document about the story behind this action.

TLDR., this action will start Logseq desktop App in a Docker container, automate it by Playwright and finally load & publish the graph.

Since most of the work is done in a prepared Docker container, you can refer to action.yml and adapt it in other places without the need for GitHub actions.

Hint: you can checkout the trace file in the action artifacts and view it in the Playwright trace viewer to see what's going on in the action.

Kapture.2022-04-14.at.16.57.01.mp4

Alternate usage examples

  • One-liner Powershell call with only Docker installed as prerequisite. Below assumes that your folder workfolder has "KnowledgeGraph" for the graph, and "HTMLOutput" for the output. Container will be created and discarded on the fly.
PS C:\> docker run -d -i  `
	     --name LogSeqPublishContainer  `
	     --rm `
	     -v D:\WorfklowScripts\PublishLogseqExport\graph:/home/logseq/graph  `
	     -w /home/logseq  `
	     ghcr.io/pengx17/logseq-base:master  `
	     bash -c "xvfb-run node /home/logseq/graph/publish.mjs -p /home/logseq/graph/KnowledgeGraph -t /home/logseq/graph/build_trace.txt -o /home/logseq/graph/HTMLOutput > /home/logseq/graph/build.log"

Local development

  • clone https://github.com/logseq/logseq.git & https://github.com/pengx17/logseq-publish.git
  • build logseq app
    • cd into logseq src root
    • change "name": "Logseq" in resources/package.json to "name": "something-else"
      • run yarn && yarn release
    • cd into static and run yarn && yarn rebuild:better-sqlite3
  • copy logseq static into logseq-publish/public/static
    • in logseq-publish root, run
      • mkdir public
      • cp -r ../logseq/static ./public/static (assuming logseq and logseq-publish is at the same folder)
  • install logseq-publish deps
    • makes sure you have pnpm & Node > 16 installed
    • run pnpm i
  • now you should be able to use node publish.mjs to run the script

Hints: