Canalización de CI/CD de Android con acciones de Github: desmitificación de las acciones de Github | por Ankur Anurag

La generación e implementación de compilaciones de Android siempre ha sido un problema para los desarrolladores de Android. Se desperdician cientos de horas de desarrollo mientras miramos la pantalla de la computadora esperando que se complete nuestra compilación. Aquí es donde CI/CD viene en nuestra ayuda. Hay varias herramientas para construir canalizaciones de CI/CD como Jenkins, CircleCI, Bitrise, TravisCI, etc. Github Actions es nuevo en esta lista. Hace que todo el proceso de creación de una canalización sea muy fácil y completamente gratuito para los repositorios públicos. Puedes encontrar los precios aquí. En este artículo, mostraría cómo usar Github Actions para automatizar su proceso de desarrollo e implementación de Android. Puede crear el archivo de flujo de trabajo yendo a la pestaña Acciones > Configuración de flujo de trabajo.Esto lo llevará al editor YAML donde definiremos nuestro flujo de trabajo de acuerdo a nuestras necesidades. Una estructura básica de flujo de trabajo se parece a esto: # Asigne un nombre a su flujo de trabajo Nombre: Canalización de desarrollo e implementación de Android # Defina en qué evento de Github se activará el flujo de trabajo en: empujar: ramas: [ master ]pull_request:ramas: [ main ]trabajos:trabajo1:nombre: Trabajo 1 se ejecuta: ubuntu-lateststeps:- nombre: ‘Comprobar entradas’ejecutar: echo ‘Trabajo 1’

Tenga en cuenta que el archivo YAML es sensible a la sangría

  1. Agregue un activador para eventos de Github

en:empujar:ramas: [ master ]pull_request:ramas: [ main ]También puede agregar disparadores para fusionar, solicitar extracción, etc.2. Agregue soporte de activación manual (si es necesario)workflow_dispatch:inputs:app_id:description: ‘El ID de la aplicación/nombre del paquete’ requerido: truebranch:description: ‘La rama desde la que desea construir’ requerido: truedefault: ‘master’3. Código de pagoRama predeterminada:- Nombre: código de verificación para usos específicos de la rama: acciones/pago@v2 Rama específica (nombre de la rama de las entradas del paso 2, también se puede codificar)- Nombre: código de verificación para usos específicos de la rama: acciones/pago@v2con: ref: ${{github.event.inputs.branch}}4. Configurar el JDKTenemos una predefinido Acción en el mercado de acciones de Github. Hace el trabajo de descargar el JDK, descomprimirlo, configurar la ruta JAVA_HOME, etc. Nombre: Configurar JDKuses: actions/setup-java@v2with:distribution: ‘zulu’java-version: ’11’5. Configure el SDK de AndroidTenemos una acción también para este paso. Descargar SDK, desempaquetar, variables de entorno, aceptar licencias, todo está cubierto. – Nombre: Configurar Android SDKuses: android-actions/setup-android@v26. Almacenamiento en caché de Gradle (opcional)Para eso usaremos este acción .– usa: actions/cache@v2with:ruta: |~/.gradle/caches~/.gradle/wrapperkey: ${{ runner.os }}-gradle-${{ hashFiles(‘**/*.gradle*’ , ‘**/gradle-wrapper.properties’) }}restore-keys: |${{ runner.os }}-gradle-7. Haz que Gradle sea ejecutableUsaremos el comando bash para esto.- nombre: Hacer ejecutable gradlew ejecutar: chmod +x ./gradlew8. Generar el artefactoPara paquete: – Nombre: Generate App-Bundle.run: ./gradlew app:bundleRelease –stacktrace Para APK: – Nombre: Generate App-APK.run: ./gradlewassembleRelease –stacktrace9. Firma el artefactoSi ha definido la configuración de la firma en el archivo Gradle, este paso no es necesario. Para firmar el APK/Bundle, necesitará la contraseña, el alias y la contraseña de KeyStore. Puede definirlas como variables globales en Github a nivel de organización o repositorio. Estos secretos están encriptados y son seguros para usar en acciones de Github. Para crear secretos para que usted visite este enlace– nombre: Firmar aplicación bundlerun: |jarsigner -keystore app/*.jks \-storepass ${{ secrets.KEY_STORE_PASSWORD }} -keypass ${{ secrets.KEY_PASSWORD }} \app/build/outputs/bundle/release/app- release.aab ${{ secrets.ALIAS }}Hay uno acción por lo mismo. También podemos usarlo.- nombre: Sign app bundleuses: r0adkll/sign-android-release@v1id: sign_appwith:releaseDirectory: app/build/outputs/bundle/releasesigningKeyBase64: ${{ secrets.SIGNING_KEY }}alias: ${{ secrets.ALIAS }}keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}keyPassword: ${{ secrets.KEY_PASSWORD }}env:# anula la versión predeterminada de las herramientas de compilación (29.0.3) — opcionalBUILD_TOOLS_VERSION: «30.0.2»10. Sube el artefacto a Github (opcional)En caso de que desee acceder al paquete/APK generado en los pasos anteriores, puede cargarlo en Github. Está disponible para su descarga dentro del flujo de trabajo.- Nombre: Paquete de cargaUsos: acciones/cargar-artefacto@v2con:nombre: ruta_del_paquete_de_aplicación_firmada: app/build/outputs/bundle/release/app-release.aab11. Crear aprobación para Playstoreusamos un acción predefinida para este propósito.

Para una versión de PlayStore, necesitamos un archivo json de cuenta de servicio creado por la consola Playstore. Los pasos requeridos no están incluidos en este artículo. Puede seguir este vínculo para crear el archivo JSON de la cuenta de servicio.

Pasos:- Nombre: Crear service_account.jsonejecutar: echo ‘${{ secrets.SERVICE_ACCOUNT_JSON }}’ > service_account.json – nombre: Implementar en Play Storeusos: r0adkll/upload-google-play@v1.0.15with:serviceAccountJson: service_account . jsonpackageName: ${{ github.event.inputs.app_id }}releaseFiles: app/build/outputs/bundle/release/*.aabtrack: internalwhatsNewDirectory: whatsnew/mappingFile: app/build/outputs/mapping/release/mapping.txtinAppUpdatePriority: 5

Deja una respuesta

Tu dirección de correo electrónico no será publicada.