I. Dependências
Explicitamente declare e isole dependências
Editar no GitHubIdealmente, um aplicativo iOS-factor nunca depende da existência implícita de pacotes a nível de sistema. Ele declara todas dependências, completamente e exatamente através de um manifesto de declaração de dependências. Isso inclui as versões exatas do Xcode, CocoaPods e fastlane.
O benefício da declaração explícita de dependências é que isso simplifica a configuração inicial do projeto para novos desenvolvedores, assim como ajuda a ter um sistema de build confiável que também é capaz de executar builds antigos novamente de uma forma que seja reproduzível. Um novo desenvolvedor pode baixar o código fonte do aplicativo na sua máquina, tendo somente o runtime da linguagem e o gerenciador de dependências instalados como os únicos pré-requisitos.
Ao especificar as dependências exatas, você consegue regerar um build de 6 meses atrás, sabendo que irá funcionar dado que serão utilizadas as mesmas versões do Xcode, CocoaPods e do Swift.
Dado que o desenvolvimento pra iOS não consegue ser tão encapsulável como é o caso do desenvolvimento para web, estamos limitados à ferramentas de terceiros pra preencher essa necessidade enquanto a Apple não disponibiliza uma solução oficial (rdar://40669395).
Por enquanto, você pode utilizar variadas ferramentas de terceiros pra declarar explicitamente essas dependências.
Ferramentas para Swift
A Apple fornece um guia excelente sobre o Swift Package Manager.
Especificando uma versão do Xcode
Você pode utilizar um arquivo .xcode-version na raiz do seu projeto iOS para declarar a versão exata do Xcode a ser usada para um dado aplicativo iOS.
Dessa forma, você pode configurar seu sistema de integração contínua para instalar automaticamente e utilizar uma determinada versão do Xcode. Para trocar a versão do Xcode (assumindo que você já o tem instalado), você pode utilizar uma ferramenta como o chxcode.
Para automatizar a versão do Xcode, você pode utilizar uma ferramenta chamada xcode-install até a Apple fornecer uma ferramenta de linha de comando para instalar o Xcode (rdar://40669425).
Ferramentas para Ruby
Ruby usa o bundler para definir as dependências exatas a serem usadas em um build através de um arquivo chamado Gemfile
:
source "https://rubygems.org"
gem "fastlane", ">= 2.96.1", "<= 3.0.0"
gem "cocoapods", "~> 1.5"
O Gemfile
e o automaticamente gerado Gemfile.lock
devem ser versionados na sua ferramenta de controle de versão. Qualquer sistema de build pode então ser capaz de rodar bundle install
e instalar as dependências em Ruby.
Ferramentas para JavaScript
Aplicativos iOS feitos em JavaScipt (ex: React Native) fazem uso de um arquivo chamado package.json
que define todas as dependências necessárias.
{
...
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "15.4.2",
"react-native": "0.42.3",
...
}
}
O package.json
deve ser versionado para que se tenha builds reproduzíveis.