Note: Logseq team has published its official solution. As a result, I will archive mine here. Thanks for your supports thus far!
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.
www
(this is configurable) folder.www
folder with JamesIves/github-pages-deploy-action.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.
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.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.
https://user-images.githubusercontent.com/584378/163351229-ba281c08-c29d-4cf5-8223-337bf80b8726.mp4
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"
"name": "Logseq"
in resources/package.json
to "name": "something-else"
yarn
&& yarn release
static
and run yarn
&& yarn rebuild:better-sqlite3
logseq-publish/public/static
mkdir public
cp -r ../logseq/static ./public/static
(assuming logseq and logseq-publish is at the same folder)pnpm
& Node > 16 installedpnpm i
node publish.mjs
to run the scriptHints:
PWDEBUG=1 node publish.mjs