Criar normalmente o projeto no portal da Apple juntamente com todos seus certificados e profiles.
- Obs.: Sempre salvar e documentar todos os certificados na Wiki do projeto.
Para iniciar este processo, você deve colar toda a pasta com a configuração do fastlane juntamente com o arquivo Gemfile na raiz do seu projeto. Em caso de projetos que utilizam Flutter ou React native, o conteúdo deve ser colado na pasta "ios", ou iniciar o processo do zero seguindo a documentação. Para obter instruções de instalação do fastlane, consulte Instalando fastlane. É recomendado seguir a instalação via Bundler, além de instalar um gerenciador de versões do Ruby o rbenv.
Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env localizado dentro da pasta fastlane.
APP_IDENTIFIERIdentifier do app. Ex.: br.com.example
SCHEMEScheme do app. Obs.: Em apps Flutter o padrão é Runner.
WORKSPACEWorkspace do app. Ex: Runner.xcworkspace.
TEAM_IDO ID do time pode ser encontrado no Portal Apple Developer, na sessão Membership details.
IC_TEAM_IDEssa informação pode ser um pouco difícil de encontrar, mas é possível busca-la neste endpoint. Para ter acesso, é necessário estar logado na conta. _Obs.: A informação deve ser encontrada dentro do atributo "contentProviderId". Você pode utilizar alguma ferramenta para formatar JSON visando facilitar a leitura.
-
ARTIFACT_DEV_NAMENome do arquivo .ipa de desenvolvimento. Ex.: nomeDoAppDev.ipa. Este nome servirá apenas pra localizar o artefato no diretório e não interfere em nada no nome da aplicação. -
ARTIFACT_PROD_NAMENome do arquivo .ipa de produção. Ex.: nomeDoAppProd.ipa. Este nome servirá apenas pra localizar o artefato no diretório e não interfere em nada no nome da aplicação.
MATCH_PASSWORDEsta senha será usada pelo Fastlane para criptografar todos os certificados antes de salvar no repositório. Obs.: Caso o certificado (.p12) tiver uma senha, é recomendado colocar a mesma nesta variável.
MATCH_KEYCHAIN_PASSWORDEsta senha será usada pelo Fastlane para descriptografar quando a nossa ferramenta de CI buscar estes certificados. Deve ser a mesma do MATCH_PASSWORD
APP_STORE_CONNECT_APPLE_IDEsta informação pode ser encontrada em: App Store Connect > Apps > Meu App > Informações dp App > Apple ID.
AUTH_APP_STORE_CONNECT_API_KEYEsta variável de ser preenchida com o caminho do arquivo JSON que deverá ser criado no seguinte formato:
{
"key_id": "ID DA CHAVE",
"issuer_id": "EMISSOR DA CHAVE",
"key": "CONTEÚDO DA CHAVE",
"duration": 1200, //Não é necessário mudar
"in_house": false //Não é necessário mudar
}
Para obter essa chave, é necessário ser um administrador da conta de desenvolvimento da Apple. Esta opção estará disponível em: App Store Connect -> User and Access -> Keys (Conforme a imagem abaixo). O arquivo que é gerado é um .p8 que contém um token (É possível abrir em qualquer editor de texto) e é com ele que deverá ser preenchido o atributo key do JSON acima. Os outros atributos são preenchidos com os valores obtidos no portal conforme a foto.
URL_DOMAINO valor desta variável pode ser encontrado na url do repositório do projeto (conforme foto abaixo). O valor à ser preenchido deve ser somente a string que sucede o '@'.
Exemplo de resultado:
Ao criar o setup do projeto, deverá ser criado todos os certificados e profiles no portal developer normalmente. Após isso, será necessário adicionar todos eles em um repositório git (pode ser o mesmo do projeto, ou o mais recomendado, que é criar um um novo só para estes arquivos), para que o fastlane (através do match) possa utiliza-los e gerencia-los sempre que necessário. Para adicionar os certificados no repositório, (já com o ambiente configurado e variáveis de ambiente preenchidas), deverá ser utilizado os seguintes comandos:
bundle exec fastlane match import --skip_certificate_matching true --type appstoreObs.: O comando mostrado acima, se aplica apenas para o certificado de distribuição na appstore. O mesmo comando deve ser utilizado para os certificados de adhoc e development, substituindo apenas o type para o correspondente.
Ao fazer isso, será necessário passar três arquivos (.cer, .p12 e .mobileprovision) para cada um dos três comandos (--type appstore, --type adhoc e --type development).
-
- Deverá ser preenchido o valor de todas as variáveis do projeto no portal da Azure em Pipelines -> Library
parameters:
- name: softAppDist
displayName: Upload to Soft App Dist
type: string
default: 'Yes'
values:
- 'Yes'
- 'No'
- name: testFlight
displayName: Upload to TestFlight
type: string
default: 'No'
values:
- 'Yes'
- 'No'
- script: |
cd app/ios/fastlane #Caminho para a pasta do fastlane
echo "URL_DOMAIN=$URL_DOMAIN" > .env
echo "AZURE_TOKEN=$AZURE_TOKEN" >> .env
echo "ARTIFACT_PROD_NAME=$ARTIFACT_PROD_NAME" >> .env
echo "ARTIFACT_DEV_NAME=$ARTIFACT_DEV_NAME" >> .env
echo "APP_IDENTIFIER=$APP_IDENTIFIER" >> .env
echo "WORKSPACE=$WORKSPACE" >> .env
echo "SCHEME=$SCHEME" >> .env
echo "TEAM_ID=$TEAM_ID" >> .env
echo "IC_TEAM_ID=$IC_TEAM_ID" >> .env
echo "MATCH_PASSWORD=$MATCH_PASSWORD" >> .env
echo "MATCH_KEYCHAIN_PASSWORD=$MATCH_KEYCHAIN_PASSWORD" >> .env
echo "APP_STORE_CONNECT_APPLE_ID=$APP_STORE_CONNECT_APPLE_ID" >> .env
echo "AUTH_APP_STORE_CONNECT_API_KEY=$AUTH_APP_STORE_CONNECT_API_KEY" >> .env
displayName: '.env fastlane file creation'
- task: Bash@3
condition: eq('${{ parameters.softAppDist }}', 'Yes')
inputs:
targetType: 'inline'
script: |
bundle install
bundle exec fastlane build_distribution
displayName: 'Build iOS'
- task: deploy-app-binary@0
condition: eq('${{ parameters.softAppDist }}', 'Yes')
inputs:
projectId: "ID do projeto"
apiKey: "Key do projeto"
filePath: app/ios/nomeDoApp.ipa (local do .ipa)
displayName: Upload app to App Dist system
- task: Bash@3
condition: eq('${{ parameters.testFlight }}', 'Yes')
inputs:
targetType: 'inline'
script: |
bundle install
bundle exec fastlane build_appStore
displayName: 'Build iOS'
- Download project keys Utilizado para baixar e instalar os certificados e profiles existentes no projeto.
bundle exec fastlane download_keys-
Build Distribution (AppDist, App center e Firebase) Função utilizada para gerar uma compilação (.ipa) do projeto utilizando o certificado de adHoc. Esta funcão é utilizada apenas para fazer a compilação e posteriormente ser usada pelo CI (Azure Popelines) para submissão para outras ferramentas (Soft App Distribution e Firebase App Distribution).
-
Algumas observações: Por padrão a compilação é colocada dentro da pasta do projeto e utiliza a identificação inserida na variável "ARTIFACT_DEV_NAME", que está sendo utilizado no atributo "output_name"
bundle exec fastlane build_distribution-
Build App Store (TestFlight) Função utilizada para gerar uma compilação (.ipa) do projeto utilizando o certificado de appStore. Está funcão será utilizada pelo CI (Azure DevOps) para gerar o arquivo e envia-lo para o Test Flight.
- Algumas observações: Não esqueça de versionar o app corretamente antes de submete-lo. Por padrão a compilação é colocada dentro da pasta do projeto e utiliza a identificação inserida na variável "ARTIFACT_PROD_NAME", que está sendo utilizado no atributo "output_name"
bundle exec fastlane build_appStorePara executar o pipeline, você pode ir até a área "Pipelines" no portal Azure, selecionar a branch e os atributos desejados e executar, conforme a imagem abaixo:
Para disponibilizar o app para testes , é necessário que o aplicativo tenha sido criado na plataforma Soft App Distribution . Aqui está um exemplo de como criar:
Obs.: Os atributos sublinhados na última imagem, são utilizados na configuração da task "deploy-app-binary@0" da Azure no arquivo de review e deploy (.yaml) do projeto.








