Retour à l'accueil

Développement iOS sur Windows sans Mac — GitHub Actions

L'article décrit le développement et la publication d'apps iOS sur Windows sans Mac en utilisant GitHub Actions, XcodeGen et Claude Code. Deux exemples dans l'App Store : messager et calculatrice. Instructions complètes sur les certificats et le pipeline.

iOS sans Mac : de Windows à l'App Store en 15 min
Advertisement 728x90

Développer des applications iOS sur Windows avec GitHub Actions et XcodeGen

Deux applications iOS — le messager chiffré Dark Message et la calculatrice d'ingénierie CVC — sont publiées sur l'App Store. Elles ont été entièrement développées sur Windows sans MacBook. Le processus : le code est écrit localement, avec la compilation et la signature sur des machines macOS virtuelles dans GitHub Actions. Le temps entre le push vers le dépôt et la compilation sur un iPhone est de 15 minutes.

Cela contourne l'exigence de Xcode sur macOS. GitHub fournit des runners gratuits avec macOS, où Xcode est installé. La configuration comprend un compte Apple Developer, XcodeGen pour générer le projet à partir de YAML, un pipeline CI/CD et des certificats de signature.

Parcours de développement selon les niveaux de compétence

Le choix de l'approche dépend des compétences :

Google AdInline article slot
  • Codage intuitif avec IA : Claude Code génère du code SwiftUI à partir de descriptions. Fonctionne dans le terminal sur Windows. Exemple de prompt : "Application iOS en SwiftUI, chiffrement AES-256-GCM avec PBKDF2, écrans de saisie/déchiffrement."
  • Programmeur sans Mac : Votre propre code Swift + IA configure l'infrastructure (XcodeGen, GitHub Actions, certificats).
  • Expert : Structure de projet manuelle, configuration YAML, pipeline. Itérations via TestFlight sans prévisualisation locale.

Installation de Claude Code :

npm install -g @anthropic-ai/claude-code
claude

L'IA crée des fichiers, modifie en fonction des retours. Pas de prévisualisation, mais les compilations cloud compensent.

Étape 1 : Compte Apple Developer depuis la France

Créez un Apple ID sur appleid.apple.com (pays ≠ Russie). Inscrivez-vous sur developer.apple.com/programs/enroll en tant qu'Individu. Paiement 99 $/an — utilisez une carte étrangère (Bybit ou similaire). Accès à App Store Connect sous 24–48 heures.

Google AdInline article slot

Étape 2 : Structure du projet et XcodeGen

XcodeGen génère .xcodeproj à partir de project.yml sans Xcode. Exemple de configuration :

name: DarkMessage
options:
  bundleIdPrefix: com.darkmessage
  deploymentTarget:
    iOS: "15.0"
  xcodeVersion: "15.0"
targets:
  DarkMessage:
    type: application
    platform: iOS
    sources:
      - path: Sources
    resources:
      - path: Resources
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: com.darkmessage.ios
        MARKETING_VERSION: "1.0.0"
        CURRENT_PROJECT_VERSION: "1"
        SWIFT_VERSION: "5.9"
        TARGETED_DEVICE_FAMILY: "1,2"
        INFOPLIST_VALUES:
          UILaunchScreen: {}
    dependencies: []

Structure du dépôt :

  • Sources/ : App.swift, Views/, Models/, Services/ (CryptoService.swift).
  • Resources/Assets.xcassets/.
  • project.yml.
  • .github/workflows/build.yml.

Avantages du YAML : compact (30 lignes), pas de conflits Git, modifiable dans VS Code.

Google AdInline article slot

Étape 3 : Dépôt et GitHub Actions

Initialisation :

git init
git add .
git commit -m "Commit initial"
git remote add origin https://github.com/user/repo.git
git push -u origin main

Les runners Actions avec macOS compilent le projet : xcodegen generate, xcodebuild, signature, téléversement vers TestFlight/App Store.

Étape 4 : Signature de code sans Mac

Nécessaire :

  • Certificat de distribution (.p12).
  • Profil d'approvisionnement (.mobileprovision).
  • Clé API App Store Connect.

Générez CSR sur Windows avec OpenSSL :

openssl genrsa -out ios_dist.key 2048
openssl req -new -key ios_dist.key -out ios_dist.csr -subj "/CN=Votre Nom/[email protected]"

Téléversez CSR sur developer.apple.com/account/resources/certificates → Apple Distribution → téléchargez .cer. Convertissez en .p12 :

openssl x509 -inform der -in ios_dist.cer -inkey ios_dist.key -out ios_dist.p12

Profil d'approvisionnement : developer.apple.com → Profiles → + → App Store → bundle ID → certificat.

Clé API : App Store Connect → Users and Access → Keys → + → App Manager.

Stockez les secrets dans GitHub Settings → Secrets : CERTIFICATE_P12_BASE64, PROVISIONING_PROFILE_BASE64, APPSTORE_API_KEY.

Étape 5 : Workflow YAML pour CI/CD

Exemple .github/workflows/build.yml (simplifié) :

name: Compilation iOS
on: [push]
jobs:
  build:
    runs-on: macos-13
    steps:
      - uses: actions/checkout@v4
      - name: Générer le projet Xcode
        uses: maxim-lobanov/setup-xcodegen@v1
        with:
          xcodegen-version: '2.35.0'
      - run: xcodegen generate
      - name: Importer le certificat
        env:
          CERTIFICATE_P12: ${{ secrets.CERTIFICATE_P12_BASE64 }}
        run: |
          echo $CERTIFICATE_P12 | base64 --decode > cert.p12
          security import cert.p12 -k ~/Library/Keychains/login.keychain
      # ... signature, archive, téléversement

Le workflow complet inclut xcodebuild archive, xcrun altool ou xcrun notarytool pour l'App Store.

Points clés

  • GitHub Actions avec macOS sont gratuits pour les dépôts publics (2000 min/mois).
  • XcodeGen simplifie la gestion de projet sans Xcode.
  • La signature de code est automatisée via des secrets encodés en base64.
  • Itérations : 15 minutes du push à TestFlight.
  • Adapté aux projets ponctuels ; pour la production, un Mac accélère le développement.

— Editorial Team

Advertisement 728x90

Lire ensuite