| name: LLVM Bugs notifier | |
| permissions: | |
| contents: read | |
| issues: read | |
| on: | |
| issues: | |
| types: | |
| - opened | |
| jobs: | |
| auto-subscribe: | |
| runs-on: ubuntu-24.04 | |
| if: github.repository == 'llvm/llvm-project' | |
| steps: | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version: 24 | |
| check-latest: true | |
| - run: npm install mailgun.js form-data | |
| - name: Send notification | |
| uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 | |
| env: | |
| MAILGUN_API_KEY: ${{ secrets.LLVM_BUGS_KEY }} | |
| with: | |
| script: | | |
| const Mailgun = require('mailgun.js'); | |
| const formData = require('form-data'); | |
| const mailgun = new Mailgun(formData); | |
| const DOMAIN = 'email.llvm.org'; | |
| const mg = mailgun.client({ username: 'api', key: process.env.MAILGUN_API_KEY }); | |
| github.rest.issues.get({ | |
| issue_number: context.issue.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| .then((issue) => { | |
| var maybeTruncatedBody = issue.data.body; | |
| if (maybeTruncatedBody.length > 15000) { | |
| maybeTruncatedBody = maybeTruncatedBody.substring(0, | |
| 15000) + | |
| "<truncated>Please see the issue for the entire body." | |
| } | |
| const payload = { | |
| author : issue.data.user.login, | |
| issue : issue.data.number, | |
| title : issue.data.title, | |
| url : issue.data.html_url, | |
| labels : issue.data.labels.map((label) => label.name), | |
| assignee : issue.data.assignees.map((assignee) => assignee.login), | |
| body : maybeTruncatedBody | |
| }; | |
| const data = { | |
| from: 'LLVM Bugs <llvm-bugs@email.llvm.org>', | |
| to: 'llvm-bugs@lists.llvm.org', | |
| subject: `[Bug ${issue.data.number}] ${issue.data.title}`, | |
| template: 'new-github-issue', | |
| 'o:tracking-clicks': 'no', | |
| 'h:X-Mailgun-Variables': JSON.stringify(payload) | |
| }; | |
| return mg.messages.create(DOMAIN, data); | |
| }) | |
| .then((msg) => console.log(msg)); |