Anunciando soporte de Dart para GitHub Actions
GitHub Actions es una oferta popular para integración continua (CI) para repositorios de GitHub. Hoy, anunciamos un setup-dart oficial…
GitHub Actions es una oferta popular para integración continua (CI) para repositorios de GitHub. Hoy, anunciamos una acción setup-dart oficial del equipo de Dart. Esta acción soporta la descarga, instalación y configuración del SDK de Dart, para que puedas ejecutar jobs de build y test de Dart con facilidad en GitHub Actions.
Si eres autor de un paquete de Dart para pub.dev, te animamos a habilitar pruebas de CI con GitHub Actions para tu repositorio, para darte a ti (y a los usuarios del paquete) una señal sobre si tu paquete está saludable. Los jobs de CI en GitHub Actions son gratuitos para repositorios públicos.
Introducción a setup-dart
#Si tienes un repositorio de GitHub con una app de Dart, puedes habilitar pruebas de CI con GitHub Actions y la acción setup-dart con solo unos clics. Aquí tenemos un nuevo repositorio de GitHub llamado
myapp, que contiene el punto de partida para una pequeña aplicación generada con la herramienta de Dart
ejecutando
dart create --template console-full myapp.
Luego, abre la interfaz web de GitHub y haz clic en la pestaña Actions:
Justo debajo de la introducción, deberías ver una sección que sugiere un workflow para un repositorio de Dart:
Haz clic en el botón Set up this workflow, y serás llevado a la interfaz de GitHub para añadir un nuevo archivo
.github/workflow/dart.yml. Este es un archivo YAML que define el workflow de GitHub Actions que se ejecutará en el repositorio. Revisemos cada uno de los componentes sugeridos por el archivo de
workflow
de la plantilla.
Primero definimos el nombre del workflow, que se mostrará en la interfaz de administración de Actions:
name: Dart
Luego, definimos cuándo se debe ejecutar el workflow (el evento que activa el workflow). Aquí el flujo está configurado para ejecutarse siempre que haya un push a la rama main, o un PR para la rama main. Personalmente he encontrado que cuando tengo problemas para que un workflow se ejecute, a menudo es porque he escrito mal el nombre de la rama.
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Luego sigue una lista de jobs, cada uno con un nombre (aquí test). Cada job tiene su propia definición, que consiste en una lista de dónde ejecutar el job (este job se ejecuta en Ubuntu Linux) y qué pasos tomar:
jobs:
test:
runs-on: ubuntu-latest
steps:
En cuanto a la prueba específica, primero hacemos checkout del repositorio bajo test, y luego ejecutamos la nueva acción setup-dart. Esta descarga e instala el SDK de Dart, y luego añade el
CLI de dart y el directorio global de pub al path. Aquí no especificamos qué SDK de Dart instalar, así que la acción instalará el SDK más reciente del canal estable.
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
Luego podemos proceder a realizar nuestras pruebas deseadas, como formateo, análisis y pruebas unitarias:
- name: Install dependencies
run: dart pub get
- name: Verify formatting
run: dart format — output=none — set-exit-if-changed .
- name: Analyze project source
run: dart analyze
- name: Run tests
run: dart test
Para un ejemplo completo, consulta nuestro workflow para package:characters.
Especificar la versión del SDK
#La acción setup-dart soporta especificar la versión de Dart que deseas instalar. Esto puede tomar una de dos formas:
Una versión específica, por ejemplo
2.9.0o2.12.0–259.12.beta-
La última versión de un canal de release, por ejemplo
stableobeta
Para especificar una versión usa el argumento sdk, directamente o como parte de una matriz de pruebas:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
sdk: [2.10.0, stable, beta]
runs-on: $
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1.0
with:
sdk: $
El resultado de esta matriz son nueve jobs ejecutados por separado:
Ahora que todo está pasando, puede que quieras añadir una insignia de estado
a tu archivo README.md para mostrar el estado de las pruebas.
Soluciones alternativas
#GitHub Actions es una de varias soluciones populares para integración continua. Otras con soporte para el SDK de Dart incluyen Travis, AppVeyor, y CodeShip. Para pruebas de apps de Flutter, las opciones incluyen Codemagic de Nevercode, Cirrus CI, y Bitrise. GitHub Actions para apps de Flutter está habilitado por acciones contribuidas por la comunidad, como flutter-action.
Eso es todo por ahora. Esperamos que disfrutes este nuevo soporte de CI para Dart, y si tienes algún comentario o problema con setup-dart, cuéntanos en el issue tracker.
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.