Skip to content

Commit

Permalink
Create pattern-metrics.yaml (InnerSourceCommons#593)
Browse files Browse the repository at this point in the history
* Create pattern-metrics.yaml

Getting started measuring pattern metrics. Related to InnerSourceCommons#565. 

This pull request implements
- Time to first response metrics for new issues (excluding codeowners created) recurring every month
- Time to first response metrics for new pull requests (excluding codeowners created) recurring every month
  • Loading branch information
zkoppert authored and rmarting committed Feb 29, 2024
1 parent d9d72b6 commit 5782692
Showing 1 changed file with 124 additions and 0 deletions.
124 changes: 124 additions & 0 deletions .github/workflows/pattern-metrics.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Monthly issue metrics
on:
workflow_dispatch:
schedule:
- cron: '3 2 1 * *'

permissions:
issues: write
pull-requests: read

jobs:
issue-metrics:
name: issue metrics
runs-on: ubuntu-latest

steps:

- name: Get dates for last month
shell: bash
run: |
# Calculate the first day of the previous month
first_day=$(date -d "last month" +%Y-%m-01)
# Calculate the last day of the previous month
last_day=$(date -d "$first_day +1 month -1 day" +%Y-%m-%d)
#Set an environment variable with the date range
echo "$first_day..$last_day"
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
- name: Check out the code so we can get the CODEOWNERS names
uses: actions/checkout@v4
with:
sparse-checkout: |
.github/CODEOWNERS
sparse-checkout-cone-mode: false

- name: Get usernames from CODEOWNERS file
shell: bash
run: |
# open a file called CODEOWNERS and load the content into a variable
CODEOWNERS_FILE=$(cat .github/CODEOWNERS)
# Extract words from CODEOWNERS that start with @ and convert them into a comma-separated string
# ie, "-author:spier -author:zkoppert"
# This will be used to filter out these codeowners from certain stats in later steps
CODEOWNERS_FILTER=$(echo $CODEOWNERS_FILE | grep -o "@[a-zA-Z0-9\-]*" | sed 's/@/-author:/g' | tr '\n' ' ')
# Print usernames to terminal for easy debugging
echo "CODEOWNERS_FILTER: $CODEOWNERS_FILTER"
# Store CODEOWNERS_FILTERto GitHub Action environment (not permanent)
echo "CODEOWNERS_FILTER=$CODEOWNERS_FILTER" >> "$GITHUB_ENV"
- name: Run issue-metrics tool
uses: github/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'repo:InnerSourceCommons/InnerSourcePatterns is:issue created:${{ env.last_month }} -reason:"not planned" ${{ env.CODEOWNERS_FILTER }}'
HIDE_TIME_TO_ANSWER: "True"
HIDE_LABEL_METRICS: "True"

- name: Create issue
uses: peter-evans/create-issue-from-file@v4
with:
title: Monthly New Issues Data ${{ env.last_month }}
token: ${{ secrets.GITHUB_TOKEN }}
content-filepath: ./issue_metrics.md
assignees: spier

pr-metrics:
name: pull request metrics
runs-on: ubuntu-latest

steps:

- name: Get dates for last month
shell: bash
run: |
# Calculate the first day of the previous month
first_day=$(date -d "last month" +%Y-%m-01)
# Calculate the last day of the previous month
last_day=$(date -d "$first_day +1 month -1 day" +%Y-%m-%d)
#Set an environment variable with the date range
echo "$first_day..$last_day"
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
- name: Check out the code so we can get the CODEOWNERS names
uses: actions/checkout@v4

- name: Get usernames from CODEOWNERS file
shell: bash
run: |
# open a file called CODEOWNERS and load the content into a variable
CODEOWNERS_FILE=$(cat .github/CODEOWNERS)
# Extract words from CODEOWNERS that start with @ and convert them into a comma-separated string
# ie, "-author:spier -author:zkoppert"
# This will be used to filter out these codeowners from certain stats in later steps
CODEOWNERS_FILTER=$(echo $CODEOWNERS_FILE | grep -o "@[a-zA-Z0-9\-]*" | sed 's/@/-author:/g' | tr '\n' ' ')
# Print usernames to terminal for easy debugging
echo "CODEOWNERS_FILTER: $CODEOWNERS_FILTER"
# Store CODEOWNERS_FILTERto GitHub Action environment (not permanent)
echo "CODEOWNERS_FILTER=$CODEOWNERS_FILTER" >> "$GITHUB_ENV"
- name: Run issue-metrics tool
uses: github/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'repo:InnerSourceCommons/InnerSourcePatterns is:pr created:${{ env.last_month }} -reason:"not planned" ${{ env.CODEOWNERS_FILTER }}'
HIDE_TIME_TO_ANSWER: "True"
HIDE_LABEL_METRICS: "True"

- name: Create issue
uses: peter-evans/create-issue-from-file@v4
with:
title: Monthly New Pull Request Data ${{ env.last_month }}
token: ${{ secrets.GITHUB_TOKEN }}
content-filepath: ./issue_metrics.md
assignees: spier

0 comments on commit 5782692

Please sign in to comment.