Publicando aplicativos iOS na App Store com GitLab e fastlane

Publicando aplicativos iOS na App Store com GitLab e fastlane

Como o GitLab com fastlane coleta, assina e publica aplicativos iOS na App Store.

recentemente tivemos uma postagem sobre como criar e executar rapidamente um aplicativo Android com GitLab e fastlane. Aqui veremos como criar e executar um aplicativo iOS e publicá-lo no TestFlight. Confira que legal Eu faço uma alteração em um iPad Pro com GitLab Web IDE, 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 aplicativo iOS simples em Swiftcom 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 certo e suspiro 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 documentação de assinatura digital.

Neste exemplo, estou usando a abordagem certo e suspiro, mas para uso real, provavelmente mais adequado partida.

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 xcbuild и Eu assino, e nossa tarefa interna gitlab-ce#57576.

Configurar o corredor é muito fácil. Siga atualizado instruções para configurar o GitLab Runner no macOS.

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 documentação de segurançapara 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 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 instruções para instalar e executar o fastlaneespecialmente na seção sobre GemfileName, 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 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 certo e suspiro. Se você estiver usando partida 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
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 documentação.

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! Definimos o formato UTF-8 para fastlane conforme necessário, 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 aqui.

Se você tiver autenticação de dois fatores, crie uma variável FASTLANE_SESSION (instruções lá).

FASTLANE_USER и FASTLANE_PASSWORD

Que certo e suspiro chamado de perfil de inicialização e certificados a pedido, você precisa definir variáveis FASTLANE_USER и FASTLANE_PASSWORD. Detalhes aqui. Isso não é necessário se você estiver usando um método de assinatura diferente.

Em conclusão

Você pode ver como tudo funciona no meu exemplo simples.

Espero que isso tenha sido útil e inspirado você a trabalhar com builds iOS no projeto GitLab. aqui está outro dicas de IC para fastlane, apenas no caso. Talvez você queira usar CI_BUILD_ID (para compilações incrementais) para versão de incremento automático.

Outro recurso legal do fastlane é capturas de tela automáticas 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

Adicionar um comentário