Promoção no ar
Tempo restante da oferta:
20 Horas
43 Min
12 Seg
Assinar →

Automatizando tarefas de um projeto C# com o Cake

Veja como o Cake pode auxiliar na automação de tarefas de um projeto .NET Core.

Wladimilson M. Nascimento 9 anos atrás

O desenvolvimento de uma aplicação pode ser um processo repetitivo: compilação, teste e execução/publicação. Vendo apenas esses pontos, o processo pode ser algo simples, mas ao longo do desenvolvimento, toda esta repetição pode ter consumido horas.

Quando nos deparamos com uma situação assim, chegou o momento de procuramos formas de automatizar este processo e economizarmos um esforço não útil para a aplicação.

Curso C# (C Sharp) Básico Conhecer o curso

Hoje em dia existem várias soluções de automação para essas tarefas repetitivas de um projeto. Neste artigo conheceremos o Cake.

Cake

O Cake (C# Make) é um sistema de automação, multiplataforma e open source, que permite definir das tarefas em C#, se tornando assim o sistema de automação ideal para o desenvolvedor desta linguagem.

Aliases e Extensibilidade

Como é voltado para aplicações da plataforma .NET, o Cake já define uma série de métodos que representam ações em aplicações desta plataforma. Por exemplo, para aplicar o restore em um projeto .NET Core, pode ser definido a tarefa abaixo:

Task("Restore")
   .Does(() =>
    {
        DotNetCoreRestore("./ExemploCake.csproj");
    });

O método DotNetCoreRestore usado acima é chamado de “alias”, e faz parte dos alises de DotNetCore. Existem aliases para uma infinidade de tarefas, e você pode ver todos na documentação do Cake.

Caso não exista um alias nativo para a ação que queira executar, a plataforma também suporta os chamados Addins, que são métodos de extensão criados pela comunidade.

Se mesmo assim não encontrar um método para a sua tarefa, você pode criar seu próprio alias, que nada mais é que um método de extensão do C#. E se fizer isso, contribua com a comunidade disponibilizando ele no NuGet.

Agora que conhecemos o Cake, vamos ver um exemplo rápido do seu uso.

Colocando a mão na massa

Para este artigo vou testar o Cake uma aplicação console simples:

dotnet new console -n ExemploCake
cd ExemploCake

Nela o Cake pode ser adicionado com o comando do PowerShell abaixo, caso esteja no Windows:

Invoke-WebRequest https://cakebuild.net/download/bootstrapper/windows -OutFile build.ps1

Ou o comando de terminal abaixo, caso esteja no Linux:

curl -Lsfo build.sh https://cakebuild.net/download/bootstrapper/linux

Ou caso esteja no Mac OS X:

curl -Lsfo build.sh https://cakebuild.net/download/bootstrapper/osx

Com isso, será adicionado um arquivo build.ps1 no Windows e build.sh nos ambientes Unix. Será este arquivo que executaremos quando as tarefas estiverem automatizadas.

Curso C# (C Sharp) Intermediário Conhecer o curso

Criando um script Cake

Com o Cake adicionado na aplicação, crie nela um arquivo chamado build.cake. Será neste arquivo que as tarefas devem ser adicionadas. Por exemplo:

var target = Argument("target", "Default");

Task("Default")
  .Does(() =>
{
  Information("Hello World!");
});

RunTarget(target);

A tarefa acima é simples, como é possível supor, ela apenas exibe o famoso "Hello World" no console/terminal quando o Cake for executado:

Windows

.uild.ps1

Linux / Mac OS X

# Agusta a permissão
chmod +x build.sh

# Executa o arquivo.
./build.sh

No código, a primeira linha:

var target = Argument("target", "Default");

Define a tarefa padrão, caso alguma não seja definida durante a execução, que pode ser feito da seguinte forma:

./build.sh -target Default

Por ser código C#, podemos definir elementos que são válidos nesta linguagem com uma variável:

var target = Argument("target", "Default");

var projectFile = "./ExemploCake.csproj";

Task("Default")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  Information("Hello World!");
});

Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});

RunTarget(target);

Além de definirmos uma variável:

var projectFile = "./ExemploCake.csproj";

Também foi definido que antes de executar a tarefa “Default”:

Task("Default")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  Information("Hello World!");
});

Deve ser executa a tarefa “Restore-Application”, que aplica o restore na aplicação:

Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});

Pode-se cascatear uma tarefa após a outra, quantas verses for necessário:

var target = Argument("target", "Default");

var projectFile = "./ExemploCake.csproj";

Task("Default")
  .IsDependentOn("Run-Application")
  .Does(() =>
{
  Information("Hello World!");
});

Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});


Task("Run-Application")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  DotNetCoreRun(projectFile);
});

RunTarget(target);

Conclusão

Agora que a configuração do Cake está definida e que já temos uma estrutura básica, ele pode ser expandido com adição de novas tarefas, como aplicação de teste e ou commit dos códigos alterados.

Curso C# (C Sharp) Avançado Conhecer o curso

Caso tenha gostado da ferramenta, você pode ver mais funcionalidades dela na sua ótima documentação.

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 20h 43min 12s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora