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