GitHub Actionsを使ってDokkaで出力したドキュメントをGitHub Pagesにデプロイする


目的

タイトル通りです。

Dokkaについて詳しく知りたい方は↓へどうぞ。
http://kotlin.github.io/dokka/1.5.0/

準備

Gradle

build.gradle.kts
plugins {
    id("org.jetbrains.dokka") version dokkaVersion
}

repositories {
    mavenCentral()
}

// ビルド先のディレクトリを指定します。なくても大丈夫です。
tasks.getByName<org.jetbrains.dokka.gradle.DokkaTask>("dokkaHtml") {
  outputDirectory.set(buildDir.resolve("dokkaHtmlOutput"))
}

build.properties
org.gradle.jvmargs=-XX:MaxMetaspaceSize=512m

Dokkaはメタスペースを大量に消費して最悪の場合OutOfMemoryが発生するので、程よく調整してください。

ワークフロー

こちらを用いてデプロイします。

.github/workflows/deploy_gh_pages.yml
name: 'Deploy Document to GitHub Pages'

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: 'ubuntu-20.04'
    steps:
      - uses: actions/checkout@v2
# ドキュメントのビルド
      - name: Build Document
        run: ./gradlew dokkaHtml
# デプロイ
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build/dokkaHtmlOutput

結果

mainブランチにプッシュするとCIが回ります。

サンプルはこちら

まとめ

GitHub Actionsを使ってDokkaで生成したドキュメントをGitHub Pagesにデプロイする方法でした。

ローカルでのDokkaのビルドでOOMが発生してたので、戦々恐々としながらも作ったワークフローをGitHub Actionsで回してみたものの、案の定こけていました。
GitHub Actionsのvmoptionsを変更する方法が見当たらず、Dokka側で最適化されるのを待つしかないのかと半ば絶望してました。

それ以外はよそ様のActionsを使ったりと色々と楽をしていたら拍子抜けするくらいすぐにデプロイできたのでなかなか楽しかったです。