generated from finos-labs/project-blueprint
-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
1 changed file
with
90 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
name: meeting-minutes-action | ||
|
||
|
||
# This GitHub action is used to manage meeting minutes via GitHub Issues: | ||
# - The issue description contains minutes and other meeting meta info (see .github/ISSUE_TEMPLATE/Meeting.md) | ||
# - Issue commenters are tracked as meetings attendants, and (eventually, not real time) published on metrics.finos.org | ||
# | ||
# When an issue (with "meeting" label) is closed, this action | ||
# collects the issue commenters and uses FINOS metadata-tool to generate a CSV | ||
# file with meeting attendance, which can be submitted for later ingestion and | ||
# final publication into metrics.finos.org . After successful submission, | ||
# the "indexed" label will be added to the issue. | ||
# | ||
# When the "indexed" label is removed, entries will be removed from the index, | ||
# allowing to amend attendance after the meeting; by re-adding the "indexed", entries will be added again to the index. | ||
# | ||
# The date of the meeting is extracted from the date that the issue was closed, therefore: | ||
# - Do not apply the "indexed" label if the issue is not closed | ||
# - Only close the issue once, during (or right after) the meeting, regardless of issue contents/comments; use the "indexed" label to trigger a reindexing later on | ||
# | ||
# To run this action, you'll need the following secrets defined in https://github.com/finos/<repo name>/settings/secrets : | ||
# - FINOS_TOKEN | ||
# - GIT_CSV_TOKEN | ||
# | ||
# Email [email protected] to setup the secrets in your repository. | ||
# | ||
# Note. There's a thread regarding org level secrets in GitHub, which may avoid the secret configuration step - https://github.community/t5/GitHub-Actions/Secrets-on-Team-and-Organization-level/td-p/29745 | ||
on: | ||
issues: | ||
types: [closed,labeled,unlabeled] | ||
|
||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
FINOS_TOKEN: ${{ secrets.FINOS_TOKEN }} | ||
GIT_CSV_USER_EMAIL: [email protected] | ||
GIT_CSV_USER_NAME: "FINOS Admin" | ||
GIT_CSV_USER: "finos-admin" | ||
GIT_CSV_TOKEN: ${{ secrets.GIT_CSV_TOKEN }} | ||
GIT_CSV_HOST: "gitlab.com" | ||
GIT_CSV_ORG: "finos-admin" | ||
GIT_CSV_REPO: sources | ||
GIT_CSV_BRANCH: master | ||
REPO_NAME: ${{ github.event.repository.name }} | ||
ORG_NAME: ${{ github.event.repository.owner.login }} | ||
MEETING_DATE: ${{ github.event.issue.closed_at }} | ||
ASSIGNEES: ${{ join(github.event.issue.assignees.*.login, ', ') }} | ||
ISSUE_NUMBER: ${{ github.event.issue.number }} | ||
ACTION: ${{ github.event.action }} | ||
|
||
jobs: | ||
submit-meeting-attendance: | ||
# Only run the job if the issue contains a `meeting` label AND either the event is `Issue Closed` OR the label been added/removed is `indexed` | ||
if: contains(github.event.issue.labels.*.name, 'meeting') && (github.event.action == 'closed' || github.event.label.name == 'indexed') | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checking out metadata-tool | ||
uses: actions/checkout@v2 | ||
with: | ||
repository: 'finos/metadata-tool' | ||
path: 'metadata-tool' | ||
- name: Checking out FINOS metadata | ||
run: git clone https://finos-admin:[email protected]/finos-admin/metadata.git >/dev/null | ||
- name: Downloading github-finos-meetings.csv | ||
run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/checkout-meeting-attendance.sh | bash | ||
- name: Checkout metadata dependencies | ||
run: cd metadata-tool ; lein deps | ||
- name: Generating a new github-finos-meetings.csv | ||
run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/generate-meeting-attendance.sh | bash | ||
- name: Pushing github-finos-meetings.csv changes to Git | ||
run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/submit-meeting-attendance.sh | bash | ||
- name: Check unknowns | ||
if: github.event.action == 'closed' || (github.event.action == 'labeled' && github.event.label.name == 'indexed') | ||
run: | | ||
if [ -f "metadata-tool/github-finos-meetings-unknowns.txt" ]; then | ||
UNKNOWNS=`cat metadata-tool/github-finos-meetings-unknowns.txt` | ||
ISSUE_CONTENT="Couldn't find the following GitHub usernames on file: ${UNKNOWNS} . /CC @agitana @maoo @mcleo-d" | ||
echo "UNKNOWNS_COMMENT=${ISSUE_CONTENT}" >> $GITHUB_ENV | ||
echo "Posting message as comment: ${UNKNOWNS_COMMENT}" | ||
fi | ||
- name: Report unknowns on issue comment | ||
if: (github.event.action == 'closed' || (github.event.action == 'labeled' && github.event.label.name == 'indexed')) && env.UNKNOWNS_COMMENT != '' | ||
uses: peter-evans/create-or-update-comment@v1 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
issue-number: ${{ github.event.issue.number }} | ||
body: "${{ env.UNKNOWNS_COMMENT }}" | ||
- name: Add label 'indexed' to issue | ||
if: github.event.action == 'closed' | ||
run: | | ||
curl -v -u admin:${{ secrets.GITHUB_TOKEN }} -H "Accept: application/vnd.github.antiope-preview+json" -d '{"labels": ["indexed"]}' ${{ github.event.issue.url }}/labels |