xref: /llvm-project/.github/workflows/llvm-bugs.yml (revision 7892d434741ba0ac755e00ae96ca7cdcfaf82d35)
1name: LLVM Bugs notifier
2
3permissions:
4  contents: read
5  issues: read
6
7on:
8  issues:
9    types:
10      - opened
11
12jobs:
13  auto-subscribe:
14    runs-on: ubuntu-latest
15    if: github.repository == 'llvm/llvm-project'
16    steps:
17      - uses: actions/setup-node@v4
18        with:
19          node-version: 18
20          check-latest: true
21      - run: npm install mailgun.js form-data
22      - name: Send notification
23        uses: actions/github-script@v6
24        env:
25          MAILGUN_API_KEY: ${{ secrets.LLVM_BUGS_KEY }}
26        with:
27          script: |
28            const Mailgun = require('mailgun.js');
29            const formData = require('form-data');
30
31            const mailgun = new Mailgun(formData);
32            const DOMAIN = 'email.llvm.org';
33
34            const mg = mailgun.client({ username: 'api', key: process.env.MAILGUN_API_KEY });
35
36            github.rest.issues.get({
37              issue_number: context.issue.number,
38              owner: context.repo.owner,
39              repo: context.repo.repo
40            })
41            .then((issue) => {
42              const payload = {
43                author : issue.data.user.login,
44                issue  : issue.data.number,
45                title  : issue.data.title,
46                url    : issue.data.html_url,
47                labels : issue.data.labels.map((label) => label.name),
48                assignee : issue.data.assignees.map((assignee) => assignee.login),
49                body   : issue.data.body
50              };
51
52              const data = {
53                from: 'LLVM Bugs <llvm-bugs@email.llvm.org>',
54                to: 'llvm-bugs@lists.llvm.org',
55                subject: `[Bug ${issue.data.number}] ${issue.data.title}`,
56                template: 'new-github-issue',
57                'o:tracking-clicks': 'no',
58                'h:X-Mailgun-Variables': JSON.stringify(payload)
59              };
60
61              return mg.messages.create(DOMAIN, data);
62            })
63            .then((msg) => console.log(msg));
64