Impossibilidade de adicionar tíquetes ao Carteira pelo app #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Issue Validation | |
| on: | |
| issues: | |
| types: [opened, edited] | |
| jobs: | |
| validate-issue: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| issues: write | |
| steps: | |
| - name: Validate bug report fields | |
| if: contains(github.event.issue.labels.*.name, 'bug') | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const body = context.payload.issue.body || ''; | |
| const errors = []; | |
| // Check required fields for bug reports | |
| const requiredFields = [ | |
| { label: 'Versão do app', pattern: /### Versão do app\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Dispositivo', pattern: /### Dispositivo\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Versão do iOS', pattern: /### Versão do iOS\/iPadOS\/watchOS\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Descrição do bug', pattern: /### Descrição do bug\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Comportamento esperado', pattern: /### Comportamento esperado\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Passos para reproduzir', pattern: /### Passos para reproduzir\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Frequência', pattern: /### Frequência\s*\n\s*\n\s*(.+)/m } | |
| ]; | |
| for (const field of requiredFields) { | |
| const match = body.match(field.pattern); | |
| if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') { | |
| errors.push(`- **${field.label}** não foi preenchido`); | |
| } | |
| } | |
| if (errors.length > 0) { | |
| const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando ou vazios:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos para que possamos investigar o problema.`; | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: comment | |
| }); | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| labels: ['needs-info'] | |
| }); | |
| } else { | |
| // Remove needs-info label if it exists and all fields are now filled | |
| try { | |
| await github.rest.issues.removeLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| name: 'needs-info' | |
| }); | |
| } catch (e) { | |
| // Label didn't exist, that's fine | |
| } | |
| } | |
| - name: Validate feature request fields | |
| if: contains(github.event.issue.labels.*.name, 'enhancement') | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const body = context.payload.issue.body || ''; | |
| const errors = []; | |
| const requiredFields = [ | |
| { label: 'Qual problema isso resolve?', pattern: /### Qual problema isso resolve\?\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Solução desejada', pattern: /### Solução desejada\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Área do app', pattern: /### Área do app\s*\n\s*\n\s*(.+)/m } | |
| ]; | |
| for (const field of requiredFields) { | |
| const match = body.match(field.pattern); | |
| if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') { | |
| errors.push(`- **${field.label}** não foi preenchido`); | |
| } | |
| } | |
| if (errors.length > 0) { | |
| const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos.`; | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: comment | |
| }); | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| labels: ['needs-info'] | |
| }); | |
| } else { | |
| try { | |
| await github.rest.issues.removeLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| name: 'needs-info' | |
| }); | |
| } catch (e) {} | |
| } | |
| - name: Validate improvement fields | |
| if: contains(github.event.issue.labels.*.name, 'improvement') | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const body = context.payload.issue.body || ''; | |
| const errors = []; | |
| const requiredFields = [ | |
| { label: 'Área do app', pattern: /### Área do app\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Como funciona hoje', pattern: /### Como funciona hoje\s*\n\s*\n\s*(.+)/m }, | |
| { label: 'Como deveria funcionar', pattern: /### Como deveria funcionar\s*\n\s*\n\s*(.+)/m } | |
| ]; | |
| for (const field of requiredFields) { | |
| const match = body.match(field.pattern); | |
| if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') { | |
| errors.push(`- **${field.label}** não foi preenchido`); | |
| } | |
| } | |
| if (errors.length > 0) { | |
| const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos.`; | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: comment | |
| }); | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| labels: ['needs-info'] | |
| }); | |
| } else { | |
| try { | |
| await github.rest.issues.removeLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| name: 'needs-info' | |
| }); | |
| } catch (e) {} | |
| } |