- 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 no modo Administrador (CMD ou PowerShell);
-
Criar pasta para o projeto no local desejado;
-
Executar os seguintes comandos;
dotnet new -i Wiz.Dotnet.Template.Function.DataDriven
dotnet new wizfunctiondatadriven -n [NomeProjeto]
-
Instalar pacote npm Azure Function V3 conforme documentação;
-
Incluir configurações de varíaveis de ambiente no caminho abaixo:
├── 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": {
"Issuer": "URL_SSO",
"Audience": "SSO_SCOPE",
"AzureWebJobsStorage": "URL_STORAGE",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
Caso execute o storage locamente, incluir variável AzureWebJobsStorage o valor UseDevelopmentStorage=true. Para essa execução é necessário instalar o Azure Storage Emulator conforme documentação.
├── Dockerfile
Dentro do arquivo Dockerfile, há o conteúdo para modificação das variáveis:
ENV Issuer=URL_SSO
ENV Audience=SSO_SCOPE
ENV AzureWebJobsStorage=URL_STORAGE
Para executar o projeto via docker é necessário inserir a URL do storage do Azure.
- 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).
-
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
- clean release - Limpar solução em modo release
- build - Compilar pacotes da solução
- restore - Restaurar pacotes da solução
- publish - Publicar Azure Function(s) localmente
- func: host start - Executar function em modo release
- test - Executar projeto todos os projetos de testes
- test unit - Executar projeto de testes de unidade
- test integration - Executar projeto de testes de integração
- test with coverage - Executar projeto de testes com cobertura
- Executar comando na raiz do projeto:
docker-compose up -d
- logs de execução:
docker-compose logs
- Parar e remover container:
docker-compose down
Padrão das camadas do projeto:
- Wiz.[NomeProjeto].Function: responsável pela camada de disponibilização das function(s);
- Wiz.[NomeProjeto].Integration.Tests: responsável pela camada de testes de integração dos projetos.
- Wiz.[NomeProjeto].Unit.Tests: responsável pela camada de testes de unidade dos projetos.
Formatação do projeto dentro do repositório:
├── src
├── Wiz.[NomeProjeto].Function (projeto)
├── test
├── Wiz.[NomeProjeto].Integration.Tests (projeto)
├── Wiz.[NomeProjeto].Unit.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.
Comandos para geração de relatório de testes:
-
PowerShell (Windows):
-
Abrir pasta scripts;
-
Executar comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
- Executar testes e relatório de testes:
.\code_coverage.ps1
-
-
Shell (Linux/Mac):
-
Abrir pasta scripts;
-
Executar testes e relatório de testes:
./code_coverage.sh
-
O relatório dos testes são gerados na pasta code_coverage localizada na raiz do projeto.
- 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.