Publicación de aplicacións iOS na App Store con GitLab e fastlane

Publicación de aplicacións iOS na App Store con GitLab e fastlane

Como GitLab con fastlane recolle, asina e publica aplicacións de iOS na App Store.

Hai pouco tivemos publicación sobre como crear e executar rapidamente unha aplicación de Android con GitLab e pista rápida. Aquí veremos como crear e executar unha aplicación para iOS e publicala en TestFlight. Comproba o chulo que é Estou facendo un cambio nun iPad Pro con GitLab Web IDE, tomo a montaxe e recibo unha actualización da versión de proba da aplicación no mesmo iPad Pro onde a desenvolvín.

Aquí levaremos aplicación sinxela de iOS en Swift, con quen gravei o vídeo.

Algunhas palabras sobre a configuración da Apple Store

Necesitaremos unha aplicación App Store, certificados de distribución e un perfil de aprovisionamento para unir todo.

O máis difícil aquí é configurar os dereitos de sinatura na App Store. Espero que poidas descubrir isto por ti mesmo. Se es novo, indicareiche na dirección correcta, pero non falaremos aquí das complejidades da xestión dos certificados de Apple, e están a cambiar constantemente. Esta publicación axudarache a comezar.

As miñas aplicacións

Necesitas unha aplicación en App Store Connect para ter un ID para a configuración .xcodebuild. O perfil e o ID da aplicación combinan compilacións de código, prezos e dispoñibilidade e configuración de TestFlight para distribuír aplicacións de proba aos usuarios. Non fagas probas públicas, as probas privadas serán suficientes se tes un grupo pequeno, unha configuración sinxela e non necesitas permisos adicionais de Apple.

Perfil de inicialización

Ademais da configuración da aplicación, necesitas claves de desenvolvemento e distribución de iOS creadas na sección Certificados, identificadores e perfís da consola de programadores de Apple. Todos estes certificados pódense combinar nun perfil de aprovisionamento.

Os usuarios que se autenticarán deben poder crear certificados, en caso contrario, os pasos cert e suspirar verás un erro.

outras opcións

Ademais deste sinxelo método, hai outras formas de configurar certificados e perfís. Entón, se traballas doutro xeito, quizais teñas que adaptarte. O máis importante é que precisa configuración .xcodebuild, que indicará os ficheiros necesarios, e o chaveiro debe estar dispoñible no ordenador de compilación para o usuario baixo cuxo nome está a executar o corredor. Para a sinatura dixital usamos fastlane, e se hai problemas ou queres saber máis, consulta os seus detalles documentación sobre sinaturas dixitais.

Neste exemplo estou usando o enfoque cert e suspirar, pero para o uso real probablemente sexa máis adecuado combinar.

Preparando GitLab e fastlane

Preparando CI Runner

Recollidos todos estes datos, pasamos á configuración do corredor GitLab no dispositivo MacOS. Desafortunadamente, só podes facer aplicacións para iOS en MacOS. Pero todo pode cambiar, e se esperas avances nesta área, mantén un ollo en proxectos como xcbuild и asinar, e a nosa tarefa interna gitlab-ce#57576.

Configurar o corredor é moi sinxelo. Sigue a actualidade instrucións para configurar GitLab Runner en macOS.

Nota. O corredor debe usar un programa executable shell. Isto é necesario para crear iOS en macOS para funcionar directamente como usuario en lugar de a través de contedores. Se está a usar shell, a construción e as probas realízanse como usuario do corredor, directamente no servidor de compilación. Non é tan seguro como os contedores, así que é mellor que busques documentación de seguridadepara que non falte de 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

Apple Keychain debe configurarse neste host con acceso ás claves que Xcode necesita para construír. A forma máis sinxela de probar isto é iniciar sesión como o usuario que executará a compilación e tentar creala manualmente. Se o sistema pide acceso ao chaveiro, seleccione Permitir sempre que CI funcione. Podería valer a pena entrar e ver o primeiro par de canalizacións para asegurarse de que xa non piden o chaveiro. O problema é que Apple non nos facilita o uso do modo automático, pero unha vez que o poña en marcha, todo estará ben.

fastlane init

Para usar Fastlane nun proxecto, executa fastlane init. Só segue instrucións para instalar e executar fastlane, especialmente na sección sobre Gemfile, porque necesitamos un lanzamento rápido e previsible a través dunha canalización de CI automatizada.

No directorio do teu proxecto, executa estes comandos:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane pedirá unha configuración básica e despois creará un cartafol fastlane no proxecto con tres ficheiros:

1. fastlane/Appfile

Aquí non hai nada complicado. Só asegúrese de que o seu ID de Apple e o ID da aplicación sexan correctos.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile define os pasos de construción. Usamos moitas funcións integradas de fastlane, polo que aquí tamén está todo claro. Creamos unha liña que recibe certificados, realiza a montaxe e cárgaa a TestFlight. Podes dividir este proceso en diferentes tarefas se é necesario. Todas estas operacións (get_certificates, get_provisioning_profile, gym и upload_to_testflight) xa están incluídos en fastlane.

Actividade get_certificates и get_provisioning_profile relacionados co enfoque de sinatura cert e suspirar. Se estás a usar combinar ou o que sexa, fai cambios.

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 é un ficheiro opcional, pero creeino manualmente para cambiar o directorio de saída predeterminado e colocar a saída no cartafol actual. Isto simplifica CI. Se estás interesado, lee sobre gym e os seus parámetros en documentación.

https://docs.fastlane.tools/actions/gym/

Noso .gitlab-ci.yml

Entón, temos un CI runner para o proxecto e estamos preparados para probar o pipeline. A ver que temos dentro .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

Todo listo! Establecemos o formato en UTF-8 para fastlane segundo sexa necesario, use estratexia clone con programa de execución shell, para que teñamos un espazo de traballo limpo para cada asemblea, e simplemente chamar flappybuild Fastlane, como se viu arriba. Como resultado, obtemos a montaxe, a sinatura e a implantación da última montaxe en TestFlight.

Tamén conseguimos o artefacto e gardámolo coa montaxe. Teña en conta que o formato .ipa é un executable ARM asinado que non se executa no simulador. Se queres saír para o simulador, só tes que engadir o obxectivo de compilación que o produce e, a continuación, inclúoo na ruta do artefacto.

Outras variables de ambiente

Aquí hai un par de variables de ambiente que fan que todo funcione.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

A autenticación para fastlane é necesaria para autenticarse na App Store e cargar a TestFlight. Para iso, cree un contrasinal para a aplicación que se utilizará en CI. Detalles aquí.

Se tes unha autenticación de dous factores, crea unha variable FASTLANE_SESSION (instrucións alí).

FASTLANE_USER и FASTLANE_PASSWORD

Que cert e suspirar chamado perfil de inicialización e certificados a petición, cómpre establecer as variables FASTLANE_USER и FASTLANE_PASSWORD. Detalles aquí. Isto non é necesario se está a usar un método de sinatura diferente.

En conclusión

Podes ver como funciona todo no meu exemplo sinxelo.

Espero que isto fose útil e che inspirou a traballar con compilacións de iOS nun proxecto GitLab. Aquí tes outro Consellos de CI para fastlane, por se acaso. Quizais queiras usar CI_BUILD_ID (para compilacións incrementais) to incrementa automaticamente a versión.

Outra característica interesante de fastlane é capturas de pantalla automáticas para a App Store, que son moi fáciles de configurar.

Cóntanos nos comentarios a túa experiencia e comparte as túas ideas para mellorar o desenvolvemento de aplicacións de GitLab para iOS.

Fonte: www.habr.com

Engadir un comentario