Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Blogs Banner

Faça Deploy Contínuo Para iOS Com o Testflight

O desenvolvimento de aplicações móveis cresce num rítmo chocante. Um desafio interessante é manter as práticas ágeis nesse tipo de ambiente, onde os recursos são sempre limitados. Precisamos contar com o auxílio de simuladores, servidores mac, configurações da Apple, e assim por diante.

A Thoughtworks é pioneira no uso de metodologias ágeis como a automação de processos e entrega contínua em projetos web, e isso não seria diferente para mobile.

Em nossos projetos mobile, fazemos deploy contínuo para o aparelho do cliente. Isso deixando-o mais próximo do processo de desenvolvimento, possibilitando feedbacks mais cedo, além de permitir testar a aplicação em um ambiente real. Daí então ele pode decidir facilmente quando lançar sua maravilhosa app ao mundo.

Legal né? Então let's do it!

Premissas para esse post:

  • Você tem uma conta iOS Developer Enterprise da Apple - necessária para ter um certificado Ad Hoc da Apple, que possibilita deploy no Tesflight.
  • Você tem o Jenkins, Go ou outro CI de sua preferencia instalado.

Passos:

#1 - Site da Apple

#2 - Site do Testflight

#3 - Configurando seu projeto

#4 - Configurando seu CI

Passo #1 Site da Apple

1. Logue em sua conta da Apple e clique em "Certificates, Identifiers & Profiles".

2. Crie um certificado de distribuição

Clique em "Certificates" e adicione um novo certificado de distribuição.

Baixe o arquivo .p12 e instale-o.

3. Crie uma App ID

Em Identifiers, adicione um novo App ID.

Informe os campos necessários. O BundleID pode ser encontrado no XCode, na aba General do seu target.

Podemos criar um Wildcard AppID, informando o Bundle ID como "com.thoughtworks.*", por exemplo.

4. Adicione devices à sua conta da Apple

Em "Devices", adicione um novo. Informe o nome e o UDID.

Caso tenha dificuldade para encontrar o UDID de seu celular, veja o link http://whatsmyudid.com/

5. Crie um Provisioning Profile Ad Hoc ou In-House.

Em "Provisioning Profiles", adicione um novo.

Selecione "Ad Hoc". Nos passos seguintes, escolha sua AppID, seu certificado de distribuição, os devices aos quais quer poder instalar sua app, gere o profile e baixe-o. Dê duplo clicks no profile para adicioná-lo à sua Library.

Passo #2 Site do TestFlight

1. Crie uma conta no Testflight e, em seguida, crie um time clicando no botão "Create a new team".

2. Clique no link People e crie um nova lista de distribuição, clicando no botão "Add distribution list". Dê um nome à lista e escolha os usuários aos quais quer disponibilizar a versão da app a cada build no Jenkins.

3. Clique no seu avatar e visite o link Account Settings. Clique no link Devices e siga as instruções. Após fazer login com seu celular em sua conta, ele deverá aparecer na página:

Passo #3 Configurando XCode

Se quiser executar os testes em um device real, você precisa adicionar seu Certificado de Desenvolvedor da Apple ao projeto:

1. Vá nas configurações do seu target em seu projeto no XCode.

2. Na aba General, selecione seu time:

3. Adicione seu Provisioning Profile e Certificado de Distribuição

Na aba Build Settings, em Code Signing, informe o Code Signing Identity de release e o Provisioning Profile:

Passo #4 Configurando seu CI

Usaremos o Jenkins nesse post.

1. Crie um novo projeto "Build a free-style software project".

2. Configure o clone do seu repositório:

3. Instale o xctool - uma substituição da ferramenta xcodebuild que torna mais fácil fazer build e testar sua aplicação iOS:

$ brew install xctool

4. Adicione os seguintes comandos na fase de build:

a. Dê permissão de acesso ao seu keychain - opcional, você pode clicar em "Permitir" quando o build solicitar.

security unlock-keychain -p <MAC_USER_PASSWORD> $HOME/Library/Keychains/login.keychain

b. Execute os testes

xctool -project Example.xcodeproj -scheme Example test -test-sdk iphonesimulator

c. Faça o build

xctool -project Example.xcodeproj -sdk iphoneos -scheme Example build CONFIGURATION_BUILD_DIR=~/Desktop

d. Assine a aplicação

xcrun -sdk iphoneos PackageApplication -v ~/Desktop/Example.app -o ~/Desktop/Example.ipa --sign "iPhone Distribution: <CERTIFICATE_NAME>" --embed ~/Desktop/Example_Ad_Hoc.mobileprovision

e. Faça upload para o TestFlight usando a API dele

curl http://testflightapp.com/api/builds.json

   -F file=@"$HOME/Desktop/Example.ipa" # caminho para o arquivo .ipa

   -F api_token='<YOUR_UPLOAD_API_TOKEN>' # encontre em https://www.testflightapp.com/account/#api

   -F team_token='<YOUR_TEAM_TOKEN>' # encontre em https://www.testflightapp.com/dashboard/team/edit/

   -F notes="`git log -1 --pretty=%B`" # retorna a mensagem do último commit

   -F distribution_lists='devs' # o mesmo nome da sua lista de distribuição no Testflight

Execute "Build Now" e o script deve funcionar como esperado.

Dica

Caso tenha problemas ao instalar a app em seu celular, tente usar o iPhone Configuration Utility para ver os logs dele.

Isso é tudo por enquanto. Estou curioso, qual sua opnião sobre o processo? Você tem uma abordagem diferente para atingir o mesmo objetivo?

Compartilhe seus pensamentos conosco logo abaixo...

Aviso: As afirmações e opiniões expressas neste artigo são de responsabilidade de quem o assina, e não necessariamente refletem as posições da Thoughtworks.

Atualize-se com nossos insights mais recentes