Update GraphQL files #61
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: Update GraphQL files | |
# **What it does**: This updates our GraphQL schemas. | |
# **Why we have it**: We want our GraphQL docs up to date. | |
# **Who does it impact**: Docs engineering, people reading GraphQL docs. | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '20 16 * * *' # run every day at 16:20 UTC / 8:20 PST | |
# **IMPORTANT:** Do not change the FREEZE environment variable set here! | |
# This workflow runs on a recurring basis. To temporarily disable it (e.g., | |
# during a docs deployment freeze), add an Actions Secret to the repo settings | |
# called `FREEZE` with a value of `true`. To re-enable GraphQL updates, simply | |
# delete that Secret from the repo settings. The environment variable here | |
# will duplicate that Secret's value for later evaluation. | |
env: | |
FREEZE: ${{ secrets.FREEZE }} | |
jobs: | |
update_graphql_files: | |
if: github.repository == 'github/docs-internal' | |
runs-on: ubuntu-latest | |
steps: | |
- if: ${{ env.FREEZE == 'true' }} | |
run: | | |
echo 'The repo is currently frozen! Exiting this workflow.' | |
exit 1 # prevents further steps from running | |
- name: Checkout | |
uses: actions/checkout@1e204e9a9253d643386038d443f96446fa156a97 | |
- name: Setup Node | |
uses: actions/setup-node@270253e841af726300e85d718a5f606959b2903c | |
with: | |
node-version: 16.13.x | |
cache: npm | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Run updater scripts | |
env: | |
# need to use a token from a user with access to github/github for this step | |
GITHUB_TOKEN: ${{ secrets.DOCS_BOT_FR }} | |
run: | | |
script/graphql/update-files.js | |
- name: Create pull request | |
id: create-pull-request | |
uses: peter-evans/create-pull-request@7380612b49221684fefa025244f2ef4008ae50ad | |
env: | |
# Disable pre-commit hooks; they don't play nicely here | |
HUSKY: '0' | |
with: | |
# need to use a token with repo and workflow scopes for this step | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: 'Action ran graphql script"update-files"' | |
title: GraphQL schema update | |
body: | |
"Hello! Some GraphQL data in github/github was updated recently. This PR | |
syncs up the GraphQL data in this repo.\n\n | |
If CI passes, this PR will be auto-merged. :green_heart:\n\n | |
If CI does not pass or other problems arise, contact #docs-engineering on slack." | |
branch: graphql-schema-update | |
- name: Enable GitHub auto-merge | |
if: ${{ steps.create-pull-request.outputs.pull-request-number }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.DOCUBOT_REPO_PAT }} | |
AUTOMERGE_PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }} | |
run: node .github/actions-scripts/enable-automerge.js | |
- if: ${{ failure() && env.FREEZE != 'true'}} | |
name: Delete remote branch (if previous steps failed) | |
uses: dawidd6/action-delete-branch@47743101a121ad657031e6704086271ca81b1911 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branches: graphql-schema-update | |
- if: ${{ steps.create-pull-request.outputs.pull-request-number }} | |
name: Approve | |
uses: juliangruber/approve-pull-request-action@c530832d4d346c597332e20e03605aa94fa150a8 | |
with: | |
github-token: ${{ secrets.DOCUBOT_REPO_PAT }} | |
number: ${{ steps.create-pull-request.outputs.pull-request-number }} | |
- name: Send Slack notification if workflow fails | |
uses: someimportantcompany/github-actions-slack-message@f8d28715e7b8a4717047d23f48c39827cacad340 | |
if: ${{ failure() && env.FREEZE != 'true' }} | |
with: | |
channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} | |
bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} | |
color: failure | |
text: The last update-graphql-files run for ${{github.repository}} failed. See https://github.com/${{github.repository}}/actions/workflows/update-graphql-files.yml |