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