[Azure] - Publicando web jobs com .net core

[Azure] - Publicando web jobs com .net core

Ola pessoAll,

No dia a dia trabalhando com aplicações para nuvem, precisamos distribuir os trabalhos para processos em segundo plano. Precisei fazer um deploy de uma 'console application' como WebJob manualmente e a princípio tive um problema:

  • Quando o Azure executa um WebJob ele procura por algum tipo de arquivo executável: .cmd, .bat, .exe e etc ...
  • Apps em .net core precisam do comando dotnet projeto.dll para iniciar.

O jeito mais simples de resolvermos isso é criando um arquivo que o Azure vai interpretar para iniciar nosso WebJob.
Tudo o que precisamos fazer eh criar um arquivo run.cmd com nosso comando dotnet projeto.dll.

  • Crie um novo arquivo chamado: run.cmd o conteúdo deve ser:
dotnet webjob-helloworld.dll // Substitua pelo nome do seu projeto
  • Altere o arquivo project.json para incluir nosso novo arquivo no publish:
{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "outputName": "webjob-helloworld",
    "emitEntryPoint": true,
    "copyToOutput": {
      "includeFiles": ["run.cmd"]
    }
  },
  "publishOptions": {
    "includeFiles": ["run.cmd"]
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

Testando nosso webjob no Azure

Execute o comando dotnet publish e zipe o conteudo gerado. Vamos criar um webjob de exemplo e fazer upload do conteudo:

  • Crie um novo webjob:
    Criando Novo job
    Novo job info

  • Espera o job executar ou execute manualmente e confira os logs:
    Job execution logs
    Job logs details

Pelos detalhes da execução conseguimos observar que nosso arquivo run.cmd foi identificado e nossa aplicacao dotnet core foi executada com sucesso.

[03/14/2017 14:27:26 > 7cb363: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'

[03/14/2017 14:27:26 > 7cb363: INFO] D:\local\Temp\jobs\triggered\helloworld-netcore\u4qkkidp.21i>dotnet webjob-helloworld.dll

Para automatizar a publicação de webJobs recomendo a leitura de um outro artigo que escrevi sobre publicações no Azure:

É isso ae pessoALL!
Até a próxima.