Como o GitLab com fastlane coleta, assina e publica aplicativos iOS na App Store.
recentemente tivemos
Aqui nós pegamos
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
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
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
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
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 start
O 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
No diretório do projeto, execute estes comandos:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane 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("[email protected]") # Your Apple email address
2. 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
default_platform(:ios)
platform :ios do
desc "Build the application"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end
3. 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.ipa
Está tudo bem! clone
com programa em execução shell
para 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 FASTLANE_USER
и FASTLANE_PASSWORD
. Detalhes
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 CI_BUILD_ID
(para compilações incrementais) para
Outro recurso legal do fastlane é
Conte-nos sobre sua experiência nos comentários e compartilhe ideias para melhorar o desenvolvimento de aplicativos GitLab para iOS.
Fonte: habr.com