feat(automation): report new NerdGraph features and updates via Tutone #87
Workflow file for this run
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
name: NerdGraph Schema Diff | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: [main] | |
# schedule: | |
# - cron: '5 5 * * 1' | |
jobs: | |
checkForApiUpdates: | |
name: Check for API updates | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.21.x | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Check for schema updates | |
run: ls scripts && npm install yaml | |
- name: Download artifact | |
uses: actions/github-script@v6 | |
env: | |
WORKFLOW_FILENAME: graphql-schema.yml | |
ARTIFACT_NAME: schema | |
ARTIFACT_FILENAME: schema.zip | |
UNZIP_DIR: ./ | |
with: | |
script: | | |
const script = require('./scripts/download-previous-artifact.js') | |
await script({github, context, core}) | |
- name: Rename schema.json to schema-old.json | |
run: | | |
find ./ -type f -name "schema.json" | |
mv schema.json schema-old.json | |
- name: Fetch GraphQL Schema | |
env: | |
NEW_RELIC_API_KEY: ${{ secrets.NEW_RELIC_API_KEY }} | |
run: | | |
go install github.com/newrelic/tutone/cmd/tutone@latest | |
tutone fetch --refetch | |
ls | |
- name: Check for schema updates | |
uses: actions/github-script@v6 | |
id: schema-diff | |
with: | |
script: | | |
const script = require('./scripts/schema-diff.js') | |
await script({core}) | |
- name: Send report to Slack | |
id: slack | |
uses: slackapi/[email protected] | |
with: | |
# Uses Slack's Block Kit to build the message | |
# https://app.slack.com/block-kit-builder | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": ":mag_right: *New Relic Client Go | NerdGraph API Report*" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "*API Mutations Count:* ${{ steps.schema-diff.outputs.total_api_mutations_count }}\n*Client Mutations Count:* ${{ steps.schema-diff.outputs.client_mutations_count }}\n*Client Mutations Missing Count:* ${{ steps.schema-diff.outputs.client_mutations_missing_count }}\n" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "*New API Mutations*" | |
} | |
}, | |
{ | |
"type": "context", | |
"elements": [ | |
{ | |
"type": "plain_text", | |
"text": ${{ toJSON(steps.schema-diff.outputs.new_api_mutations) }} | |
} | |
] | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": " " | |
}, | |
"accessory": { | |
"type": "button", | |
"text": { | |
"type": "plain_text", | |
"text": "See More Details", | |
"emoji": true | |
}, | |
"value": "See More Details", | |
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", | |
"action_id": "button-action" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "\n\n" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | |
# After reporting changes to the schema, upload the most | |
# recent version so we can compare on the next run. | |
- name: Upload latest schema.json | |
uses: actions/upload-artifact@v4 | |
with: | |
# Duration after which artifact will expire in days. 0 means using default retention. | |
# Minimum 1 day. | |
# Maximum 90 days unless changed from the repository settings page. | |
retention-days: 90 | |
name: schema | |
path: schema.json | |
if-no-files-found: error | |
overwrite: true |