70 lines · yaml
1name: LLVM Bugs notifier2 3permissions:4 contents: read5 issues: read6 7on:8 issues:9 types:10 - opened11 12jobs:13 auto-subscribe:14 runs-on: ubuntu-24.0415 if: github.repository == 'llvm/llvm-project'16 steps:17 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.018 with:19 node-version: 2420 check-latest: true21 - run: npm install mailgun.js form-data22 - name: Send notification23 uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.024 env:25 MAILGUN_API_KEY: ${{ secrets.LLVM_BUGS_KEY }}26 with:27 script: |28 const Mailgun = require('mailgun.js');29 const formData = require('form-data');30 31 const mailgun = new Mailgun(formData);32 const DOMAIN = 'email.llvm.org';33 34 const mg = mailgun.client({ username: 'api', key: process.env.MAILGUN_API_KEY });35 36 github.rest.issues.get({37 issue_number: context.issue.number,38 owner: context.repo.owner,39 repo: context.repo.repo40 })41 .then((issue) => {42 var maybeTruncatedBody = issue.data.body;43 if (maybeTruncatedBody.length > 15000) {44 maybeTruncatedBody = maybeTruncatedBody.substring(0,45 15000) +46 "<truncated>Please see the issue for the entire body."47 }48 const payload = {49 author : issue.data.user.login,50 issue : issue.data.number,51 title : issue.data.title,52 url : issue.data.html_url,53 labels : issue.data.labels.map((label) => label.name),54 assignee : issue.data.assignees.map((assignee) => assignee.login),55 body : maybeTruncatedBody56 };57 58 const data = {59 from: 'LLVM Bugs <llvm-bugs@email.llvm.org>',60 to: 'llvm-bugs@lists.llvm.org',61 subject: `[Bug ${issue.data.number}] ${issue.data.title}`,62 template: 'new-github-issue',63 'o:tracking-clicks': 'no',64 'h:X-Mailgun-Variables': JSON.stringify(payload)65 };66 67 return mg.messages.create(DOMAIN, data);68 })69 .then((msg) => console.log(msg));70