GraphSQLの検査官を使用して任意のCI上での変更を切断する


GraphQL Inspector is a set of tools to help you better maintain and improve GraphQL API as well as GraphQL consumers.


Grapqlインスペクタはクールな機能の多くの素晴らしいGithubアクションを提供します.しかし、別のCIを使用している場合は、それらをコード化する必要があります.
Graphql Inspectorを使用して、ビルトキイトを使用したプル要求の変更を検出する際に、意図的にGraphSQLの変更をマージすることを許可したいと考えました.これを行う簡単な方法は、“graphql break change”という名前のプルリクエストにラベルを追加することです.
うまくいけば、次のスクリプトは、GitHub APIを使用して簡単にこれを達成するのに役立ちます.それはgitlabで動作するようにかなり簡単にする必要があります.

ステップ1 -壊れた変化があるならば、Ciが失敗するようにしてください
単純な変更を検出するには、次のスクリプトをCIの一部として追加します.
# checkGraphqlBreakingChanges.sh

#!/usr/bin/env bash
set -e

yarn graphql-inspector diff 'git:origin/main:./schema.json' 'schema.json'
壊れた変更が存在するならば、このスクリプトは失敗します.

ステップ2 - GithubラベルがPRに存在するならば、壊れている変化をマージするのを許してください
「GraphSQL Break Change」という名前のGithub UIを介して新しいプルリクエストラベルを作成します.
スクリプトは直接buildkiteで動作しますが、BUILDKITE_PULL_REQUEST あなたのCIによって提供されるものによるenv変数.
あなたのCI ENVは、Aにアクセスする必要がありますGITHUB_USER and GITHUB_USER_TOKEN スクリプトをgithub APIに問い合わせることができます.
# checkGraphqlBreakingChanges.sh

#!/usr/bin/env bash
set -e

# Label allowed
ALLOW_LABEL="GraphQL breaking change"

# We only want to run this logic if we are on a pull request
if [ -z "$BUILDKITE_PULL_REQUEST" ]; then
    echo "Skipping, not a pull request..."
    exit 0
fi

# Get the labels array from the Github API for the pull request
GITHUB_PR_LABELS=$(curl -u $GITHUB_USER:$GITHUB_USER_TOKEN \
  -s "https://github.com/api/v3/repos/my-org/my-repo/pulls/$BUILDKITE_PULL_REQUEST" \
  | jq '.labels[].name')

# If label is set on the pr we stop the execution as breaking change is intentional
if [[ ${GITHUB_PR_LABELS[*]} =~ "$ALLOW_LABEL" ]]; then
    echo "Skipping, because label is set..."
    exit 0
fi

yarn graphql-inspector diff 'git:origin/main:./schema.json' 'schema.json'