.github/workflows/graphql-schema.yml #131
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: | |
schedule: | |
# Cron executes at 0800, 1200, 1600 UTC (8am, 12pm, 4pm) | |
# Monday through Friday | |
- cron: "0 8,12,16 * * 1-5" | |
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@v4 | |
- name: Check for schema updates | |
run: ls scripts && npm install yaml | |
- name: Download artifact | |
uses: actions/github-script@v7 | |
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@v7 | |
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": "More information can be viewed in the job summary." | |
}, | |
"accessory": { | |
"type": "button", | |
"text": { | |
"type": "plain_text", | |
"text": "Job Summary", | |
"emoji": true | |
}, | |
"value": "View Job Summary", | |
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", | |
"action_id": "button-action" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"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 |