Publicación de aplicaciones iOS en App Store con GitLab y fastlane

Publicación de aplicaciones iOS en App Store con GitLab y fastlane

Cómo GitLab con fastlane recopila, firma y publica aplicaciones de iOS en la App Store.

recientemente tuvimos publicación sobre cómo crear y ejecutar rápidamente una aplicación de Android con GitLab y carril rápido. Aquí veremos cómo crear y ejecutar una aplicación de iOS y publicarla en TestFlight. Mira lo genial que es Estoy haciendo un cambio en un iPad Pro con GitLab Web IDE, tomo el ensamblaje y obtengo una actualización de la versión de prueba de la aplicación en el mismo iPad Pro donde la desarrollé.

aquí tomaremos aplicación iOS sencilla en Swift, con quien grabé el vídeo.

Algunas palabras sobre la configuración de Apple Store

Necesitaremos una aplicación App Store, certificados de distribución y un perfil de aprovisionamiento para unir todo.

Lo más difícil aquí es configurar los derechos de firma en la App Store. Espero que puedas resolver esto por ti mismo. Si es nuevo, le indicaré la dirección correcta, pero aquí no hablaremos de las complejidades de la gestión de certificados de Apple, que cambian constantemente. Esta publicación te ayudará a comenzar.

Mis aplicaciones

Necesitas una aplicación en App Store Connect para tener un ID para la configuración .xcodebuild. El perfil y el ID de la aplicación combinan compilaciones de código, precios y disponibilidad, y la configuración de TestFlight para distribuir aplicaciones de prueba a los usuarios. No realice pruebas públicas; las pruebas privadas serán suficientes si tiene un grupo pequeño, una configuración sencilla y no necesita permisos adicionales de Apple.

Perfil de inicialización

Además de la configuración de la aplicación, necesita claves de desarrollo y distribución de iOS creadas en la sección Certificados, identificadores y perfiles de la consola de desarrollador de Apple. Todos estos certificados se pueden combinar en un perfil de aprovisionamiento.

Los usuarios que serán autenticados deben poder crear certificados; de lo contrario, los pasos certificado y suspiro verás un error.

otras opciones

Además de este sencillo método, existen otras formas de configurar certificados y perfiles. Entonces, si trabajas de manera diferente, es posible que tengas que adaptarte. Lo más importante es que necesitas configuración. .xcodebuild, que apuntará a los archivos necesarios, y el llavero debe estar disponible en la computadora de compilación para el usuario bajo cuyo nombre se ejecuta el ejecutor. Para la firma digital utilizamos fastlane, y si hay problemas o quieres saber más consulta sus detalles documentación sobre firmas digitales.

En este ejemplo estoy usando el enfoque certificado y suspiro, pero para uso real probablemente sea más adecuado partido.

Preparando GitLab y fastlane

Preparando CI Runner

Una vez recopilados todos estos datos, pasamos a la configuración del GitLab runner en el dispositivo MacOS. Desafortunadamente, sólo puedes crear aplicaciones de iOS en MacOS. Pero todo puede cambiar, y si esperas avances en este ámbito, mantente atento a proyectos como xcbuild и firmar, y nuestra tarea interna gitlab-ce#57576.

Configurar el corredor es muy simple. Seguir actual instrucciones para configurar GitLab Runner en macOS.

Nota. El corredor debe utilizar un programa ejecutable. shell. Esto es necesario para compilar iOS en macOS para que funcione directamente como usuario en lugar de a través de contenedores. Si estas usando shell, la compilación y las pruebas se realizan como usuario ejecutor, directamente en el host de compilación. No es tan seguro como los contenedores, así que mejor navega documentación de seguridadpara que no te pierdas 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 en este host con acceso a las claves que Xcode necesita para compilar. La forma más sencilla de probar esto es iniciar sesión como el usuario que ejecutará la compilación e intentar compilarla manualmente. Si el sistema solicita acceso al llavero, seleccione Permitir siempre que CI funcione. Podría valer la pena entrar y observar los primeros oleoductos para asegurarse de que ya no pidan el llavero. El problema es que Apple no nos pone fácil el uso del modo Auto, pero una vez lo pongas en marcha todo irá bien.

inicio fastlane

Para usar fastlane en un proyecto, ejecute fastlane init. Solo sigue instrucciones para instalar y ejecutar fastlane, especialmente en la sección sobre Archivo de gemas, porque necesitamos un lanzamiento rápido y predecible a través de un proceso de CI automatizado.

En el directorio de su proyecto, ejecute estos comandos:

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

fastlane solicitará una configuración básica y luego creará una carpeta fastlane en el proyecto con tres archivos:

1. fastlane/Appfile

Aquí no hay nada complicado. Solo asegúrese de que su ID de Apple y su ID de aplicación sean 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 los pasos de construcción. Usamos muchas funciones integradas de Fastlane, por lo que aquí también todo está claro. Creamos una línea que recibe certificados, realiza el ensamblaje y lo carga en TestFlight. Puedes dividir este proceso en diferentes tareas si es necesario. Todas estas operaciones (get_certificates, get_provisioning_profile, gym и upload_to_testflight) ya están incluidos en fastlane.

Actividad get_certificates и get_provisioning_profile relacionado con el enfoque de firma certificado y suspiro. Si estás usando partido o lo que sea, haz 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 es un archivo opcional, pero lo creé manualmente para cambiar el directorio de salida predeterminado y colocar la salida en la carpeta actual. Esto simplifica la CI. Si está interesado, lea sobre gym y sus parámetros en documentación.

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

nuestro .gitlab-ci.yml

Entonces, tenemos un corredor de CI para el proyecto y estamos listos para probar la tubería. Veamos que tenemos en .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 está bien! Configuramos el formato en UTF-8 para fastlane según sea necesario, usa estrategia clone con programa en ejecución shell, para que tengamos un espacio de trabajo limpio para cada ensamblaje, y simplemente llamemos flappybuild fastlane, como se ve arriba. Como resultado, obtenemos el ensamblaje, la firma y la implementación del último ensamblaje en TestFlight.

También obtenemos el artefacto y lo guardamos con el montaje. Tenga en cuenta que el formato .ipa es un ejecutable ARM firmado que no se ejecuta en el simulador. Si desea resultados para el simulador, simplemente agregue el objetivo de compilación que lo produce y luego inclúyalo en la ruta del artefacto.

Otras variables de entorno

Aquí hay un par de variables de entorno que hacen que todo funcione.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Se requiere autenticación para fastlane para autenticarse en App Store y cargar en TestFlight. Para hacer esto, cree una contraseña para la aplicación que se utilizará en CI. Detalles aquí.

Si tiene autenticación de dos factores, cree una variable FASTLANE_SESSION (instrucciones allí).

FASTLANE_USER и FASTLANE_PASSWORD

Que certificado y suspiro llamado perfil de inicialización y certificados a pedido, debe configurar las variables FASTLANE_USER и FASTLANE_PASSWORD. Detalles aquí. Esto no es necesario si utiliza un método de firma diferente.

en conclusión

Puedes ver cómo funciona todo. en mi sencillo ejemplo.

Espero que esto haya sido útil y te haya inspirado a trabajar con compilaciones de iOS en un proyecto de GitLab. Aquí está otro consejos de IC para fastlane, por si acaso. Es posible que desee utilizar CI_BUILD_ID (para compilaciones incrementales) a incrementar automáticamente la versión.

Otra característica interesante de fastlane es capturas de pantalla automáticas para la App Store, que son muy fáciles de configurar.

Cuéntanos en los comentarios tu experiencia y comparte tus ideas para mejorar GitLab para el desarrollo de aplicaciones iOS.

Fuente: habr.com

Añadir un comentario