Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: La firma de código de Apple con Fastlane se CodeBuild utiliza GitHub para el almacenamiento de certificados
fastlane
En este ejemplo, se muestra cómo configurar la firma de código de Apple mediante Fastlane en un CodeBuild proyecto que se ejecuta en una flota de Mac, GitHub como almacenamiento para certificados y perfiles de aprovisionamiento.
Requisitos previos
Para completar este tutorial, debe configurar lo siguiente:
-
¿Un Cuenta de AWS
-
Un GitHub repositorio privado para almacenar certificados
-
fastlane instalado en el proyecto: Guía
para instalar fastlane
Paso 1: Configura Fastlane Match con GitHub en tu máquina local
Fastlane Match
En este ejemplo de configuración, configuraremos y usaremos un repositorio de Git para almacenamiento.
-
Inicialice match en el proyecto:
fastlane match init -
Cuando se te pida, elige el modo de GitHub almacenamiento.
-
Actualice su `Matchfile `para usar GitHub:
git_url("https://github.com/your-username/your-certificate-repo.git") storage_mode("git") type("development") # The default type, can be: appstore, adhoc, enterprise or development
nota
Asegúrate de introducir la URL HTTPS del repositorio de Git para que fastlane se autentique y clone correctamente. De lo contrario, puede aparecer un error de autenticación al intentar utilizar coincidencia.
Paso 2: configuración del Fastfile
Cree o actualice el “Fastfile” con el siguiente flujo.
CodeBuildActivado, tendrás que ejecutar Fastlane Match cada vez que crees y firmes tu aplicación. La forma más sencilla de hacerlo es agregar la acción match al flujo que compila la aplicación.
default_platform(:ios) platform :ios do before_all do setup_ci end desc "Build and sign the app" lane :build do match(type: "appstore", readonly: true) gym( scheme: "YourScheme", export_method: "app-store" ) end end
nota
Asegúrese de agregar setup_ci a la sección before_all de Fastfile para que la acción de búsqueda de coincidencias funcione correctamente. Esto garantiza el uso de un llavero de Fastlane temporal con los permisos adecuados. Si no lo usa, es posible que se produzcan errores de compilación o resultados incoherentes.
Paso 3: ejecución del comando fastlane match para generar los certificados y perfiles correspondientes
El comando fastlane match para el tipo indicado (por ejemplo, desarrollo, tienda de aplicaciones, adhoc, empresa) generará el certificado y el perfil si no están disponibles en el almacén remoto. Fastlane almacenará los certificados y perfiles. GitHub
bundle exec fastlane match appstore
La ejecución del comando será interactiva y fastlane solicitará establecer una frase de contraseña para descifrar los certificados.
Paso 4: creación del archivo de aplicación para el proyecto
Cree o agregue el archivo de aplicación que corresponda a su proyecto.
-
Cree o agregue Gymfile
, Appfile , Snapfile , Deliverfile en función de los requisitos de creación del proyecto. -
Confirmación de los cambios al repositorio remoto.
Paso 5: creación de variables de entorno en Secrets Manager
Cree tres secretos para almacenar la cookie de sesión de fastlane y la frase de contraseña coincidente. Para obtener información sobre cómo crear un secreto en Secrets Manager, consulte Creación de un secreto de AWS Secrets Manager.
-
Acceda a la cookie de sesión de fastlane de la siguiente forma.
-
Clave del secreto:
FASTLANE_SESSION -
Valor secreto: cookie de sesión generada al ejecutar el siguiente comando en el equipo local.
nota
Este valor está disponible después de la autenticación en un archivo local:
~/.fastlane/spaceship/my_appleid_username/cookie.fastlane spaceauth -u <Apple_account>
-
-
Frase de contraseña de Fastlane Match: para permitir que Fastlane Match descifre los certificados y perfiles almacenados en el repositorio de Git, es necesario añadir la contraseña de cifrado que configuró en el paso de configuración de Match a las variables de entorno del proyecto. CodeBuild
-
Clave del secreto:
MATCH_PASSWORD -
Valor del secreto:
<match passphrase to decrypt certificates>La frase de contraseña se establece al generar los certificados en el paso 3.
-
-
Fastlane
MATCH_GIT_BASIC_AUTHORIZATION: establezca una autorización básica para match:-
Clave del secreto:
MATCH_GIT_BASIC_AUTHORIZATION -
Valor secreto: el valor debe ser una cadena codificada en base64 de su nombre de usuario y su token de acceso personal (PAT) en formato
username:password. Puede generarlo utilizando el comando siguiente:echo -nyour_github_username:your_personal_access_token| base64Puedes generar tu PAT en la GitHub consola en Tu perfil > Configuración > Configuración de desarrolladores > Token de acceso personal. Para obtener más información, consulte la siguiente guía: https://docs.github.com/en/ authentication/keeping-your-account-and-data-secure/managing -. your-personal-access-tokens
-
nota
Al crear los secretos anteriores en Secrets Manager, recuerde dar un nombre de secreto con el siguiente prefijo: /CodeBuild/
Paso 6: creación de una flota de computación
Cree la flota de computación para el proyecto.
-
En la consola, vaya a CodeBuild y cree una nueva flota de cómputos.
-
Elija
macOScomo sistema operativo y seleccione un tipo de computación y una imagen adecuados.
Paso 7: Crea un proyecto en CodeBuild
Crea tu proyecto en CodeBuild.
Abre la AWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home
. -
Cree un proyecto de compilación. Para obtener más información, consulte Creación de un proyecto de compilación (consola) y Ejecutar una compilación (consola).
-
Configura tu proveedor de código fuente (por ejemplo,). GitHub CodeCommit Este es el repositorio de origen de proyectos de iOS y no el repositorio de certificados.
-
En Environment (Entorno):
-
Elija Capacidad reservada.
-
En Flota, seleccione la flota creada anteriormente.
-
Proporcione el nombre del rol de servicio que CodeBuild se va a crear para usted.
-
Proporcione las siguientes variables de entorno.
-
Nombre:
MATCH_PASSWORD, Valor:<secrets arn>, Tipo: Secrets Manager (el ARN secreto se creó en el paso 5 para MATCH_PASSWORD) -
Nombre:
FASTLANE_SESSION, Valor:<secrets arn>, Tipo: Secrets Manager (el ARN de secretos se creó en el paso 5 para FASTLANE_SESSION) -
Nombre:
MATCH_GIT_BASIC_AUTHORIZATION, Valor:<secrets ARN>, Tipo: Secrets Manager Secrets ARN (creado en el paso 5 para)MATCH_GIT_BASIC_AUTHORIZATION
-
-
-
En Buildspec, agregue lo siguiente:
version: 0.2 phases: install: commands: - gem install bundler - bundle install build: commands: - echo "Building and signing the app..." - bundle exec fastlane build post_build: commands: - echo "Build completed on date" artifacts: files: - '*/.ipa' name: app-$(date +%Y-%m-%d)
Paso 8: Ejecuta la compilación
Ejecute la compilación. Puedes revisar el estado de la compilación e iniciar sesión CodeBuild.
Una vez que se haya completado el trabajo, podrá ver el registro de este.
Resolución de problemas
-
Si tienes problemas para acceder al GitHub repositorio, comprueba bien tu token de acceso personal y la variable de entorno MATCH_GIT_BASIC_AUTHORIZATION.
-
Si tiene problemas al descifrar certificados, asegúrese de establecer la frase contraseña correcta en la variable de entorno MATCH_PASSWORD.
-
En caso de problemas con la firma de código, compruebe que la cuenta de desarrollador de Apple tiene los certificados y los perfiles necesarios y que el identificador de agrupación del proyecto de Xcode coincide con el del perfil de aprovisionamiento.
Consideraciones de seguridad
Tenga en cuenta los siguientes aspectos de seguridad en este tutorial.
-
Mantenga su GitHub repositorio de certificados privado y audite periódicamente el acceso.
-
Considere usarlo AWS Secrets Manager para almacenar información confidencial, como MATCH_PASSWORD y FASTLANE_SESSION.
En este ejemplo, se proporciona una configuración para la firma de código de iOS con Fastlane y se CodeBuild utiliza GitHub para el almacenamiento de certificados. Es posible que tengas que ajustar algunos pasos en función de los requisitos y el CodeBuild entorno específicos de tu proyecto. Este enfoque aprovecha los AWS servicios para mejorar la seguridad y la integración dentro del AWS ecosistema.