Cómo GitLab con fastlane recopila, firma y publica aplicaciones de iOS en la App Store.
recientemente tuvimos
aquí tomaremos
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
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
En este ejemplo estoy usando el enfoque
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
Configurar el corredor es muy simple. Seguir actual
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
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
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
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
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! 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
Si tiene autenticación de dos factores, cree una variable FASTLANE_SESSION
(instrucciones allí).
FASTLANE_USER
и FASTLANE_PASSWORD
Que FASTLANE_USER
и FASTLANE_PASSWORD
. Detalles
en conclusión
Puedes ver cómo funciona todo.
Espero que esto haya sido útil y te haya inspirado a trabajar con compilaciones de iOS en un proyecto de GitLab. Aquí está otro CI_BUILD_ID
(para compilaciones incrementales) a
Otra característica interesante de fastlane es
Cuéntanos en los comentarios tu experiencia y comparte tus ideas para mejorar GitLab para el desarrollo de aplicaciones iOS.
Fuente: habr.com