Skip to content

Sync Project Roadmap Data #11

Sync Project Roadmap Data

Sync Project Roadmap Data #11

name : Sync Project Roadmap Data
on:
schedule: # Run sundat at 00:05 every week
- cron: '5 0 * * 0'
workflow_dispatch:
jobs:
sync-roadmap-data:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get Token
uses: actions/create-github-app-token@v1
id: get_workflow_token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
# fetch project data and store it in a file
- name: Fetch project data
env:
GH_TOKEN: ${{ steps.get_workflow_token.outputs.token }} # GitHub App token stored in secrets
PROJECT_ID: ${{vars.ROADMAP_PROJECT_ID}} # Project ID
run: |
gh api graphql -f query='
query($PROJECT_ID : ID!) {
node(id: $PROJECT_ID) {
... on ProjectV2 {
items(first: 20) {
nodes {
id
fieldValues(first: 8) {
nodes {
... on ProjectV2ItemFieldTextValue {
text
field {
... on ProjectV2FieldCommon {
name
}
}
}
... on ProjectV2ItemFieldDateValue {
date
field {
... on ProjectV2FieldCommon {
name
}
}
}
... on ProjectV2ItemFieldSingleSelectValue {
name
field {
... on ProjectV2FieldCommon {
name
}
}
}
}
}
content {
... on DraftIssue {
title
body
}
... on Issue {
title
assignees(first: 10) {
nodes {
login
}
}
}
... on PullRequest {
title
assignees(first: 10) {
nodes {
login
}
}
}
}
}
}
}
}
}' -f PROJECT_ID=$PROJECT_ID | jq '.data.node.items.nodes' > project_data.json
# commit updated project data
- name: Commit changes
run: |
git config user.name "the-json-schema-bot[bot]"
git config user.email "the-json-schema-bot[bot]@users.noreply.github.com"
git add project_data.json
git diff --quiet && git diff --staged --quiet || (git commit -m "chore(project_data): update project_data.json")
# create a pull request
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
with:
token: ${{ steps.get_workflow_token.outputs.token }}
title: 'chore(project_data): update project_data.json'
body: 'This PR updates the project_data.json file with the latest project data.'
branch: 'update-project-data'
base: 'main'
author: 'the-json-schema-bot <the-json-schema-bot[bot]@users.noreply.github.com>'
branch-suffix: timestamp
labels: 'sync-project-data'
assignees: 'the-json-schema-bot'
draft: false
signoff: true
add-paths: 'project_data.json'
# Approving with github bot token because one cannot approve their own PRs
- name: Auto Approve
if: steps.cpr.outputs.pull-request-operation == 'created'
run: gh pr review --approve "${{ steps.cpr.outputs.pull-request-number }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Auto Merge PR
if: steps.cpr.outputs.pull-request-operation == 'created'
uses: peter-evans/enable-pull-request-automerge@v3
with:
pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
merge-method: 'squash'
token: ${{ steps.get_workflow_token.outputs.token }}