Árvore de páginas


A integração foi feita utilizando Azure Functions como o webhooks do Github. Para entender melhor o porque de adotarmos essa integração, clique aqui.

Para desenvolvimento local

  • Instale o "Azure Core Tools".
  • Se não tiver conta na Azure para uso do Storage, instale o "Azure Storage Emulator".
  • Instale o "ngrok", para expor externamente as API's.
  • Configure o "local.settings.json": 
    1. AzureWebJobsStorage: string de conexão do Azure Storage
    2. JIRA_API_HOST: endereço do API manager
    3. JIRA_CONSUMER_KEY: consumer key do API Manager
    4. JIRA_CONSUMER_SECRET: consumer secredt do API Manager
    5. JIRA_USER: usuário para autenticação no Jira, será o assignee da issue
    6. JIRA_PASSWORD: senha do usuário do Jira
    7. JIRA_TOKEN_PATH: path da API de token do API Manager
    8. JIRA_API_PATH: path comum para chamada das APIs
    9. JIRA_ID_COMPONENT: lista de components do Jira
    10. JIRA_ID_ISSUETYPE: id do tipo de issue
    11. JIRA_ID_PROJECT: id do projeto
    12. JIRA_ISSUE_PREFIX: prefixo das issues do projeto
    13. GITHUB_USER: usuário para autenticação no Github
    14. GITHUB_PASSWORD: senha do usuário do Github
Exemplo:

{

"IsEncrypted": false,
"Values": {

"JIRA_API_HOST": "apimprod.totvs.com.br",
"JIRA_CONSUMER_KEY": "****************",
"JIRA_CONSUMER_SECRET": "*************",
"JIRA_USER": "integracao.jira.gith",
"JIRA_PASSWORD": "********",
"JIRA_TOKEN_PATH": "/api-homologacao/token",
"JIRA_API_PATH": "/api-homologacao/jira/2.0.0",
"JIRA_ID_COMPONENT": "1 - THF_ATENDIMENTO,2 - THF_GITHUB",
"JIRA_ID_ISSUETYPE": "12700",
"JIRA_ID_PROJECT": "15417",
"JIRA_ISSUE_PREFIX": "DTHF1-",
"GITHUB_USER": "devtotvs",
"GITHUB_PASSWORD": "*****"

}

}

  • criar as filas no Azure Storage:
    1. githubissuecomments: comentários que devem ser incluídos a issue do Jira
    2. githubissuestoupdate: issues do Github que deve ser atualizadas com label contendo a chave da issue do Jira
    3. githubopenedissues: issues que devem ser incluídas no Jira


Configuração

  • Adicionar nas configurações dos repositórios do Github os webhooks
    1. /githubissue: configurado para ser ativado por eventos individuais e selecionado Issues
    2. /githubissuecomment: configurado para ser ativado por eventos individuais e selecionado Issues comments


Fluxo da integração

Issue do Github

  • A issue criada ou alterada no Github dispara a chamada do endpont /githubissue

  • A função githubissue inclui a issue do Github na fila githubopenedissues com as informações:

    • Ação (criado, alterado, fechado, ...)

    • Título

    • Descrição

    • URL da api direta

    • URL da issue

  • A função jiraopenissue é disparada pela fila githubopenedissues que inclui a issue no Jira e na fila githubissuestoupdate com as informações:
    • título do Github

    • descrição do Github

    • URL da API direta do Github

    • URL da issue do Github

    • id da issue no Jira

    • chave da issue no Jira

  • A função githubupdateissue é disparada pela fila githubopenedissues que adiciona a issue do Github um label com a chave da issue o Jira

Novo comentário na issue do Github

  • O comentário adicionado ou alterado na issue no Github dispara a chamada do endpont /githubissuecomment
  • A função githubissuecomment inclui a issue do Github na fila githubissuecomments com as informações:
    • ação (criado, alterado, excluído, ...)
    • título
    • descrição
    • URL da api direta
    • URL da issue
    • labels
  • A função jiraaddcomment é disparada pela fila githubissuecomments que adiciona a o comentário a issue do Jira utilizando o label com a key para encontra-la

Observações

  • todo erro é tratado para retornar o item para a fila, garantindo que toda issue seja incluída no Jira. Mas caso o erro não seja corrigido a fila ficará travada.