Então Bolo . Muitos já ouviram falar, muitos queriam tentar, mas adiaram. Claro, se você tem trabalhado para TeamCity ou Jenkins o tempo todo e continua, então por que reinventar algo que já funciona muito bem? Ame sua vida e seja feliz. Mas, digamos, um novo projeto apareceu em sua vida amada, um novo prazo, um mínimo de pontos da história antes do lançamento, mas você não tem experiência com um novo colecionador? Bolo veio a calhar neste caso .
Farei uma reserva imediata de que este artigo não o levará imediatamente a usar o Cake , como eu fiz, e muitos de meus colegas não foram alertados por artigos que saíram antes. Principalmente porque não faz sentido mudar para um projeto que não faz mal e que funciona de forma consistente. Colete seu Jenkins favorito e tudo correrá bem. Mas depois desse artigo, deixe-me ficar na minha cabeça que o Cake existe. Mais uma vez, ele não foi a lugar nenhum, já sabe muito e é mais fácil trabalhar com ele. Muito mais fácil do que costumava ser.
Como é o bolo? Provavelmente, qualquer desenvolvedor que não esteja atolado no mundo .Net encontrará sua analogia: gradle, gulp, golang make . Make systems não são uma revelação em 2020. Sempre foi conveniente, o que significa que é necessário e correto. O mundo .Net há muito tempo está privado de tais meios. Na verdade, havia e ainda existe o MSBuild , mas ele tem muitas deficiências. O principal deles é quem sabe como usá-lo de desenvolvedores comuns? E qual é a conveniência de seu desenvolvimento? É claramente mais fácil fazer algumas coisas básicas e necessárias no servidor de compilação. Provavelmente, é conveniente para alguém, mas tenho certeza de que uma parte significativa da comunidade preferirá o MSBuild para dominar o novo servidor de compilação. Escreva uma configuração uma vez e esqueça-a como um pesadelo.
Mas e se houvesse um sistema de make com DSL em C #, autocomplete e outros recursos de uma linguagem digitada? Sim, estou falando sobre Bolo . Em particular, agora vamos falar sobre a biblioteca Cake.Frosting , que é uma das executoras do make-system.
Você pode ler mais sobre os corredores disponíveis aqui: Cake Runners
Com o Frosting, tudo é familiar - a Api autodocumentada com a qual você quase imediatamente encontra uma linguagem comum. Métodos de extensão carregados do Nuget - para cada ocasião, uma estrutura de projeto como uma mistura de testes ou benchmarks e um host Asp . Todas as decisões são adivinhadas de uma vez, tudo está em casa.
Frosting Cake , , , solution . . , Cake.Frosting, Build- .
dotnet run
, . - Mac OS, Linux Windows, SDK, . dotnet CLI, .
, , . — Lifetime: Setup TearDown. .
— Tasks. - FrostingTask<Context>.
IoC , Asp. , Frosting DI IServiceCollection, .
- . , Default. , , ,
[Dependency(typeof(MyPreviousTask))]
MyPreviousTask — , .
, :
.
.
unit-.
Publish.
.
, docker, — , C#.
, , , , . , , . .
— IntelliSense , ?
.Net core – self-contained . , , dotnet, , , , « ». , - . Cake.
, , TS Jenkins
dotnet run ./Build/Build.csproj
( ) , . Frosting , -, .
, . - dotnet Frosting. , — .
— .
. / -;
. -. -.
. . .
. - -, , . .
. IntelliSense, , senior.
O problema pode ser a falta de integrações necessárias no Cake com linters, sonares, etc. Este problema deve ser esclarecido antes de usar o sistema. Ou adicione suas extensões, faça upload no Nuget e seja uma pessoa muito, muito boa.
Bônus - um exemplo de uso do Cake.Frosting no github . Para a "semente", por assim dizer: Link
Link para o site do projeto Cake