Como GitLab con fastlane recolle, asina e publica aplicacións de iOS na App Store.
Hai pouco tivemos
Aquí levaremos
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
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
Neste exemplo estou usando o enfoque
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
Configurar o corredor é moi sinxelo. Sigue a actualidade
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
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
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
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
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! 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
Se tes unha autenticación de dous factores, crea unha variable FASTLANE_SESSION
(instrucións alí).
FASTLANE_USER
и FASTLANE_PASSWORD
Que FASTLANE_USER
и FASTLANE_PASSWORD
. Detalles
En conclusión
Podes ver como funciona todo
Espero que isto fose útil e che inspirou a traballar con compilacións de iOS nun proxecto GitLab. Aquí tes outro CI_BUILD_ID
(para compilacións incrementais) to
Outra característica interesante de fastlane é
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