- Desenvolvimento, por onde começar
- Execução do projeto
- Estrutura
- Dependências
- Build e testes
- NuGET privado
- CI/CD
- README
Passos para execução do projeto:
-
Abrir Prompt de Comando de sua preferência (CMD ou PowerShell);
-
Criar pasta para o projeto no local desejado;
-
Executar os seguintes comandos;
dotnet new -i Wiz.Dotnet.Template.Function --nuget-source https://api.nuget.org/v3/index.json
dotnet new wizfunction -n [NomeProjeto]
- Incluir configurações de varíaveis de ambiente no caminho abaixo:
├── Wiz.[NomeProjeto] (solução)
├── Wiz.[NomeProjeto].Function (projeto)
├── local.settings.json
├── src (pasta física)
├── Wiz.[NomeProjeto].Function (projeto)
├── local.settings.json
Dentro do arquivo local.settings.json, há o conteúdo para modificação das variáveis:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "CONNECTION_STRING_STORAGE_AZURE",
"APPINSIGHTS_INSTRUMENTATIONKEY": "KEY_APPLICATION_INSIGHTS",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
- (Opcional) Inserir chave do Application Insights conforme configurado no Azure.
Caso não há chave de configuração no Azure, não é necessário inserir para executar o projeto local.
- Executar projeto Wiz.[NomeProjeto].Function (Tecla F5).
- (Recomendado) Instalar extensões para desenvolvimento:
- ASP.NET core VS Code Extension Pack
- Azure Functions
- GitLens — Git supercharged
- NuGet Package Manager
- vscode-icons
- (Recomendado) Instalar extensões para testes:
-
Executar projeto Wiz.[NomeProjeto].Function (Tecla F5).
-
Aceitar instalação do pacote Azure Functions Tools para poder realizar debug do projeto;
-
Selecionar versão .NET Stardand (v2);
A instalação do pacote também poderá ser feita de maneira manual com o seguinte comando:
npm install -g azure-functions-core-tools@2
- Utilizar a função task para executar ações dentro do projeto. A função está presente no caminho do menu abaixo:
Terminal -> Run Task
- Selecionar a função task a ser executada no projeto:
- clean - Limpar solução
- restore - Restaurar pacotes da solução
- build - Compilar pacotes da solução
- func: host start - Executar function em modo release
- test - Executar projeto de testes
- test with coverage - Executar projeto de testes com cobertura
Padrão das camadas do projeto:
- Wiz.[NomeProjeto].CrossCutting: camada responsável por conter código que podem ser utilizados de forma transversal (mais de uma camada), não podendo ser isolados em um componente específico sem relação direta com todos os outros. Exemplos de funcionalidades dessa camada: Inversion Of Control (IoC), logging do sistema, segurança entre outros comum a todas camadas;
- Wiz.[NomeProjeto].Domain: domínio da aplicação, responsável de manter as regras de negócio para as function(s);
- Wiz.[NomeProjeto].Infra: responsável por fornecer capacidade técnicas para suportar as camadas superiores, como por exemplo envio de mensagens para outras aplicações, persistência dos dados da camada de domínio;
- Wiz.[NomeProjeto].Function: responsável pela camada de disponibilização das function(s);
- Wiz.[NomeProjeto].Tests: responsável pela camada de testes unitários e de integração dos projetos.
Formatação do projeto dentro do repositório:
├── src
├── Wiz.[NomeProjeto].CrossCutting (projeto)
├── Wiz.[NomeProjeto].Domain (projeto)
├── Wiz.[NomeProjeto].Infra (projeto)
├── Wiz.[NomeProjeto].Function (projeto)
├── Wiz.[NomeProjeto].Tests (projeto)
├── Wiz.[NomeProjeto] (solução)
- Obrigatoriedade de não diminuir os testes de cobertura.
- Comandos para geração de build:
- Debug: Executar via Test Explorer (adicionar breakpoint)
- Release: Executar via Test Explorer (não adicionar breakpoint)
-
Ativar funcionalidade Live Unit Testing para executar testes em tempo de desenvolvimento (execução) do projeto.
-
Ativar funcionalidade Code Coverage para cobertura de testes.
As funcionalidades Live Unit Testing e Code Coverage estão disponíveis apenas na versão Enterprise do Visual Studio.
- Executar task de teste desejada:
- test - Executar projeto de testes
- test with coverage - Executar projeto de testes com cobertura
- Ativar Watch na parte inferior do Visual Studio Code para habilitar cores nas classes que descrevem a cobertura. É necessário executar os testes no modo test with coverage.
- Dentro do arquivo dos projetos (.csproj) no campo PropertyGroup, é necessário adicionar um GUID no formato abaixo:
<PropertyGroup>
<ProjectGuid>{b5c970c2-a7cc-4052-b07b-b599b83fc621}</ProjectGuid>
</PropertyGroup>
- O GUID pode ser coletado no arquivo da solution ou criado pelo site: https://www.guidgenerator.com/.
- Adicionar url do NuGet privado no caminho do menu abaixo:
Tools -> NuGet Package Manager -> Package Sources
-
Abrir Prompt de Comando de sua preferência (CMD ou PowerShell) ou utilizar o terminal do Visual Studio Code;
-
Executar script Powershell para adicionar permissão do NuGet na máquina local:
- https://github.com/microsoft/artifacts-credprovider/blob/master/helpers/installcredprovider.ps1 (Windows);
- https://github.com/microsoft/artifacts-credprovider/blob/master/helpers/installcredprovider.sh (Linux/Mac)
-
Localizar source (src) do projeto desejado para instalar o NuGet;
-
Executar comando para instalar NuGet privado e seguir instruções;
*dotnet add package [NomePacote] -s https://pkgs.dev.azure.com/[NomeOrganizacao]/_packaging/[NomeProjeto]/nuget/v3/index.json --interactive
- Arquivo de configuração padrão: azure-pipelines.yml.
- Caso há necessidade de incluir mais tasks ao pipeline, verfique a documentação para inclusão: Azure DevOps - Yaml Schema.
- Incluir documentação padrão no arquivo README.md.
- Após inclusão da documentação padrão, excluir este arquivo e TODAS as classes indentificadas como exemplo.
- O serviço para busca de endereço Via CEP foi utilizado apenas como exemplo. O uso do serviço está disponível no NuGet corporativo.