Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate API docs on CI #2458

Merged
merged 1 commit into from
Nov 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 194 additions & 0 deletions .github/workflows/gen-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
name: Generate-Docs

on: workflow_dispatch

jobs:
build-python-package:
runs-on: kuzu-self-hosted-linux-building
env:
PLATFORM: manylinux2014_x86_64
steps:
- uses: actions/checkout@v3

- name: Build Python package
working-directory: scripts/pip-package/
run: |
mkdir wheelhouse
/opt/python/cp310-cp310/bin/python package_tar.py kuzu.tar.gz
/opt/python/cp310-cp310/bin/pip wheel kuzu.tar.gz --no-deps -w wheelhouse/
auditwheel repair wheelhouse/kuzu-*.whl -w wheelhouse/

- uses: actions/upload-artifact@v3
with:
name: kuzu-python-package
path: scripts/pip-package/wheelhouse/*.manylinux2014_x86_64.whl

generate-python-docs:
runs-on: ubuntu-latest
needs: build-python-package
container:
image: python:3.10-bullseye
steps:
- uses: actions/checkout@v3

- name: Download Python package
uses: actions/download-artifact@v3
with:
name: kuzu-python-package

- name: Install Python packages
run: |
pip install *.whl
pip install pdoc
pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu
pip install -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html

- name: Generate Python docs
run: |
mkdir docs
pdoc --docformat "numpy" -o docs kuzu

- name: Upload Python docs
uses: actions/upload-artifact@v3
with:
name: kuzu-python-docs
path: ./docs

generate-nodejs-docs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install Node.js packages
run: |
npm install -g jsdoc

- name: Generate Node.js docs
shell: bash
run: |
jsdoc ./tools/nodejs_api/src_js/*.js ./tools/nodejs_api/README.md --destination ./docs

- name: Upload Node.js docs
uses: actions/upload-artifact@v3
with:
name: kuzu-nodejs-docs
path: ./docs

generate-java-docs:
runs-on: ubuntu-latest
container:
image: openjdk:20
steps:
- uses: actions/checkout@v3

- name: Generate Java docs
shell: bash
run: |
mkdir docs
cd docs && javadoc ../tools/java_api/src/main/java/com/kuzudb/*.java

- name: Upload Java docs
uses: actions/upload-artifact@v3
with:
name: kuzu-java-docs
path: ./docs

generate-cpp-docs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3

- name: Install Doxygen
run: brew install doxygen

- name: Install NetworkX
run: pip3 install networkx

- name: Generate C and C++ docs
shell: bash
working-directory: scripts/generate-cpp-docs/
run: |
chmod +x doxygen.sh
./doxygen.sh

- name: Upload C++ docs
uses: actions/upload-artifact@v3
with:
name: kuzu-cpp-docs
path: ./scripts/generate-cpp-docs/cpp/docs/html

- name: Upload C docs
uses: actions/upload-artifact@v3
with:
name: kuzu-c-docs
path: ./scripts/generate-cpp-docs/c/docs/html

update-docs:
runs-on: ubuntu-latest
needs: [generate-python-docs, generate-nodejs-docs, generate-java-docs, generate-cpp-docs]
steps:
- uses: actions/checkout@v3
with:
repository: kuzudb/kuzudb.github.io
token: ${{ secrets.DOC_PUSH_TOKEN }}
path: kuzudb.github.io

- name: Remove old documentations
run: rm -rf kuzudb.github.io/api-docs

- name: Download Python docs
uses: actions/download-artifact@v3
with:
name: kuzu-python-docs
path: kuzudb.github.io/api-docs/python

- name: Download Node.js docs
uses: actions/download-artifact@v3
with:
name: kuzu-nodejs-docs
path: kuzudb.github.io/api-docs/nodejs

- name: Download Java docs
uses: actions/download-artifact@v3
with:
name: kuzu-java-docs
path: kuzudb.github.io/api-docs/java

- name: Download C++ docs
uses: actions/download-artifact@v3
with:
name: kuzu-cpp-docs
path: kuzudb.github.io/api-docs/cpp

- name: Download C docs
uses: actions/download-artifact@v3
with:
name: kuzu-c-docs
path: kuzudb.github.io/api-docs/c

- name: Push changes
working-directory: kuzudb.github.io
run: |
git checkout -b "api-documentation-update-${{ github.sha }}"
git config --global user.name "CI User"
git config --global user.email "contact@kuzudb.com"
git add .
git commit -m "Update API documentations"
git push -u origin "api-documentation-update-${{ github.sha }}"

- name: Create pull request
working-directory: kuzudb.github.io
run: |
echo "${{ secrets.DOC_PUSH_TOKEN }}" > token.txt
gh auth login --with-token < token.txt
rm -rf token.txt
gh pr create \
--body "Action triggered by CI workflow." \
--title "Update API documentations" \
--head "api-documentation-update-${{ github.sha }}" \
--base "main"
20 changes: 0 additions & 20 deletions .github/workflows/gen-python-docs.yml

This file was deleted.

6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,9 @@ tools/java_api/test_db/
tools/java_api/*.jar
tools/java_api/*.class
tools/java_api/*.log

# Generated docs
scripts/generate-cpp-docs/c/kuzu.h
scripts/generate-cpp-docs/cpp/headers
scripts/generate-cpp-docs/cpp/docs
scripts/generate-cpp-docs/c/docs
Loading
Loading