summaryrefslogtreecommitdiffstats
path: root/.github/workflows/new-bugs-announce-notifier.yml
blob: b2a76ef7d3615328ab06d14aa5eec218e3cab24f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: new-bugs-announce notifier

on:
  issues:
    types:
      - opened

permissions:
  issues: read

jobs:
  notify-new-bugs-announce:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-node@v3
        with:
          node-version: 14
      - run: npm install mailgun.js form-data
      - name: Send notification
        uses: actions/github-script@v6
        env:
          MAILGUN_API_KEY: ${{ secrets.MAILGUN_PYTHON_ORG_MAILGUN_KEY }}
        with:
          script: |
            const Mailgun = require("mailgun.js");
            const formData = require('form-data');
            const mailgun = new Mailgun(formData);
            const DOMAIN = "mailgun.python.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(function(issue) {
              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 => { return label.name }).join(", "),
                assignee : issue.data.assignees.map(assignee => { return assignee.login }),
                body   : issue.data.body
              };

              const data = {
                from: "CPython Issues <github@mailgun.python.org>",
                to: "new-bugs-announce@python.org",
                subject: `[Issue ${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));