Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

リリース管理

リリースはバリアントの下にある特定のアップロードされたビルドを表します。各リリースにはバージョン文字列、ビルド番号、チェンジログ、バイナリファイル自体があります。リリースは製品ダウンロードページで逆の時系列順に表示されます。

リリースフィールド

フィールドタイプ説明
idstring自動生成ID(例:rel_b1cqa
variant_idstring親バリアントID
versionstringバージョン文字列(例:「1.2.0」)
buildintegerビルド番号(例:120)
changelogtextリリースノート(ダウンロードページに表示)
min_osstring最低OSバージョン
channelstring配布チャンネル(例:「internal」、「beta」、「production」)
size_bytesintegerファイルサイズ(バイト)
sha256stringアップロードされたファイルのSHA-256ハッシュ
download_countintegerこのリリースがダウンロードされた回数
file_namestring元のファイル名
file_extstringファイル拡張子(例:「ipa」、「apk」)
created_atdatetimeアップロードタイムスタンプ

リリースをアップロードする

標準アップロード

特定のバリアントにビルドファイルをアップロードします:

bash
curl -X POST http://localhost:8000/upload \
  -H "X-Auth-Token: YOUR_UPLOAD_TOKEN" \
  -F "variant_id=var_def456" \
  -F "app_file=@build/MyApp.ipa" \
  -F "version=1.2.0" \
  -F "build=120" \
  -F "channel=beta" \
  -F "changelog=Bug fixes and performance improvements"

レスポンス:

json
{
  "ok": true,
  "data": {
    "app": {
      "id": "app_xxx",
      "name": "MyApp",
      "platform": "ios",
      "bundle_id": "com.example.myapp"
    },
    "release": {
      "id": "rel_b1cqa",
      "version": "1.2.0",
      "build": 120
    },
    "urls": {
      "page": "https://dist.example.com/products/myapp",
      "download": "https://dist.example.com/d/rel_b1cqa",
      "ios_manifest": "https://dist.example.com/ios/rel_b1cqa/manifest.plist",
      "ios_install": "itms-services://..."
    }
  }
}

スマートアップロード

スマートアップロードエンドポイントはアップロードされたパッケージからメタデータを自動検出します:

bash
curl -X POST http://localhost:8000/admin/api/smart-upload \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN" \
  -F "variant_id=var_def456" \
  -F "app_file=@build/MyApp.ipa"

自動検出

スマートアップロードはIPAおよびAPKファイルから以下を抽出します:

  • バンドルID / パッケージ名
  • バージョン文字列(CFBundleShortVersionString / versionName)
  • ビルド番号(CFBundleVersion / versionCode)
  • アプリアイコン(抽出されて製品アイコンとして保存)
  • 最低OSバージョン

アップロードリクエストで明示的に指定することで、自動検出されたフィールドを上書きできます。

アップロードフィールド

フィールド必須説明
variant_idはいターゲットバリアントID
app_fileはいバイナリファイル(IPA、APK、DMGなど)
versionいいえバージョン文字列(IPA/APKでは自動検出)
buildいいえビルド番号(IPA/APKでは自動検出)
channelいいえ配布チャンネル
min_osいいえ最低OSバージョン
changelogいいえリリースノート

ファイルストレージ

アップロードされたファイルは以下に保存されます:

uploads/{product_id}/{variant_id}/{release_id}/filename.ext

各リリースには回復目的のためのmeta.jsonスナップショット(ローカルストレージのみ)もあります。

S3ストレージ

S3互換ストレージが設定されている場合、ファイルは設定されたバケットにアップロードされます。ストレージパス構造は同じままです。S3セットアップについては設定を参照してください。

ダウンロードURL

各リリースにはいくつかのURLがあります:

URL説明
/d/:releaseID直接バイナリダウンロード(HTTP Rangeリクエストをサポート)
/ios/:releaseID/manifest.plistiOS OTAマニフェスト(itms-services://リンク用)
/products/:slug製品ダウンロードページ
/products/:slug?r=:releaseID特定のリリースがハイライトされた製品ページ

リリースを削除する

bash
curl -X DELETE http://localhost:8000/admin/api/releases/rel_b1cqa \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN"

WARNING

リリースを削除すると、アップロードされたバイナリファイルとすべての関連メタデータが永久に削除されます。

リリースデータのエクスポート

レポート用にすべてのリリースをCSVとしてエクスポートします:

bash
curl -o releases.csv http://localhost:8000/admin/exports/releases.csv \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN"

CI/CD統合

FenfaはCI/CDパイプラインから呼び出されるように設計されています。典型的なGitHub Actionsステップ:

yaml
- name: Upload to Fenfa
  run: |
    curl -X POST ${{ secrets.FENFA_URL }}/upload \
      -H "X-Auth-Token: ${{ secrets.FENFA_UPLOAD_TOKEN }}" \
      -F "variant_id=${{ secrets.FENFA_VARIANT_ID }}" \
      -F "app_file=@build/output/MyApp.ipa" \
      -F "version=${{ github.ref_name }}" \
      -F "build=${{ github.run_number }}" \
      -F "changelog=${{ github.event.head_commit.message }}"

次のステップ

Released under the Apache-2.0 License.