Skip to content

wip: ktor

wip: ktor #163

name: Deploy documentation and API reference
on: [ push, pull_request ]
# Gives the workflow permissions to clone the repo and create a page deployment
permissions:
id-token: write
pages: write
env:
# Name of module and id separated by a slash
INSTANCE: documentation/akkurate
# Replace HI with the ID of the instance in capital letters
DOC_ARTIFACT: webHelpAKKURATE2-all.zip
# Writerside docker image version
DOCKER_VERSION: "242.21870"
# Add the variable below to upload Algolia indexes
# Replace HI with the ID of the instance in capital letters
ALGOLIA_ARTIFACT: algolia-indexes-AKKURATE.zip
ALGOLIA_APP_NAME: L3ZXCPZ1DE
ALGOLIA_INDEX_NAME: akkurate
ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }}
CONFIG_JSON_PRODUCT: AKKURATE
CONFIG_JSON_VERSION: 0.10.0
jobs:
build-documentation:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build documentation
uses: JetBrains/writerside-github-action@v4
with:
instance: ${{ env.INSTANCE }}
artifact: ${{ env.DOC_ARTIFACT }}
docker-version: ${{ env.DOCKER_VERSION }}
- name: Fix permissions on `artifacts` directory
run: sudo chown runner:docker ./artifacts
- name: Unzip documentation
run: unzip -qq ./artifacts/${{ env.DOC_ARTIFACT }} -d ./artifacts/docs
- name: Replace Open Graph image for specific pages
run: sed -i 's/akkurate\.dev\/social\.png/akkurate.dev\/social-arrow.png/g' ./artifacts/docs/arrow-integration.html
- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: docs
path: |
./artifacts/docs
./artifacts/report.json
retention-days: 7
- name: Upload social images
uses: actions/upload-artifact@v4
with:
name: social-images
path: |
./documentation/images/social.png
./documentation/images/social-arrow.png
retention-days: 7
- name: Upload Algolia indexes
uses: actions/upload-artifact@v4
with:
name: algolia-indexes
path: artifacts/${{ env.ALGOLIA_ARTIFACT }}
retention-days: 7
build-api-reference:
name: Build API reference
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: zulu
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Gradle
uses: gradle/[email protected]
- name: Build the API
run: ./gradlew dokkaHtmlMultiModule
- name: Upload API reference
uses: actions/upload-artifact@v4
with:
name: api
path: ./build/dokka/htmlMultiModule/
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-documentation:
name: Test documentation
# Requires build job results
needs: build-documentation
runs-on: ubuntu-latest
steps:
- name: Download documentation
uses: actions/download-artifact@v4
with:
name: docs
path: artifacts
- name: Test documentation
uses: JetBrains/writerside-checker-action@v1
with:
instance: ${{ env.INSTANCE }}
publish-documentation-indexes:
name: Publish documentation indexes to Algolia
needs: build-documentation
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
container:
image: registry.jetbrains.team/p/writerside/builder/algolia-publisher:2.0.32-3
steps:
- uses: actions/download-artifact@v4
with:
name: algolia-indexes
- uses: montudor/action-zip@v1
with:
args: unzip -qq ${{ env.ALGOLIA_ARTIFACT }} -d algolia-indexes
- run: |
env "algolia-key=${{env.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
deploy:
name: Deploy everything
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: [ test-documentation, build-api-reference ]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- name: Download documentation
uses: actions/download-artifact@v4
with:
name: docs
path: ./website/
- name: Download API reference
uses: actions/download-artifact@v4
with:
name: api
path: ./website/api/
- name: Download social images
uses: actions/download-artifact@v4
with:
name: social-images
path: ./website/
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload Pages contents
uses: actions/upload-pages-artifact@v3
with:
path: website
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4