GitHub Actionsでkintoneアプリのテンプレートをダウンロードする

kintoneで作ったアプリは、「アプリテンプレート」という機能でzipファイルにしてダウンロードできます。 このアプリテンプレートを使えば、アプリのフィールドやビューの設定をバックアップしたり、他の環境にコピーしたり、あるいは他のユーザーに配布したりすることができます。

実はとても便利な機能なのですが、このアプリテンプレートはCLIツールやAPIなどではダウンロードできません。しかたがないのでkintoneの管理画面から手動でダウンロードする必要があります。これは面倒くさい。

というわけで、GitHub Actionsを使って自動的にダウンロードするために「macrat/download-kintone-template-action」というアクションを作ってみました。 このアクションを使えば、わざわざブラウザを操作しなくとも、自動的にアプリテンプレートをダウンロードしてどこかに保存することができます。

注意

  • 前述の通りCLIツールやAPIが提供されていないので、内部的にはPlaywrightを使ってChromiumブラウザを起動してkintoneの管理画面を操作しています。安全性も安定性も保証しかねますので、自己責任でお使いください。
  • まだ改善の余地がありそうなので、後方互換性のないアップデートをする可能性があるという意味でバージョン0.x系にしています。具体的には、起動が遅いのが気になっているので、もう少し高速に起動できる方法を考えたいと思っています。

最小限の使い方

まずは最小限のワークフローをご紹介します。

# Actionsの画面から手動で起動する
on: [workflow_dispatch]

jobs:
  download:
    runs-on: ubuntu-latest
    steps:
      - name: Download kintone app template
        uses: macrat/download-kintone-template-action@v0
        with:
          base-url: ${{ secrets.KINTONE_BASE_URL }}  # kintone環境のURL (例: https://example.cybozu.com)
          app-id: ${{ secrets.KINTONE_APP_ID }}      # ダウンロードしたいアプリのID
          username: ${{ secrets.KINTONE_USERNAME }}  # kintoneのログインユーザー名
          password: ${{ secrets.KINTONE_PASSWORD }}  # kintoneのログインパスワード
          output: ./template.zip                     # ダウンロードしたzipファイルの保存先 (省略すると template.zip になる)

      # サンプルとして、アプリテンプレートはGitHub Actionsのアーティファクトとして保存する
      - name: Upload as artifact
        uses: actions/upload-artifact@v4
        with:
          name: kintone-app-template
          path: ./template.zip

このワークフローは、GitHub Actionsの画面から手動で起動することができます。 起動すると、指定したアプリのテンプレートがActionsの実行結果の画面にアーティファクトとして保存されます。

もう少し実用的な使い方

実際には、アプリの更新と同時にアプリテンプレートをダウンロードしたいことが多いと思います。 その場合は、以前ご紹介したkintoneカスタマイズを自動アップロードする方法と組み合わせて、以下のようにすると良いでしょう。

name: Deploy and Release kintone App

on:
  push:
    tags:
      - 'v*'  # vで始まるタグがpushされたら実行する

jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write  # リリースを作成するために必要
    steps:
      - uses: actions/checkout@v5

      # カスタマイズファイルをアップロードする
      - name: Upload kintone customize file
        uses: macrat/upload-kintone-customize-action@v1
        with:
          base-url: ${{ secrets.KINTONE_BASE_URL }}
          app-id: ${{ secrets.KINTONE_APP_ID }}
          username: ${{ secrets.KINTONE_USERNAME }}
          password: ${{ secrets.KINTONE_PASSWORD }}
          desktop-js: ./src/desktop.js
          desktop-css: ./src/desktop.css

      # アプリテンプレートをダウンロードする
      - name: Download kintone app template
        uses: macrat/download-kintone-template-action@v0
        with:
          base-url: ${{ secrets.KINTONE_BASE_URL }}
          app-id: ${{ secrets.KINTONE_APP_ID }}
          username: ${{ secrets.KINTONE_USERNAME }}
          password: ${{ secrets.KINTONE_PASSWORD }}

      # リリースを作成してアプリテンプレートを添付する
      - name: Create Release
        run: gh release create $GITHUB_REF_NAME ./template.zip --title $GITHUB_REF_NAME --generate-notes
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}