Links:
Just run the following command to let Hugo serve files from the Polaris site/
.
site/bin/run-hugo-in-docker.sh
Then point your browser to http://localhost:1313/
Then edit files from your IDE - you will see the changes in your browser. When changing the site structure, it is often necessary to restart Hugo - just run site/bin/run-hugo-in-docker.sh
again.
This builds the static Apache Polaris site into site/build/localhost-site
to be served using a http daemon. The base URL will be https://localhost:8080/
, which is the URL to be used when running the command below. (Note: static sites generated by Hugo do not work when opening the files from the local file system!)
Run
site/bin/create-static-site.sh --local
This builds the static Apache Polaris site into site/build/apache-site
. The base URL will be https://polaris.apache.org/
(as configured in hugo.yaml
). (Note: static sites generated by Hugo do not work when opening the files from the local file system!)
Run
site/bin/create-static-site.sh
(See /releases/
page as well.)
The idea here is that docs of releases live in either a separate branch or a separate Git repo.
The /releases
folder would not be in the main Polaris repository (at least not in any code branch). It would be mounted either via git worktree
or git clone
. Building and testing the site locally works without the /releases
folder. For developers, it is probably much easier to have a separate branch in the main Polaris GitHub repository and leverage Git worktrees.
Docs for the current code branch (e.g. main
branch) are maintained in the /in-dev/unreleased
folder. While we could maintain the docs right in the /in-dev
folder, having the in-dev docs in /in-dev/unreleased
provides the ability to use relative links that still work when the docs are in an /releases/x.y.z
folder (think: links like ../../guides/foo-bar.md
).
Within a release's versioned docs folder, the release version number can be included in the markdown using the custom Hugo shortcode {{< releaseVersion >}}
.
The content/releases/
folder is maintained in the separate versioned-docs
branch. The whole content/releases/
folder is .gitignore
d in the main source tree, otherwise Git complains about content/releases
not being versioned and if added to the main source tree (possible, Git allows that), the git worktree add
below would complain about the existing directory.
cd site/ cd content/releases/ # Create a new empty branch 'versioned-docs' git worktree add --orphan -b versioned-docs . # (add some content to the content/releases/ directory - at least the "top-level" _index.adoc git add . git commit -m "Initial set of releases"
Use the following script to checkout the versioned release docs
cd site/ # Checkout the versioned-docs branch locally bin/checkout-releases.sh
bin/remove-releases.sh
removes the content/releases
folder, if it does not contain uncommitted changes.
When a release is created, a bunch of things would happen via an automated GitHub workflow calling a shell script in the main source tree:
/releases/0.1.0
/in-dev/unreleased
folder are copied into the directory for the new release.release_index.md
would be copied as _index.md
into the new release‘s versioned docs folder, the /in-dev/unreleased/_index.md
would not end in the release’s versioned docs folder._index.md
would be rewritten.params.active_releases
in hugo.yaml
_index.md
would be generated with exclude_search: false
_index.md
would be updated, exclude_search: false
changed to exclude_search: true
._index.md
would be generated with exclude_search: true
main
and the versioned-docs
folderTo build a site locally (not required for hugo serve -D
, but required for hugo
) - with your local user.
This would be a GitHub workflow.
main
branch or the versioned-docs
branch changes.main
branchcd site/
git worktree add content/releases/ versioned-docs
npm i -D postcss postcss-cli autoprefixer
rm -rf public ; hugo --minify --gc
public
folder to the website.The statically built web site in public
does not work when opened from the file system.
Instead, do something like this:
rm -rf public ; hugo --minify --gc --baseURL http://localhost:8080/ (cd public/ ; http-server -p 8080 --cors)
redoc
shortcode works fine with hugo serve
and on the static site configured via the baseURL
in hugo.yaml
. To test the static build result locally, it is mandatory to pass the --baseURL
option to hugo
.redoc
looks awful with a dark theme.swaggerui
shortcode doesn't seem to work?hugo serve -D
. This is also true when the layout for the robots.txt
is changed.https://gohugo.io/installation/
To develop the site locally (aka hugo serve -D
), install the following dependencies using the root
user:
apt install hugo asciidoctor snap install dart-sass
If you want to build the static site locally as well (aka build with hugo
+ serve using another http server), the following dependencies are needed as well (non-root user):
npm i -D postcss postcss-cli autoprefixer npm install http-server -g
To develop the site locally (aka hugo serve -D
), install the following dependencies:
brew install go
brew install hugo
brew install asciidoctor
If you want to build the static site locally as well (aka build with hugo
+ serve using another http server), the following dependencies are needed as well (non-root user):
brew install npm npm -i -D postcss postcss-cli autoprefixer npm install http-server -g