-
-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add workflow for Agenda Verification and Notifications before Monday Meetings #802
Changes from 2 commits
e0f0778
302a673
f8948ce
c295acf
50942a3
56383f9
4bd44db
6fff2ca
9323d93
05f72a1
638acae
e6928b3
495c6f9
e091bae
6299e1a
ef9ffbe
86bf421
d568f57
7e93929
93cc7e1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,83 @@ | ||||||||||||||||||||||||||||||||||||||||||
name: OCWM Pre-Meeting Check | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
on: | ||||||||||||||||||||||||||||||||||||||||||
schedule: | ||||||||||||||||||||||||||||||||||||||||||
- cron: '50 21 * * 1' # Runs at 21:50 UTC, which is 10 minutes before 14:00 PT every Monday | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
jobs: | ||||||||||||||||||||||||||||||||||||||||||
check_agenda: | ||||||||||||||||||||||||||||||||||||||||||
runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
steps: | ||||||||||||||||||||||||||||||||||||||||||
- name: Checkout Repository | ||||||||||||||||||||||||||||||||||||||||||
uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
- name: Set up Node 20 | ||||||||||||||||||||||||||||||||||||||||||
uses: actions/setup-node@v4 | ||||||||||||||||||||||||||||||||||||||||||
with: | ||||||||||||||||||||||||||||||||||||||||||
node-version: '20' | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
- name: Get GitHub Token | ||||||||||||||||||||||||||||||||||||||||||
uses: actions/create-github-app-token@v1 | ||||||||||||||||||||||||||||||||||||||||||
id: get_workflow_token | ||||||||||||||||||||||||||||||||||||||||||
with: | ||||||||||||||||||||||||||||||||||||||||||
app-id: ${{ vars.APP_ID }} | ||||||||||||||||||||||||||||||||||||||||||
private-key: ${{ secrets.PRIVATE_KEY }} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
- name: Install Dependencies | ||||||||||||||||||||||||||||||||||||||||||
run: npm install @octokit/[email protected] | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This new step will make sure the process only runs completely the third monday of the month. |
||||||||||||||||||||||||||||||||||||||||||
- name: Check Latest OCWM Issue | ||||||||||||||||||||||||||||||||||||||||||
id: check_issue | ||||||||||||||||||||||||||||||||||||||||||
env: | ||||||||||||||||||||||||||||||||||||||||||
MY_TOKEN: ${{ steps.get_workflow_token.outputs.token }} | ||||||||||||||||||||||||||||||||||||||||||
OWNER: ${{ vars.ORGANISATION }} | ||||||||||||||||||||||||||||||||||||||||||
REPO: 'community' | ||||||||||||||||||||||||||||||||||||||||||
OCWM_LABEL: ${{ vars.OCWM_LABEL }} | ||||||||||||||||||||||||||||||||||||||||||
TEMPLATE_PATH: '../ISSUE_TEMPLATE/open_community_working_meeting.md' | ||||||||||||||||||||||||||||||||||||||||||
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This is the secret containing the the webhook |
||||||||||||||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||||||||||||||
const fs = require('fs'); | ||||||||||||||||||||||||||||||||||||||||||
const octokit = require('@octokit/core').Octokit; | ||||||||||||||||||||||||||||||||||||||||||
const mygithub = new octokit({ | ||||||||||||||||||||||||||||||||||||||||||
request: { fetch: fetch, }, | ||||||||||||||||||||||||||||||||||||||||||
auth: process.env.MY_TOKEN | ||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
// Read the template from the markdown file | ||||||||||||||||||||||||||||||||||||||||||
const templateContent = fs.readFileSync(process.env.TEMPLATE_PATH, 'utf8'); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
// Fetch the latest issue with OCWM_LABEL | ||||||||||||||||||||||||||||||||||||||||||
const { data: issues } = await mygithub.request(`GET /repos/${process.env.OWNER}/${process.env.REPO}/issues?labels=${encodeURIComponent(process.env.OCWM_LABEL)}&per_page=1`); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
if (issues.length === 0) { | ||||||||||||||||||||||||||||||||||||||||||
console.log("No open community working meeting issues found."); | ||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
const latestIssue = issues[0]; | ||||||||||||||||||||||||||||||||||||||||||
const issueBody = latestIssue.body; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
// Check if the issue body matches the template | ||||||||||||||||||||||||||||||||||||||||||
if (issueBody.includes(templateContent)) { | ||||||||||||||||||||||||||||||||||||||||||
console.log("Template matched, cancelling the meeting."); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
// Add a comment to the issue | ||||||||||||||||||||||||||||||||||||||||||
await mygithub.request(`POST /repos/${process.env.OWNER}/${process.env.REPO}/issues/${latestIssue.number}/comments`, { | ||||||||||||||||||||||||||||||||||||||||||
body: "The meeting as been cancelled as there is no agenda for today. Thanks" | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
// Send a notification to Slack | ||||||||||||||||||||||||||||||||||||||||||
const slackPayload = { | ||||||||||||||||||||||||||||||||||||||||||
text: `The meeting as been cancelled as there is no agenda for today. Thanks` | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
await fetch(process.env.SLACK_WEBHOOK, { | ||||||||||||||||||||||||||||||||||||||||||
method: 'POST', | ||||||||||||||||||||||||||||||||||||||||||
headers: { 'Content-Type': 'application/json' }, | ||||||||||||||||||||||||||||||||||||||||||
body: JSON.stringify(slackPayload) | ||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||
console.log("Agenda found. Meeting will proceed."); | ||||||||||||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am suggesting this change because we just decided to make the meetings mothly the 3rd monday of the month and 2 hours earlier as 12:00 PT