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