Anunciando o suporte do Dart ao GitHub Actions
O GitHub Actions é uma opção popular de integração contínua (CI) para repositórios do GitHub. Hoje, anunciamos uma action oficial setup-dart…
GitHub Actions é uma opção popular de integração contínua (CI) para repositórios do GitHub. Hoje, anunciamos uma action setup-dart oficial mantida pela equipe do Dart. Essa action permite baixar, instalar e configurar o SDK do Dart, para que você possa executar jobs de build e de testes do Dart com facilidade no GitHub Actions.
Se você é autor de um pacote Dart para o pub.dev, incentivamos a ativar testes de CI com o GitHub Actions no seu repositório, para dar a você (e aos usuários do pacote) um sinal sobre a saúde do seu pacote. Os jobs de CI no GitHub Actions são gratuitos para repositórios públicos.
Apresentando o setup-dart
#
Se você tem um repositório do GitHub com um app Dart, pode ativar testes de CI com o GitHub Actions e a action setup-dart com apenas alguns cliques. Aqui temos um novo repositório do GitHub chamado
myapp, que contém o ponto de partida de um pequeno aplicativo gerado com a ferramenta do Dart
ao executar
dart create --template console-full myapp.
Em seguida, abra a interface web do GitHub e clique na aba Actions:
Logo abaixo da introdução, você deve ver uma seção sugerindo um workflow para um repositório Dart:
Clique no botão Set up this workflow e você será levado à interface do GitHub para adicionar um novo arquivo
.github/workflow/dart.yml. Esse é um arquivo YAML que define o workflow do GitHub Actions a ser executado no repositório. Vamos revisar cada um dos componentes sugeridos pelo arquivo de
workflow
modelo.
Primeiro, definimos o nome do workflow, que será exibido na interface de administração de Actions:
name: Dart
Em seguida, definimos quando o workflow deve ser executado (o evento que dispara o workflow). Aqui, o fluxo está configurado para rodar sempre que houver um push para a branch main, ou um PR para a branch main. Pessoalmente, descobri que, quando tenho problemas para fazer um workflow rodar, geralmente é porque escrevi errado o nome da branch.
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Em seguida, vem uma lista de jobs, cada um com um nome (aqui test). Cada job tem sua própria definição, composta por onde o job será executado (este job roda no Ubuntu Linux) e quais passos seguir:
jobs:
test:
runs-on: ubuntu-latest
steps:
Quanto ao teste em si, primeiro fazemos o checkout do repositório em test e, depois, executamos a nova action setup-dart. Ela baixa e instala o SDK do Dart e, em seguida, adiciona a CLI
dart e o diretório global do pub ao path. Aqui não especificamos qual SDK do Dart instalar, então a action vai instalar o SDK mais recente do canal estável.
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
Podemos então executar os testes desejados, como formatação, análise e testes unitários:
- 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 um exemplo completo, veja nosso workflow para o package:characters.
Especificando a versão do SDK
#A action setup-dart permite especificar a versão do Dart que você deseja instalar. Isso pode ter duas formas:
Uma versão específica, por exemplo
2.9.0ou2.12.0–259.12.beta-
A versão mais recente de um canal de lançamento, por exemplo
stableoubeta
Para especificar uma versão, use o argumento sdk, diretamente ou como parte de uma matriz de testes:
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: $
O resultado dessa matriz são nove jobs executados separadamente:
Agora que tudo está passando, você pode querer adicionar um badge de status
ao seu arquivo README.md para exibir o status dos testes.
Soluções alternativas
#O GitHub Actions é uma das várias soluções populares de integração contínua. Outras com suporte ao SDK do Dart incluem Travis, AppVeyor e CodeShip. Para testar apps Flutter, as opções incluem o Codemagic da Nevercode, o Cirrus CI e o Bitrise. O GitHub Actions para apps Flutter é viabilizado por actions criadas pela comunidade, como o flutter-action.
É isso por enquanto. Esperamos que você goste deste novo suporte de CI para o Dart e, se tiver algum feedback ou problema com o setup-dart, conte para a gente no gerenciador de issues.
Mais do Dart
Anunciando o Genkit Dart 1.0: crie apps agênticos prontos para produção com Dart e Flutter
Anunciando a versão estável 1.0 do Genkit Dart, um framework open source para criar apps agênticos e recursos de IA prontos para produção em Dart.
Skills CLI 1.0: empacote e distribua skills de agentes de IA para seus pacotes
Inclua skills oficiais de agentes de IA diretamente nos seus pacotes para melhorar a descoberta.