This repository acts as a GitOps staging ground for publishing the Keystone documentation. Project level documentation is stored in this repository and combined with component level documentation (e.g., Keystone-API, Keystone-Web) via Git submodules.
- Keystone-API: Backend REST API for managing HPC allocations and resources.
- Keystone-Web: Website frontend for HPC administration and self-service.
- Keystone-Python-Client: A light-weight Python client for Keystone API.
This repository leverages submodules. To clone the repository with submodules included:
git clone [URL] --recurse-submodulesSubmodules can also be pulled and updated manually:
git submodule update --initAfter ensuring the submodules are up-to-date, make sure to (re)install the project dependencies.
pip install -r requirements.txtDocumentation is compiled and served locally using the mkdcs utility.
mkdocs serveNew documentation is automatically built and published every time the main branch is updated.
CI permissions are granted via the Keystone-GitOps GitHub application which must be installed on all upstream repositories.
See the organization level settings to install and configure the GitHub application on new repositories.
A composite GitHub action is provided to streamline GitOps activities against this repository.
The following example job updates the keystone-api submodule to tag tags/v0.3.8 and publishes new documentation.
Authentication/permissions are handled by the GitHub application identified by its application ID (keystone-gitops-id) and primary key (keystone-gitops-pk).
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Update docs
uses: better-hpc/keystone-docs/.github/actions/update-action/@main
with:
keystone-gitops-id: ${{ secrets.KEYSTONE_GITOPS_ID }}
keystone-gitops-pk: ${{ secrets.KEYSTONE_GITOPS_PK }}
repo-name: keystone-api
tag: tags/v0.3.8