plugin cocoapod installation is non-deterministic
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- ios, javascript
- Ambito
- build-system, cli, mobile-dev
Direzione di ricerca
Non sono indicati file, test o punti di ingresso. Inizia tracciando l’installazione del plugin e il percorso di build di iOS, quindi determina dove dovrebbero trovarsi Podfile e Podfile.lock; il lavoro è completato quando un checkout del codice sorgente installa in modo riproducibile le stesse dipendenze CocoaPods nelle build locali e CI.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Environment
TNS 5.3.1
Describe the bug
Modern package managers give us not just the ability to install dependencies, but more critically to install dependencies deterministically. That is to say: the exact same dependencies, will be installed the exact same way, every time. No matter when the install happens.
The most common way they achieve this is by maintaining a "lock" file which contains a manifest of resolved dependencies for a given set of primary version constraints. Once checked into source control, all other environments can use the lock file to download and install the exact same set of dependencies every time. yarn, bundler, cargo, npm all have lockfiles because this is so important.
This critical dependency management feature is also available with Cocoapods. It has a lockfile called Podfile.lock. However, because of the way that pod plugins work, it appears is not captured in source control (instead it's plopped into platforms/ios which is git ignored), and so cannot be used to reliably re-create a build from source.
Some of the consequences of this:
- non-deterministic builds.
- you might get a a different version of a cocoapod for production than you had when you ran your tests.
- subtle bugs that are only reproducible in unique environments as developers install their dependencies at different times and end up with slightly differing versions of a cocoapod.
- difficulty in automation: In your CI environment, you always end up caching a set of dependencies that are fetched over the network, so that it will be faster, and also function in the absence of the repository service. To do that, you need a unique key, against which to store your cache. For package managers, this is the lock file. See Yarn caching on circleCI for an example. This is impossible without
Podfile.lock
Expected behavior
Building a nativescript application from source always pulls the same set of dependencies, both from NPM and also from CocoaPods.
It seems to me that the simplest solution would be to maintain the Podfile somewhere in the project structure. Either in App_Resources/iOS or a version controlled platforms/ios
When a pod plugin is installed, it is ok, if it updates the Podfile to include its dependency, but then both the Podfile and the resulting Podfile.lock should be store in source control so that every developer, every CI environment, and ultimately every user, gets the same set of cocoapods every single time for a give version of the app in git.
- Lingua principale
- JavaScript
- Stelle
- 1.1k
- Fork
- 204
- Merge medio
- 1g 9h
- PR unite (30g)
- 8
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NativeScript/nativescript-cli
-
in-progress
NativeScript/nativescript-cli#6140 · 2 commenti · 1 assegnatario ·
-
NativeScript/nativescript-cli#6090 · 1 assegnatario ·
-
in progress
NativeScript/nativescript-cli#6015 · 1 reazione · 1 assegnatario ·
-
question
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
NativeScript/nativescript-cli#5992 · 5 commenti ·
-
feature-pending-triage
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
NativeScript/nativescript-cli#5975 ·
Tutte le issue di NativeScript/nativescript-cli
Issue simili
-
Edit: CW+ Apertachannels:edit check:passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
idean3885/claude-ops-agent#521 ·
-
[Nytt ikon]: menu-search Apertaforespørsel 🥰 ikoner 🖼 nytt ✨
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
avniproject/avni-client#2135 ·
-
automated broken-link
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100