GiitHub Actions+merged-pr-stat+datadog을 이용한 시각적 개발 생산성
13245 단어 GitHub Actionsdatadogdevopstech
개시하다
GW에서 성과를 내고 싶어서 평소 생각하던'개발의 생산성'을 가시화해 봤습니다.‼️
어쨌든 우아함에 신경 쓰지 말고 필요한 정보만 얻으면 돼!그런 생각으로 한 거니까 탓하지 마세요.
만든 물건
GiitHubActions입니다. 제작된
merged-pr-stat
에서 요청할 수 있는 해석 정보를 Datadog에 등급별로 전송합니다.merged-pr-stat
에 대한 자세한 내용은 아래 블로그를 참조하십시오.github.merged_pr_stat을 접두사로 설정하여 데이터dog의 등급 연결 참조로 허용합니다.
항목
컨텐트
데이터dog 메트릭
count
병합된 PullRequest 수
github.merged_pr_stat.count
authorCount
PullRequests 작성자 수
github.merged_pr_stat
additionsAverage
행 평균 추가
github.merged_pr_stat.additionsAverage
additionsMedian
행의 중간값 증가
github.merged_pr_stat.additionsMedian
deletesAverage
행 평균 삭제
github.merged_pr_stat.deletesAverage
deletesMedian
행의 중간값 삭제
github.merged_pr_stat.deletesMedian
LeadTimeSecondsAverage
첫 번째 제출 날짜와 PullRequest 병합 날짜 사이의 평균 초
github.merged_pr_stat.LeadTimeSecondsAverage
LeadTimeSecondsMedian
첫 번째 제출 날짜와 PullRequest 병합 날짜 사이의 초 중간값
github.merged_pr_stat.LeadTimeSecondsMedian
timeToMergeSecondsAverage
작성된 PullRequest와 결합된 PullRequest 사이의 평균 초
github.merged_pr_stat.timeToMergeSecondsAverage
timeToMergeSecondsMedian
생성된 PullRequest와 병합된 PullRequest 사이의 초간 값
github.merged_pr_stat.timeToMergeSecondsMedian
GitHub Actions
실제 제작의 작업 절차는 다음과 같다.
name: Merged PullRequest statistics DataDog metric
on:
schedule:
- cron: '0 0 * * MON'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install datadog
run: |
python -m pip install --upgrade pip
pip install datadog
- name: Set Up Node.js
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install merged-pr-stat
run: |
npm install -g shibayu36/merged-pr-stat
- name: Check version
run: |
dog -v
merged-pr-stat -V
- name: Post merged_pr_stat datadog metrics
env:
TZ: 'Asia/Tokyo'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DATADOG_APP_KEY: ${{ secrets.DATADOG_APP_KEY }}
run: |
start_time=$(date -d '-7 day' '+%Y-%m-%dT00:00:00')
end_time=$(date -d '-1 day' '+%Y-%m-%dT23:59:59')
json=$(merged-pr-stat --start=$start_time --end=$end_time --query="repo:$GITHUB_REPOSITORY base:main")
echo $json | jq -rc 'to_entries[] |[.key, .value] | @tsv' | xargs -n2 bash -c 'dog metric post github.merged_pr_stat.$0 $1 --tags "repository:$GITHUB_REPOSITORY"'
다음은 설정 내용을 간단하게 설명한다.명령을 집행하다
start_time=$(date -d '-7 day' '+%Y-%m-%dT00:00:00')
end_time=$(date -d '-1 day' '+%Y-%m-%dT23:59:59')
json=$(merged-pr-stat --start=$start_time --end=$end_time --query="repo:$GITHUB_REPOSITORY base:main")
통계적 범위의 주기를 동적으로 설정합니다.
이번에 구상한 것은 주간 집계 취득이기 때문에
merged-pr-stat
는 7일 전 0시start_time
에 전날 23시 59분을 설정했다.예제)
실행 시간: 05/03(월) 09:00
총 범위: 04/26(월)00:00~05/02(일)23:59
JST에서 시간을 얻으려면 TZ 변수를 설정합니다.
env:
TZ: 'Asia/Tokyo'
또 일정 수행 시간도 월요일 9시로 설정했다.on:
schedule:
- cron: '0 0 * * MON'
GITHUB_TOKIO 구성
end_time
명령을 실행하려면 방문 영패를 받아야 합니다.하지만 GiitHub Actions를 사용하면 비밀이 자동으로 생성됩니다.
따라서 단독 방문 영패를 발표하지 않고 기밀 값을 변수 값으로 설정하여 방문 영패를 설정할 수 있다.
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
query 설정
조회에서 합계 대상의 창고와 모집 조건을 지정하여main 지점의 승진 요청으로 삼았다.
query="repo:$GITHUB_REPOSITORY base:main"
창고에 대해 환경 변수를 통해 이 Actions가 실행하는 창고 이름을 가져와 설정합니다.데이터dog에 도량 보내기
echo $json | jq -rc 'to_entries[] |[.key, .value] | @tsv' | xargs -n2 bash -c 'dog metric post github.merged_pr_stat.$0 $1 --tags "repository:$GITHUB_REPOSITORY"'
Dogshell 명령을 사용하여 데이터 Dog에 메트릭을 보냅니다.데이터 dogAPI 키 설정
데이터 dog에 연결된 API 키는 비밀 변수로 창고로 설정되어 안전하게 설정할 수 있습니다.
env:
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DATADOG_APP_KEY: ${{ secrets.DATADOG_APP_KEY }}
전송 메트릭
dog metric post github.merged_pr_stat.$0 $1 --tags "repository:$GITHUB_REPOSITORY"
여러 창고에서 도량을 보낼 때 데이터dog로 창고 단위로 필터할 수 있도록 창고 이름을 라벨로 설정합니다.대시보드를 제작할 때 태그를 지정하여 모든 창고의 합계를 확인할 수 있습니다.
총결산
이번에는 일단 데이터를 도량의 수집 방법으로 넣었다.
Action을 이용하면 GITHUB.토키오가 필요 없는 발매가 편리하고 스케줄을 진행하면 데이터를 계속 수집할 수 있어 편리합니다!
이렇게 하면 언제든지 Datadog에서 시각화할 수 있습니다. 생산적인 시각화로서 어떤 계기판을 만들어서 개발자에게 전개해야 할지 생각합니다!
Reference
이 문제에 관하여(GiitHub Actions+merged-pr-stat+datadog을 이용한 시각적 개발 생산성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/dehio3/articles/d1a4f2b91a111b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)