Despliega automáticamente tus aplicaciones móviles con prácticas modernas DevOps en AWS — Parte 2

Claudia Márquez
Caleidos
Published in
3 min readJan 11, 2023

En un post anterior vimos cómo realizar la integración continua de una aplicación móvil desarrollada en Flutter. En este post veremos como realizar el despliegue automático de nuestra aplicación al Play Store utilizando Fastlane.

Crear la llave para subir la aplicación al Play Store.

Sigue los pasos en la documentación de Fastlane para obtener el archivo de credenciales en formato JSON que permitirá la subida de la aplicación en el Play Store. Una vez que tengamos este archivo, debemos seguir los siguiente pasos para guardarlo de manera segura en el servicio de Parameter Store. Este archivo NO debe ser versionado en el repositorio de Git por motivos de seguridad.

Pasos para crear el secreto para guardar la clave de la firma:

1. Debemos encriptar los contenidos del archivo play-store-credentials.json en base64 con el siguiente comando:

base64 ~/play-store-credentials.json > encoded-play-store-credentials.txt

2. Ingresa al servicio AWS SSM Parameter Store y selecciona el botón Create Parameter

3. En el campo name escribir /FASTLANE/PLAY_STORE_KEY

4. En Type seleccionar SecureString

5. En el campo Value pegar el contenido del archivo encoded-keystore.txt

Configurar los archivos para configuración de Fastlane

Debemos crear los siguientes archivos en nuestro repositorio de Flutter para instalar Fastlane.

Crea el archivo android/Gemfile: Este archivo se encarga de instalar fastlane.

source “https://rubygems.org
gem "fastlane"

Crea el archivo android/fastlane/Appfile: Este archivo debe tener el nombre de la aplicación definido en el archivo AndroidManifest.xml

package_name(“com.caleidos.myapp”) # Tiene que coincidir con el nombre definido en el AndroidManifest.xml

Crea el archivo android/fastlane/Fastfile: Este es el archivo que tiene los pasos que seguirá fastlane para publicar la aplicación. Tenemos que indicar la variable de entorno en la cual almacenamos el archivo con las credenciales para la conexión, el track al que queremos subir el app y apuntamos al aab que se produjo en el paso de integración continua.

default_platform(:android)

platform :android do
desc "Subir al Play Store para prueba beta"
lane :deploy do
upload_to_play_store(
json_key_data: ENV['PLAY_STORE_UPLOAD_KEY'],
track: 'alpha',
aab: '../build/app/outputs/bundle/release/app-release.aab'
)
end
end

Crea el archivo deployspec.yaml: Este archivo tiene los comandos que seguirá CodeBuild para desplegar la aplicación utilizando fastlane.

version: 0.2
phases:
install:
runtime-versions:
ruby: 2.6
commands:
- cd android
- gem install bundler
- bundle install
build:
commands:
- KEY=`aws ssm get-parameter --name "$PLAY_STORE_KEY" --with-decryption --query 'Parameter.Value' --output text`
- export PLAY_STORE_UPLOAD_KEY=$(echo "$KEY" | base64 --decode)
- bundle exec fastlane $TRACK
artifacts:
files:
- build/app/outputs/bundle/release/*
discard-paths: yes

Una vez que hayas creado estos cambios, asegúrate de realizar el commit en el repositorio de GIT y subirlos al repositorio de AWS CodeCommit creado en el post anterior.

Actualizar el pipeline de despliegue

Vamos a actualizar el pipeline de despliegue creado en el post anterior para que tenga los pasos para el despliegue de la aplicación.

Ve a la plantilla Cloudformation desplegada en el primer post y haz clic en la opción Update para actualizar la plantilla.

Descarga la plantilla actualizada que incluye los nuevos pasos para el despliegue.

Haz clic en Replace current template y luego en la opción Upload a template file. Selecciona la plantilla descargada.

Haz clic en el botón Next hasta que puedas seleccionar la opción I acknowledge that AWS CloudFormation might create IAM resources y luego haz clic en el botón Update Stack.

Las siguientes actualizaciones de los pipelines realizarán el despliegue al play store.

--

--