Build documentation #183
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build documentation | |
on: | |
# If specified, the workflow will be triggered automatically once you push to the `main` branch. | |
# Replace `main` with your branch’s name | |
push: | |
branches: ["main"] | |
# Specify to run a workflow manually from the Actions tab on GitHub | |
workflow_dispatch: | |
# Gives the workflow permissions to clone the repo and create a page deployment | |
permissions: | |
contents: read | |
id-token: write | |
pages: write | |
env: | |
# Name of module and id separated by a slash | |
INSTANCE: Writerside/hi | |
# Replace HI with the ID of the instance in capital letters | |
ARTIFACT: webHelpHI2-all.zip | |
# Writerside docker image version | |
DOCKER_VERSION: 243.22562 | |
ALGOLIA_APP_NAME: 'I9JI1KX7TM' | |
ALGOLIA_INDEX_NAME: 'docs' | |
CONFIG_JSON_PRODUCT: 'HI' | |
CONFIG_JSON_VERSION: '1.0' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
outputs: | |
algolia_artifact: ${{ steps.define-ids.outputs.algolia_artifact }} | |
artifact: ${{ steps.define-ids.outputs.artifact }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Define instance id and artifacts | |
id: define-ids | |
run: | | |
INSTANCE=${INSTANCE#*/} | |
INSTANCE_ID_UPPER=$(echo "$INSTANCE" | tr '[:lower:]' '[:upper:]') | |
ARTIFACT="webHelp${INSTANCE_ID_UPPER}2-all.zip" | |
ALGOLIA_ARTIFACT="algolia-indexes-${INSTANCE_ID_UPPER}.zip" | |
# Print the values | |
echo "INSTANCE_ID_UPPER: $INSTANCE_ID_UPPER" | |
echo "ARTIFACT: $ARTIFACT" | |
echo "ALGOLIA_ARTIFACT: $ALGOLIA_ARTIFACT" | |
# Set the environment variables and outputs | |
echo "INSTANCE_ID_UPPER=$INSTANCE_ID_UPPER" >> $GITHUB_ENV | |
echo "ARTIFACT=$ARTIFACT" >> $GITHUB_ENV | |
echo "ALGOLIA_ARTIFACT=$ALGOLIA_ARTIFACT" >> $GITHUB_ENV | |
echo "artifact=$ARTIFACT" >> $GITHUB_OUTPUT | |
echo "algolia_artifact=$ALGOLIA_ARTIFACT" >> $GITHUB_OUTPUT | |
- name: Build docs using Writerside Docker builder | |
uses: JetBrains/writerside-github-action@v4 | |
with: | |
instance: ${{ env.INSTANCE }} | |
docker-version: ${{ env.DOCKER_VERSION }} | |
- name: Save artifact with build results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: | | |
artifacts/${{ steps.define-ids.outputs.artifact }} | |
artifacts/report.json | |
artifacts/${{ steps.define-ids.outputs.algolia_artifact }} | |
retention-days: 7 | |
# Add the job below and artifacts/report.json on Upload documentation step above if you want to fail the build when documentation contains errors | |
test: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
path: artifacts | |
- name: Test documentation | |
uses: JetBrains/writerside-checker-action@v1 | |
with: | |
instance: ${{ env.INSTANCE }} | |
deploy: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
needs: [build, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
path: artifacts | |
- name: Unzip artifact | |
run: unzip -O UTF-8 -qq "artifacts/${{ needs.build.outputs.artifact }}" -d dir | |
- name: Setup Pages | |
uses: actions/configure-pages@v4 | |
- name: Package and upload Pages artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: dir | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
publish-indexes: | |
needs: [build, test, deploy] | |
runs-on: ubuntu-latest | |
container: | |
image: registry.jetbrains.team/p/writerside/builder/algolia-publisher:2.0.32-3 | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
path: artifacts | |
- name: Unzip Algolia artifact | |
run: unzip -O UTF-8 -qq "artifacts/${{ needs.build.outputs.algolia_artifact }}" -d algolia-indexes | |
- name: Update Algolia Index | |
run: | | |
if [ -z "${{ secrets.ALGOLIA_KEY }}" ]; then | |
echo "ALGOLIA_KEY secret is not set in GitHub Secrets" | |
exit 1 | |
else | |
env "algolia-key=${{ secrets.ALGOLIA_KEY }}" java -jar /opt/builder/help-publication-agent.jar \ | |
update-index \ | |
--application-name ${{ env.ALGOLIA_APP_NAME }} \ | |
--index-name ${{ env.ALGOLIA_INDEX_NAME }} \ | |
--product ${{ env.CONFIG_JSON_PRODUCT }} \ | |
--version ${{ env.CONFIG_JSON_VERSION }} \ | |
--index-directory algolia-indexes/ \ | |
2>&1 | tee algolia-update-index-log.txt | |
fi |