Integrating with CI/CD
Learn how to automate the update of your OpenAPI specification in GitBook.
Last updated
Was this helpful?
Learn how to automate the update of your OpenAPI specification in GitBook.
Last updated
Was this helpful?
Was this helpful?
GitBook can work with any CI/CD pipeline you already have for managing your OpenAPI specification. By using the GitBook CLI, you can automate updates to your API reference.
If your OpenAPI spec is generated during your CI process, you can upload it directly from your build environment:
If your OpenAPI specification is hosted at a URL, GitBook automatically checks for updates. To force an update (for example, after a release), run:
If you’re setting up a workflow to publish your OpenAPI spec, complete these steps in your repository:
In your repo, go to “Settings → Secrets and variables → Actions”.
Add a secret: GITBOOK_TOKEN
(your GitBook API token).
Add variables (or hardcode them in the workflow):
GITBOOK_SPEC_NAME
→ your spec’s name in GitBook
GITBOOK_ORGANIZATION_ID
→ your GitBook organization ID
Save the workflow file as .github/workflows/gitbook-openapi-publish.yml
.
Push changes to “main” (or run the workflow manually).
You can then use this action to update your spec:
# Set your GitBook API token as an environment variable
export GITBOOK_TOKEN=<api-token>
gitbook openapi publish \
--spec spec_name \
--organization organization_id \
example.openapi.yaml
name: Publish OpenAPI to GitBook
on:
push:
branches: [ "main" ]
paths:
- "**/*.yaml"
- "**/*.yml"
- "**/*.json"
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
env:
# Required secret
GITBOOK_TOKEN: ${{ secrets.GITBOOK_TOKEN }}
# Prefer repo/org variables; fallback to inline strings if you like
GITBOOK_SPEC_NAME: ${{ vars.GITBOOK_SPEC_NAME }}
GITBOOK_ORGANIZATION_ID: ${{ vars.GITBOOK_ORGANIZATION_ID }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Publish spec file to GitBook
run: |
npx -y @gitbook/cli@latest openapi publish \
--spec "$GITBOOK_SPEC_NAME" \
--organization "$GITBOOK_ORGANIZATION_ID" \
<path_to_spec>
# Set your GitBook API token as an environment variable
export GITBOOK_TOKEN=<api-token>
gitbook openapi publish \
--spec spec_name \
--organization organization_id \
https://api.example.com/openapi.yaml