Capturas de pantalla y publicación automatizada para pub.dev
Tenemos un par de nuevas características disponibles en pub.dev a partir de hoy: ahora puedes declarar capturas de pantalla para un paquete, habilitando un…
Tenemos un par de funcionalidades nuevas disponibles en pub.dev a partir de hoy: Ya puedes declarar capturas de pantalla para un paquete, habilitando un enfoque más visual para la búsqueda. Y el flujo de publicación ahora puede ser totalmente automatizado, gracias a GitHub Actions.
Añadir capturas de pantalla a pub.dev
#Uno de los objetivos principales de pub.dev es facilitar encontrar el paquete adecuado para un propósito determinado. Cuando buscas widgets u otros componentes visuales, las imágenes juegan un papel importante. Ahora estamos mostrando capturas de pantalla en los resultados de búsqueda de paquetes, para que sea más fácil que nunca encontrar un paquete.
Capturas de pantalla en la búsqueda de paquetes y en la página del paquete
#Las miniaturas de las capturas de pantalla ahora aparecen en los resultados de búsqueda y también puedes filtrar la búsqueda para listar solo paquetes con capturas de pantalla.
La miniatura de la captura de pantalla también se muestra en la página del paquete, y hacer clic en la miniatura abre un carrusel de imágenes con todas las capturas de pantalla.
Declarar capturas de pantalla en pubspec.yaml
#
Añadir capturas de pantalla a un paquete es realmente sencillo. Declara los archivos en pubspec.yaml bajo el campo
screenshots con una description y un path. A continuación se muestra un ejemplo del paquete
animations.
name: animations
...
screenshots:
- description: 'Examples of the container transform pattern.'
path: example/screenshots/container_transform_lineup.png
- description: 'Examples of the fade pattern.'
path: example/screenshots/fade_lineup.png
...
Para más detalles consulta dart.dev/tools/pub/pubspec#screenshots.
Publicación automatizada para pub.dev
#Miles de miembros de la comunidad de Dart publican paquetes en pub.dev, para beneficio de todos los desarrolladores de Dart y Flutter. Tradicionalmente, estos publicadores de paquetes han publicado en pub.dev ejecutando un comando local en la terminal,
dart pub publish, y autenticándose con su cuenta de Google. Detrás de escena se almacenaba un refresh token
en un archivo de configuración en su máquina de desarrollo, lo que les permitía publicar una nueva versión sin tener que autenticarse de nuevo. Este flujo es sencillo y fácil de entender, pero requiere varios pasos manuales. Nos complace introducir un nuevo flujo de publicación automatizada, que permite publicar nuevas versiones en pub.dev directamente desde una GitHub Action. Esto tiene varios beneficios:
Cada lanzamiento se etiqueta automáticamente con etiquetas de lanzamiento consistentes en GitHub
Es fácil configurar un flujo de revisión y aprobación para publicar nuevas versiones.
-
El proceso de publicación se autentica mediante un token firmado por GitHub, garantizando que no haya credenciales almacenadas en disco.
Haciendo segura la publicación automatizada
#Actualmente, algunos usuarios han recurrido a almacenar el archivo de configuración pub-credentials.json que contiene el
refresh token en una variable de entorno secreta en GitHub Actions. De esta manera, podían escribir un flujo de GitHub Action que recuperaba el archivo de configuración y lo usaba para publicar una nueva versión del paquete. Aunque este flujo funciona técnicamente, las herramientas no fueron diseñadas con esto en mente y el flujo tiene múltiples desventajas:
-
Los archivos
pub-credentials.jsonse pueden usar para publicar cualquier paquete para el que el autor tenga permiso de publicación, no solo el paquete publicado desde el flujo configurado. -
Si se filtran, los
pub-credentials.jsonse pueden usar para publicar nuevas versiones y nuevos paquetes, suplantando al usuario que creó el archivopub-credentials.json. -
La interfaz para revocar el refresh token en
pub-credentials.jsonno es fácil de encontrar.
De hecho, ha ocurrido más de una vez que un paquete fue publicado y accidentalmente incluyó el archivo
pub-credentials.json del autor, porque el autor extrajo el archivo dentro de un trabajo de CI. Publicar un paquete junto con las credenciales necesarias para actualizarlo es una vulnerabilidad de seguridad bastante grave y eventualmente
implementamos detección de fugas en dart pub publish.
Nuestro nuevo soporte de publicación automatizada mitiga estos problemas, haciendo posible autenticarse en pub.dev usando uno de los siguientes:
-
Una cuenta de servicio de GCP que se puede usar desde la mayoría de los recursos de GCP como Google Cloud Build u otros entornos en la nube, como Azure o AWS.
Estos flujos permiten la publicación automatizada basándose en tokens secretos de larga duración que pueden ser fácilmente abusados si se filtran por accidente. Si despliegas tu flujo de publicación en una máquina personalizada, por supuesto puedes confiar en claves de cuenta de servicio exportadas, pero se debe tener mucho cuidado para asegurar adecuadamente dichas claves.
Habilitando publicación segura
#Puedes habilitar la publicación automatizada desde GitHub con solo unos pocos pasos — consulta dart.dev/go/automated-publishing para todos los detalles.
Más de Dart
El eslabón perdido de Flutter: Por qué Dart full-stack lo cambia todo
Con el soporte de Cloud Functions for Firebase para Dart, podemos tratar toda la pila como una sola aplicación unificada.
Anunciando Genkit Dart: Construye aplicaciones AI full-stack con Dart y Flutter
Anunciando el lanzamiento en preview de Genkit Dart, un framework de AI de código abierto para construir aplicaciones full-stack con AI para cualquier plataforma.