
Como o GitLab com fastlane coleta, assina e publica aplicativos iOS na App Store.
recentemente tivemos com GitLab e . Aqui veremos como criar e executar um aplicativo iOS e publicá-lo no TestFlight. Confira que legal , pego a compilação e recebo uma atualização para a versão de teste do aplicativo no mesmo iPad Pro onde o desenvolvi.
Aqui nós pegamos com o qual gravei o vídeo.
Algumas palavras sobre a configuração da Apple Store
Vamos precisar de um aplicativo na App Store, certificados de distribuição e um perfil de provisionamento para unir tudo.
O mais difícil aqui é configurar as permissões de assinatura na App Store. Espero que você possa descobrir isso por si mesmo. Se você for novo, indicarei a direção certa, mas não falaremos sobre as complexidades do gerenciamento de certificados da Apple aqui, e eles estão mudando constantemente. Este post irá ajudá-lo a começar.
Meus aplicativos
Precisa de um aplicativo no App Store Connect para ter um ID para configurar .xcodebuild. O perfil e o ID do aplicativo combinam compilações de código, preços e disponibilidade e a configuração do TestFlight para distribuir aplicativos de teste aos usuários. Não faça testes públicos, testes privados são suficientes se você tiver um grupo pequeno, configuração simples e não precisar de permissões adicionais da Apple.
Perfil provisório
Além da configuração do aplicativo, você precisa das chaves de distribuição e desenvolvimento do iOS criadas na seção Certificados, Identificadores e Perfis do Apple Developer Console. Todos esses certificados podem ser combinados em um perfil de provisionamento.
Os usuários que serão autenticados precisam da capacidade de criar certificados, caso contrário, as etapas você verá um erro.
outras opções
Além desse método simples, existem outras formas de configurar certificados e perfis. Portanto, se você trabalha de maneira diferente, pode ser necessário reajustar. Mais importante, você precisará de uma configuração .xcodebuild, que apontará para os arquivos necessários, e as chaves devem estar disponíveis no computador de compilação para o usuário em cujo nome o executor está sendo executado. Utilizamos o fastlane para assinatura digital, e caso tenha problemas ou queira saber mais, confira o detalhamento .
Neste exemplo, estou usando a abordagem , mas para uso real, provavelmente mais adequado .
Preparando GitLab e fastlane
Preparando CI Runner
Depois de coletar todos esses dados, passamos à configuração do GitLab Runner em um dispositivo MacOS. Infelizmente, criar aplicativos iOS só é possível no MacOS. Mas tudo pode mudar, e se você espera avanços nessa área, acompanhe projetos como и , e nossa tarefa interna .
Configurar o corredor é muito fácil. Siga atualizado .
Observação. O corredor deve usar um programa em execução shell. Isso é necessário para compilar o iOS no macOS para funcionar diretamente como usuário e não por meio de contêineres. Se você estiver usando shell, a compilação e o teste são feitos como o usuário executor, diretamente no host de compilação. Não é tão seguro quanto os contêineres, então é melhor virar para que você não perca nada.
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner startO Apple Keychain deve ser configurado neste host com acesso às chaves que o Xcode precisa para criar. A maneira mais fácil de testar isso é fazer login como o usuário que executará a compilação e tentar compilar manualmente. Se o sistema solicitar acesso às chaves, selecione "Sempre permitir" para que o CI funcione. Pode valer a pena entrar e observar o primeiro par de pipelines para garantir que eles não peçam mais um chaveiro. O problema é que a Apple não facilita para trabalharmos com o modo automático, mas quando você configurar, tudo ficará bem.
Fastlane init
Para usar o fastlane em um projeto, execute fastlane init. Apenas siga especialmente na seção sobre , porque precisamos de um lançamento rápido e previsível por meio de um pipeline de CI automático.
No diretório do projeto, execute estes comandos:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane initfastlane solicitará uma configuração básica e então criará uma pasta fastlane no projeto com três arquivos:
1. fastlane/Appfile
Não há nada complicado aqui. Apenas certifique-se de que seu ID Apple e ID do aplicativo estejam corretos.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("your-email@your-domain.com") # Your Apple email address2. fastlane/Fastfile
Fastfile define as etapas de construção. Usamos muitos recursos integrados do fastlane, então tudo está claro aqui também. Criamos uma linha que recebe certificados, constrói e carrega no TestFlight. Você pode dividir esse processo em diferentes tarefas, se necessário. Todas essas operaçõesget_certificates, get_provisioning_profile, gym и upload_to_testflight) já estão incluídos no fastlane.
Atividade get_certificates и get_provisioning_profile associado à abordagem de assinatura . Se você estiver usando ou outra coisa, faça alterações.
default_platform(:ios)
platform :ios do
desc "Build the application"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end3. fastlane/Gymfile
Este é um arquivo opcional, mas eu o criei manualmente para alterar o diretório de saída padrão e colocar a saída na pasta atual. Isso simplifica o CI. Se estiver interessado, leia sobre gym e seus parâmetros em .
https://docs.fastlane.tools/actions/gym/Nossa .gitlab-ci.yml
Portanto, temos um executor de CI para o projeto e estamos prontos para testar o pipeline. Vamos ver o que temos .gitlab-ci.yml:
stages:
- build
variables:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
GIT_STRATEGY: clone
build:
stage: build
script:
- bundle install
- bundle exec fastlane flappybuild
artifacts:
paths:
- ./FlappyBird.ipaEstá tudo bem! , usamos a estratégia clone com programa em execução shellpara que tenhamos um espaço de trabalho limpo para cada compilação e apenas chame flappybuild fastlane como visto acima. Como resultado, obtemos a montagem, assinatura e implantação da montagem mais recente no TestFlight.
Também obtemos um artefato e o salvamos com a montagem. Note que o formato .ipa é um executável ARM assinado que não é executado no simulador. Se você deseja a saída do simulador, basta adicionar o destino de compilação que o produz e, em seguida, incluí-lo no caminho do artefato.
Outras variáveis de ambiente
Existem algumas variáveis de ambiente aqui nas quais tudo funciona.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION
Para autenticar na App Store e carregar no TestFlight, você precisa de autenticação para fastlane. Para isso, crie uma senha de aplicativo que será utilizada no CI. Detalhes .
Se você tiver autenticação de dois fatores, crie uma variável FASTLANE_SESSION (instruções lá).
FASTLANE_USER и FASTLANE_PASSWORD
Que chamado de perfil de inicialização e certificados a pedido, você precisa definir variáveis FASTLANE_USER и FASTLANE_PASSWORD. Detalhes . Isso não é necessário se você estiver usando um método de assinatura diferente.
Em conclusão
Você pode ver como tudo funciona .
Espero que isso tenha sido útil e inspirado você a trabalhar com builds iOS no projeto GitLab. aqui está outro para fastlane, apenas no caso. Talvez você queira usar CI_BUILD_ID (para compilações incrementais) para .
Outro recurso legal do fastlane é para a App Store, que são muito fáceis de configurar.
Conte-nos sobre sua experiência nos comentários e compartilhe ideias para melhorar o desenvolvimento de aplicativos GitLab para iOS.
Fonte: habr.com
