name: new-bugs-announce notifier on: issues: types: - opened permissions: issues: read jobs: notify-new-bugs-announce: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/setup-node@v4 with: node-version: 20 - run: npm install mailgun.js form-data - name: Send notification uses: actions/github-script@v7 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 }), // We need to truncate the body size, because the max size for // the whole payload is 16kb. We want to be safe and assume that // body can take up to ~8kb of space. body : issue.data.body.substring(0, 8000) }; const data = { from: "CPython Issues ", 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));