Skip to content
Cette page a été générée et traduite avec l'aide de l'IA. Si vous remarquez des inexactitudes, n'hésitez pas à contribuer. Modifier sur GitHub

Gestion des versions

Une version représente un build spécifique téléversé sous une variante. Chaque version a une chaîne de version, un numéro de build, un journal des modifications et le fichier binaire lui-même. Les versions sont affichées sur la page de téléchargement du produit dans l'ordre chronologique inverse.

Champs d'une version

ChampTypeDescription
idstringID auto-généré (ex. rel_b1cqa)
variant_idstringID de la variante parente
versionstringChaîne de version (ex. "1.2.0")
buildintegerNuméro de build (ex. 120)
changelogtextNotes de version (affichées sur la page de téléchargement)
min_osstringVersion OS minimum
channelstringCanal de distribution (ex. "internal", "beta", "production")
size_bytesintegerTaille du fichier en octets
sha256stringHash SHA-256 du fichier téléversé
download_countintegerNombre de fois que cette version a été téléchargée
file_namestringNom de fichier original
file_extstringExtension de fichier (ex. "ipa", "apk")
created_atdatetimeHorodatage de téléversement

Téléverser une version

Téléversement standard

Téléversez un fichier de build vers une variante spécifique :

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"

Réponse :

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://..."
    }
  }
}

Téléversement intelligent

L'endpoint de téléversement intelligent détecte automatiquement les métadonnées du package téléversé :

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"

Détection automatique

Le téléversement intelligent extrait les éléments suivants depuis les fichiers IPA et APK :

  • Bundle ID / Nom de package
  • Chaîne de version (CFBundleShortVersionString / versionName)
  • Numéro de build (CFBundleVersion / versionCode)
  • Icône de l'application (extraite et stockée comme icône du produit)
  • Version OS minimum

Vous pouvez toujours remplacer n'importe quel champ auto-détecté en le fournissant explicitement dans la requête de téléversement.

Champs de téléversement

ChampRequisDescription
variant_idOuiID de la variante cible
app_fileOuiLe fichier binaire (IPA, APK, DMG, etc.)
versionNonChaîne de version (auto-détectée pour IPA/APK)
buildNonNuméro de build (auto-détecté pour IPA/APK)
channelNonCanal de distribution
min_osNonVersion OS minimum
changelogNonNotes de version

Stockage des fichiers

Les fichiers téléversés sont stockés à :

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

Chaque version a également un snapshot meta.json (stockage local uniquement) à des fins de récupération.

Stockage S3

Lorsque le stockage compatible S3 est configuré, les fichiers sont téléversés vers le bucket configuré. La structure du chemin de stockage reste la même. Consultez Configuration pour la configuration S3.

URLs de téléchargement

Chaque version fournit plusieurs URLs :

URLDescription
/d/:releaseIDTéléchargement binaire direct (prend en charge les requêtes HTTP Range)
/ios/:releaseID/manifest.plistManifeste iOS OTA (pour les liens itms-services://)
/products/:slugPage de téléchargement du produit
/products/:slug?r=:releaseIDPage produit avec une version spécifique mise en évidence

Supprimer une version

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

WARNING

La suppression d'une version supprime définitivement le fichier binaire téléversé et toutes les métadonnées associées.

Exporter les données des versions

Exportez toutes les versions en CSV pour les rapports :

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

Intégration CI/CD

Fenfa est conçu pour être appelé depuis des pipelines CI/CD. Une étape GitHub Actions typique :

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 }}"

Étapes suivantes

Released under the Apache-2.0 License.