6 votes

Optimisation du flux de travail pour mettre à jour les dépendances de cocoapods possédées en interne ?

Disons que j'ai un principal Project A avec plusieurs dépendances de cocoapods (qui sont détenus en interne par le repo cocoapods de notre organisation).

Disons que je travaille sur Project A et en travaillant dessus, j'ai trouvé un correctif sur une DependencyB Je modifie donc le code dans cette dépendance tout en restant sur le projet Xcode de ProjectA.

Quel serait le meilleur flux de travail pour pousser les changements sur cette dépendance vers son propre référentiel et ensuite mettre à jour cette dépendance dans le fichier Project A ?

J'aimerais vraiment trouver des moyens pour que éviter , automatiser complètement ou simplifier le flux de travail suivant (qui est un PITA)

Worflow à éviter

  1. git clone git@github.com:Organization/DependencyB.git

  2. Effectuez vos modifications dans le projet de dépendance (le fichier mêmes changements qui ont été faits en corrigeant le problème que j'ai trouvé en travaillant sur Project A )

  3. Mettre à jour le DependencyB.podspec fichier

    s.version = "0.1.7"
    s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "0.1.7" }
  4. Commit & Tag la version de cette dépendance

    git add -A
    git commit -m 'Made some changes'
    git tag -a 0.1.7 -m 'This is an awesome tag :D'
    git push origin master
    git push --tags origin
  5. Mettre à jour le repo privé cocoapods de l'organisation (que j'ai stocké dans le répertoire ~/ )

    cd ~/.cocoapods/OrganizationPrivateRepo/CoverFlux
    mkdir 0.1.7
    cd 0.1.7
  6. copier le fichier DependencyB.podspec mis à jour dans le répertoire privé de l'organisation (cloné dans le fichier ~/.cocoapods )

    ~/.cocoapods/OrganizationPrivateRepo/DependencyB/0.1.7/CoverFlux.podspec
  7. Effectuer les changements dans le dépôt privé et pousser vers le dépôt distant.

    cd ~/.cocoapods/OrganizationPrivateRepo/
    git commit -am 'Added version 0.1.7 to DependencyB spec'
    git push origin master
  8. Enfin, allez dans le dossier "Projet A" de l'initiale et mettez à jour

    pod update

Note :

Un fichier pod ressemble à un projet :

    platform :ios, '6.0'
    pod 'DependencyB'

4voto

David V Points 4950

Voici quelques conseils pour simplifier votre flux de travail. Au-delà de ceux-ci, vous devrez peut-être envisager de faire quelques scripts supplémentaires.

Tout d'abord, je vous recommande de conserver votre fichier podspec à la racine de votre projet. Ainsi, le fichier DependencyB.git devrait contenir le fichier DependencyB.podspec.

Simplifier l'étape 3

Modifiez votre balise source pour faire référence à la version. De cette façon, il vous suffit de modifier la ligne de version dans votre podspec.

s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "#{s.version}" }

Simplifier les étapes 5, 6 et 7

Exécutez ce qui suit depuis votre répertoire DependencyB.git. (En supposant que vous avez votre podspec là comme je l'ai suggéré ci-dessus)

pod push OrganizationPrivateRepo DependencyB.podspec

Si DependencyB.podspec est le seul fichier podspec, vous n'avez même pas besoin de l'inclure sur la ligne, ce qui donne :

pod push OrganizationPrivateRepo

Étape 4

Enfin, je pense que la simplification de l'étape 4 est possible, mais c'est l'une des choses qui varient entre les organisations et les développeurs individuels car elle fait partie de leur flux de travail. Par exemple, je commets normalement à partir de mon IDE.

De tels scripts pourraient être intégrés dans le podspec de façon à ce qu'ils mettent à jour l'élément s.version valeur. Ou alternativement, obtenez la balise correcte à partir de la balise s.version valeur.

MISE À JOUR : Simplifier l'étape 2

Il semble que vous fassiez une modification deux fois à la dépendance B. Vous pouvez demander à CocoaPods de créer un lien symbolique. Dans le Podfile de ProjectA, définissez ce qui suit :

pod 'DependencyB', :path => "../path/to/DependencyB'

Vous pouvez maintenant éditer les fichiers de la dépendance B depuis le projet A. Vous aurez besoin d'exécuter pod update après avoir effectué ce changement. Après cela, les modifications apportées à la source seront disponibles immédiatement puisqu'il s'agit d'un lien symbolique. J'ai eu des difficultés à faire des commits Git à partir de Xcode en faisant cela, mais à part cela, cela fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X