Download .github/workflows/community-report.yml from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 7.27 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/.github/workflows/community-report.yml
- Command line
-
hf download hf://SaylorTwift/gemini-cli/.github/workflows/community-report.yml
-
curl -L -o community-report.yml https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/.github/workflows/community-report.yml
7.27 kB
| name: 'Generate Weekly Community Report π' | |
| on: | |
| schedule: | |
| - cron: '0 12 * * 1' # Run at 12:00 UTC on Monday | |
| workflow_dispatch: | |
| inputs: | |
| days: | |
| description: 'Number of days to look back for the report' | |
| required: true | |
| default: '7' | |
| jobs: | |
| generate-report: | |
| name: 'Generate Report π' | |
| if: |- | |
| ${{ github.repository == 'google-gemini/gemini-cli' }} | |
| runs-on: 'ubuntu-latest' | |
| permissions: | |
| issues: 'write' | |
| pull-requests: 'read' | |
| discussions: 'read' | |
| contents: 'read' | |
| id-token: 'write' | |
| steps: | |
| - name: 'Generate GitHub App Token π' | |
| id: 'generate_token' | |
| uses: 'actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b' # ratchet:actions/create-github-app-token@v2 | |
| with: | |
| app-id: '${{ secrets.APP_ID }}' | |
| private-key: '${{ secrets.PRIVATE_KEY }}' | |
| permission-issues: 'write' | |
| permission-pull-requests: 'read' | |
| permission-discussions: 'read' | |
| permission-contents: 'read' | |
| - name: 'Generate Report π' | |
| id: 'report' | |
| env: | |
| GH_TOKEN: '${{ steps.generate_token.outputs.token }}' | |
| REPO: '${{ github.repository }}' | |
| DAYS: '${{ github.event.inputs.days || 7 }}' | |
| run: |- | |
| set -e | |
| START_DATE="$(date -u -d "$DAYS days ago" +'%Y-%m-%d')" | |
| END_DATE="$(date -u +'%Y-%m-%d')" | |
| echo "β³ Generating report for contributions from ${START_DATE} to ${END_DATE}..." | |
| declare -A author_is_googler | |
| check_googler_status() { | |
| local author="$1" | |
| if [[ "${author}" == *"[bot]" ]]; then | |
| author_is_googler[${author}]=1 | |
| return 1 | |
| fi | |
| if [[ -v "author_is_googler[${author}]" ]]; then | |
| return "${author_is_googler[${author}]}" | |
| fi | |
| if gh api "orgs/googlers/members/${author}" --silent 2>/dev/null; then | |
| echo "π§βπ» ${author} is a Googler." | |
| author_is_googler[${author}]=0 | |
| else | |
| echo "π ${author} is a community contributor." | |
| author_is_googler[${author}]=1 | |
| fi | |
| return "${author_is_googler[${author}]}" | |
| } | |
| googler_issues=0 | |
| non_googler_issues=0 | |
| googler_prs=0 | |
| non_googler_prs=0 | |
| echo "π Fetching issues and pull requests..." | |
| ITEMS_JSON="$(gh search issues --repo "${REPO}" "created:>${START_DATE}" --json author,isPullRequest --limit 1000)" | |
| for row in $(echo "${ITEMS_JSON}" | jq -r '.[] | @base64'); do | |
| _jq() { | |
| echo "${row}" | base64 --decode | jq -r "${1}" | |
| } | |
| author="$(_jq '.author.login')" | |
| is_pr="$(_jq '.isPullRequest')" | |
| if [[ -z "${author}" || "${author}" == "null" ]]; then | |
| continue | |
| fi | |
| if check_googler_status "${author}"; then | |
| if [[ "${is_pr}" == "true" ]]; then | |
| ((googler_prs++)) | |
| else | |
| ((googler_issues++)) | |
| fi | |
| else | |
| if [[ "${is_pr}" == "true" ]]; then | |
| ((non_googler_prs++)) | |
| else | |
| ((non_googler_issues++)) | |
| fi | |
| fi | |
| done | |
| googler_discussions=0 | |
| non_googler_discussions=0 | |
| echo "π£οΈ Fetching discussions..." | |
| DISCUSSION_QUERY=''' | |
| query($q: String!) { | |
| search(query: $q, type: DISCUSSION, first: 100) { | |
| nodes { | |
| ... on Discussion { | |
| author { | |
| login | |
| } | |
| } | |
| } | |
| } | |
| }''' | |
| DISCUSSIONS_JSON="$(gh api graphql -f q="repo:${REPO} created:>${START_DATE}" -f query="${DISCUSSION_QUERY}")" | |
| for row in $(echo "${DISCUSSIONS_JSON}" | jq -r '.data.search.nodes[] | @base64'); do | |
| _jq() { | |
| echo "${row}" | base64 --decode | jq -r "${1}" | |
| } | |
| author="$(_jq '.author.login')" | |
| if [[ -z "${author}" || "${author}" == "null" ]]; then | |
| continue | |
| fi | |
| if check_googler_status "${author}"; then | |
| ((googler_discussions++)) | |
| else | |
| ((non_googler_discussions++)) | |
| fi | |
| done | |
| echo "βοΈ Generating report content..." | |
| TOTAL_ISSUES=$((googler_issues + non_googler_issues)) | |
| TOTAL_PRS=$((googler_prs + non_googler_prs)) | |
| TOTAL_DISCUSSIONS=$((googler_discussions + non_googler_discussions)) | |
| REPORT_BODY=$(cat <<EOF | |
| ### π Community Contribution Report | |
| **Period:** ${START_DATE} to ${END_DATE} | |
| | Category | Googlers | Community | Total | | |
| |---|---:|---:|---:| | |
| | **Issues** | $googler_issues | $non_googler_issues | **$TOTAL_ISSUES** | | |
| | **Pull Requests** | $googler_prs | $non_googler_prs | **$TOTAL_PRS** | | |
| | **Discussions** | $googler_discussions | $non_googler_discussions | **$TOTAL_DISCUSSIONS** | | |
| _This report was generated automatically by a GitHub Action._ | |
| EOF | |
| ) | |
| echo "report_body<<EOF" >> "${GITHUB_OUTPUT}" | |
| echo "${REPORT_BODY}" >> "${GITHUB_OUTPUT}" | |
| echo "EOF" >> "${GITHUB_OUTPUT}" | |
| echo "π Community Contribution Report:" | |
| echo "${REPORT_BODY}" | |
| - name: 'π€ Get Insights from Report' | |
| if: |- | |
| ${{ steps.report.outputs.report_body != '' }} | |
| uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0 | |
| env: | |
| GITHUB_TOKEN: '${{ steps.generate_token.outputs.token }}' | |
| REPOSITORY: '${{ github.repository }}' | |
| with: | |
| upload_artifacts: 'true' | |
| gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}' | |
| gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}' | |
| gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}' | |
| gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}' | |
| gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' | |
| use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}' | |
| use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}' | |
| settings: |- | |
| { | |
| "tools": { | |
| "core": [ | |
| "run_shell_command(gh issue list)", | |
| "run_shell_command(gh pr list)", | |
| "run_shell_command(gh search issues)", | |
| "run_shell_command(gh search prs)" | |
| ] | |
| } | |
| } | |
| prompt: |- | |
| You are a helpful assistant that analyzes community contribution reports. | |
| Based on the following report, please provide a brief summary and highlight any interesting trends or potential areas for improvement. | |
| Report: | |
| ${{ steps.report.outputs.report_body }} | |