Zendesk-Salesforce 同期
このガイドは、Salesforce(Single Source of Truth)から Zendesk へ顧客組織およびユーザーデータを毎時自動同期する Zendesk-Salesforce 同期について説明します。この同期により、正確なサポート権限、適切な SLA 適用、Zendesk における最新の顧客メタデータが保証されます。
同期は GitLab CI/CD パイプライン経由で 9 つの順次ステージを通じて実行されます。このドキュメントでは、同期の動作方法を説明し、管理者向けのトラブルシューティングガイダンスを提供します。
管理者は管理者タスクセクションを確認してください。
技術的な詳細
Zendesk-Salesforce 同期の理解
Zendesk-Salesforce 同期とは
Zendesk-Salesforce 同期は、Salesforce から Zendesk へ顧客データを同期する 9 つの相互接続された GitLab CI/CD プロジェクトのコレクションです。同期は以下を扱います。
- 顧客組織: Zendesk Global と US Government 両方のアカウントメタデータ、サポート権限、サブスクリプションティア、ARR
- パートナー組織: パートナーアカウント向けの個別同期プロセス(Zendesk Global のみ)
- ユーザー関連付け: Salesforce 連絡先に基づく自動ユーザー-組織リンク(Zendesk US Government のみ)
同期は毎時実行され、データを順次のステージ(収集、処理、比較、同期)で処理します。
Zendesk-Salesforce 同期はどのように動作するか
Zendesk-Salesforce 同期は、すべての Zendesk 本番インスタンスを Salesforce と同期し続けるために「ステージ」で実行される複雑なプロジェクトセットです。このステージは以下のようになります。
graph LR A--> B B--> C C--> D C--> E D--> F E--> G F--> H G--> I A(Account gathering) B(Organization gathering) C(Processing) D(Comparing - Global) E(Comparing - US Government) F(Syncing - Global) G(Syncing - US Government) H(Partner Sync - Global) I(User Sync - US Government)
アカウント収集
ソースプロジェクト: Salesforce Accounts
これは Zendesk-Salesforce 同期のプロセス全体を開始するステージです。ソースプロジェクトのスケジュールパイプラインが毎時 0 分 UTC(0 * * * *)に実行されます。これは bin/gather スクリプトを使用し、以下を行います。
以下の SOQL クエリを使用して Salesforce アカウントのリストを取得:
クリックして展開
SELECT Account_ID_18__c, Name, CARR_This_Account__c, Type, Ultimate_Parent_Sales_Segment_Employees__c, Account_Owner_Calc__c, Technical_Account_Manager_Name__c, Restricted_Account__c, Solutions_Architect_Lookup__r.Name, Account_Demographics_Geo__c, Account_Demographics_Region__c, Latest_Sold_To_Contact__r.Email, Latest_Sold_To_Contact__r.Name, Partner_Track__c, Partners_Partner_Type__c, Support_Hold__c, Account_Risk_Level__c, Support_Instance__c, ( SELECT Id, Name, Subscription_ID_18__c, Zuora__Status__c, Zuora__SubscriptionStartDate__c, Zuora__SubscriptionEndDate__c, Sold_To_Email__c FROM Zuora__Subscriptions__r WHERE Zuora__Status__c != 'Cancelled' AND Zuora__SubscriptionEndDate__c >= #{end_date} ), ( SELECT Id, Name, Zuora__SubscriptionRatePlanChargeName__c, Zuora__Subscription__c, Zuora__EffectiveStartDate__c, Zuora__EffectiveEndDate__c, Zuora__Quantity__c FROM Zuora__R00N40000001lGjTEAU__r WHERE Subscription_Status__c != 'Cancelled' AND Zuora__EffectiveEndDate__c >= #{end_date} ) FROM Account WHERE Type IN ('Customer', 'Former Customer')見つかったすべての Salesforce アカウントをアカウントオブジェクトに再マッピング
sales_segment属性はUltimate_Parent_Sales_Segment_Employees__cの値から派生- 値があればすべて小文字に設定。値がなければ
unknownに設定
- 値があればすべて小文字に設定。値がなければ
region属性はAccount_Demographics_Geo__cおよびAccount_Demographics_Region__cの値から派生:Account_Demographics_Geo__cがAMER、APJ、またはEMEAの場合はその値を使用- そうでない場合、
Account_Demographics_Region__cがAMER、APJ、またはEMEAの場合はその値を使用 - そうでない場合、
nilに設定
restricted属性はRestricted_Account__cの値から派生:Restricted_Account__cの値がRestricted Partyの場合はtrue。そうでない場合はfalseに設定
escalated属性はAccount_Risk_Level__cの値から派生:Account_Risk_Level__cの値がAt Risk - Escalatedの場合はtrue。そうでない場合はfalseに設定
exception属性はSupport_Instance__cの値から派生:Support_Instance__cの値がfederal-supportの場合はtrue。そうでない場合はfalseに設定
subs属性はZuora__Subscriptions__rの値から派生charges属性はZuora__R00N40000001lGjTEAU__rの値から派生
再マッピングされた Salesforce アカウントを含むアーティファクトファイル(
data/salesforce_accounts.json)を作成
実行が終わった後、生成されたアーティファクトファイルは次のステージ、組織収集に渡されます。
組織収集
ソースプロジェクト: Zendesk Orgs
このステージはアカウント収集の完了時にトリガーされます。
これは 2 つのスクリプトを使用します。
bin/gather_globalbin/gather_us_government
正確な属性はスクリプトによって異なりますが、両方のスクリプトは同じ一般的な方法で動作します。
- インスタンスのすべての Zendesk 組織を List organizations API エンドポイントを使用して収集
- 見つかったすべての組織をアカウントオブジェクトにマッピング
- 再マッピングされた組織を含むアーティファクトファイルを作成
bin/gather_globalの場合はdata/zendesk_global.jsonbin/gather_us_governmentの場合はdata/zendesk_usgov.json
実行が終わった後、生成されたアーティファクトファイルとアカウント収集で生成されたものが、次のステージ、処理に渡されます。
処理
ソースプロジェクト: Processor
このステージは組織収集の完了時にトリガーされます。これはステージで最も複雑です(同期自体に必要なすべての変換を行うため)。
これは bin/processor スクリプトを使用し、以下を行います。
必要なデータを読み込み
- マネージドコンテンツプロジェクト Zendesk Global Organization Entitlement Overrides からオーバーライドファイルを取得
data/plans.ymlファイルを読み込み- アーティファクトファイルからデータを読み込み
分析および操作されるデータの量が膨大なため、ルックアップ構造を生成
名前 説明 オブジェクトタイプ global_orgs_by_id salesforce_id キーを使用して Hash に変換されたすべての Global 組織 Hash usgov_orgs_by_id salesforce_id キーを使用して Hash に変換されたすべての US Government 組織 Hash partners_by_sfdc_id すべてのパートナー組織の salesforce_id Array overrides_by_id salesforce_id キーを使用して Hash に変換されたすべてのオーバーライド Hash plan_lookup 整列するサブスクリプションタイプに紐づくすべての製品請求名 Hash all_valid_plans あらゆるタイプのアカウントに紐づくすべての製品請求名 Array usgov_plan_names_for_exceptions 例外のある US Government アカウントに紐づくすべての製品請求名 Array usgov_plan_names 例外のない US Government アカウントに紐づくすべての製品請求名 Array today 今日の日付 Date expired_end_date 15 日前 Date three_years_out 3 年と 1 日前 Date 各アカウントの Global オブジェクトを判定
- Zendesk 組織属性に一致する Hash を作成
- 対応する Salesforce アカウントのすべてのサブスクリプションを分析
- アカウントの US Government 例外設定に応じて、Global オブジェクトに適用されるサブスクリプションのみを選択して開始
- 次に各サブスクリプションを反復処理し、アカウントのサブスクリプションに紐づく製品請求名に基づいてオブジェクトのサブスクリプション値を判定
- すべての製品請求の有効終了日の最大値に基づいて
expiration_date値を設定 - アカウントにオーバーライドがリストされているか確認(その場合はオブジェクトを変更)
- オブジェクトの support_level を最高レベルのサポートに設定
- Ultimate > Gold > Premium > Silver > Consumption Only > Custom > Community > Expired
- オブジェクトが
support_levelを expired として表示していない限り、オブジェクトのtypeをcustomerに設定 - オブジェクトが
support_levelを expired として表示している場合、オブジェクトのaarを 0 に設定 - オブジェクトの
sub_ss_enterpriseが true の場合、オブジェクトのsub_ss_ase値を true に設定 - オブジェクトの
expiration_dateとルックアップオブジェクトthree_years_outの値の関係をチェックして、アカウントを同期に含めるかを判定(小さければ含めない)
各アカウントの US Government オブジェクトを判定
- Zendesk 組織属性に一致する Hash を作成
- 対応する Salesforce アカウントのすべてのサブスクリプションを分析
- アカウントの US Government 例外設定に応じて、US Government オブジェクトに適用されるサブスクリプションのみを選択して開始
- 次に各サブスクリプションを反復処理し、アカウントのサブスクリプションに紐づく製品請求名に基づいてオブジェクトのサブスクリプション値を判定
- すべての製品請求の有効終了日の最大値に基づいて
expiration_date値を設定 - アカウントにオーバーライドがリストされているか確認(その場合はオブジェクトを変更)
- オブジェクトの support_level を最高レベルのサポートに設定
- Ultimate > Gold > Premium > Silver > Consumption Only > Custom > Community > Expired
- オブジェクトが
support_levelを expired として表示していない限り、オブジェクトのtypeをcustomerに設定 - オブジェクトが
support_levelを expired として表示している場合、オブジェクトのarrを 0 に設定 - オブジェクトの
usgov_fedrampの値が true の場合、オブジェクトのsub_gitlab_dedicatedおよびsub_usgov_24x7を true に設定 - オブジェクトに対応するスケジュール(12x5 vs 24x7)を設定
- オブジェクトの
expiration_dateとルックアップオブジェクトthree_years_outの値の関係をチェックして、アカウントを同期に含めるかを判定(小さければ含めない)
各種オブジェクトからアーティファクトファイルを作成:
- Global オブジェクト用に
data/global_accounts.json - US Government オブジェクト用に
data/usgov_accounts.json
- Global オブジェクト用に
実行が終わった後、2 つの個別のステージがトリガーされます。
- 比較 - Global、組織収集からのアーティファクトファイルと
data/global_accounts.jsonを渡す - 比較 - US Government、組織収集からのアーティファクトファイルと
data/usgov_accounts.jsonを渡す
比較 - Global
ソースプロジェクト: Global Org Compare
このステージは処理の完了時にトリガーされます。
これは bin/compare スクリプトを使用し、以下を行います。
- アーティファクトファイルからデータを読み込み
- すべてのデータを
salesforce_idを統一フィールド(Zendesk 組織を組織オブジェクトに紐付けるもの)として比較に通し、3 つの配列を生成:zendesk_only_objects: 一致する組織オブジェクトのない Zendesk 組織と等価ssot_only_objects: 一致する Zendesk 組織のない組織オブジェクトと等価different_objects: 一致する Zendesk 組織を持つが、その 2 つのデータが等しくない組織オブジェクトと等価
- 次に 3 つのアーティファクトを生成:
data/global_updates.json:different_objectsの項目を含むdata/global_creates.json:ssot_only_objectsの項目からsupport_levelがexpiredのものを除いたものを含むdata/global_not_in_sync.json:zendesk_only_objectsの項目から以下を除いたものを含む:typeがalliance_partner、open_partner、またはselect_partnerのものprotected_ids関数で定義された配列に含まれるsalesforce_idを持つもの
実行が終わった後、生成されたアーティファクトファイルは次のステージ、同期 - Globalに渡されます。
比較 - US Government
ソースプロジェクト: US Government Org Compare
このステージは処理の完了時にトリガーされます。
これは bin/compare スクリプトを使用し、以下を行います。
- アーティファクトファイルからデータを読み込み
- すべてのデータを
salesforce_idを統一フィールド(Zendesk 組織を組織オブジェクトに紐付けるもの)として比較に通し、3 つの配列を生成:zendesk_only_objects: 一致する組織オブジェクトのない Zendesk 組織と等価ssot_only_objects: 一致する Zendesk 組織のない組織オブジェクトと等価different_objects: 一致する Zendesk 組織を持つが、その 2 つのデータが等しくない組織オブジェクトと等価
- 次に 3 つのアーティファクトを生成:
data/usgov_updates.json:different_objectsの項目を含むdata/usgov_creates.json:ssot_only_objectsの項目からsupport_levelがexpiredのものを除いたものを含むdata/usgov_not_in_sync.json:zendesk_only_objectsの項目から以下を除いたものを含む:protected_ids関数で定義された配列に含まれるsalesforce_idを持つもの
実行が終わった後、生成されたアーティファクトファイルは次のステージ、同期 - US Governmentに渡されます。
同期 - Global
ソースプロジェクト: Zendesk Global Org Sync
このステージは比較 - Globalの完了時にトリガーされます。
これは bin/sync スクリプトを使用し、以下を行います。
- アーティファクトファイルからデータを読み込み
data/global_creates.jsonアーティファクトファイルからのオブジェクトリストを反復処理し、以下を行う:- Zendesk Create Organization API エンドポイントを使用して組織を作成
sold_tos属性のユーザーを新しく作成された組織に関連付け- 関連付けるユーザーがいない場合、#support_operations Slack チャンネルに投稿し、Customer Support Operations チームに通知
data/global_updates.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(以前判定された通りに更新するため)
data/global_not_in_sync.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(削除マークを付けるため)
実行が終わった後、次のステージ、Partner Sync - Globalがトリガーされます。
同期 - US Government
ソースプロジェクト: Zendesk US Government Org sync
このステージは比較 - US Governmentの完了時にトリガーされます。
これは bin/sync スクリプトを使用し、以下を行います。
- アーティファクトファイルからデータを読み込み
data/usgov_creates.jsonアーティファクトファイルからのオブジェクトリストを反復処理し、以下を行う:- Zendesk Create Organization API エンドポイントを使用して組織を作成
data/usgov_updates.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(以前判定された通りに更新するため)
data/usgov_not_in_sync.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(削除マークを付けるため)
実行が終わった後、次のステージ、User Sync - US Governmentがトリガーされます。
Partner Sync - Global
ソースプロジェクト: Partner Sync
このステージは同期 - Globalの完了時にトリガーされます。Zendesk Global の観点から Zendesk-Salesforce 同期の最終ステージとして機能します。
このステージはマルチスクリプトプロセスです。
bin/salesforce、以下を行います:以下の SOQL クエリを使用して Salesforce アカウントのリストを取得:
クリックして展開
SELECT Account_ID_18__c, Name, Account_Owner_Calc__c, Technical_Account_Manager_Name__c, Restricted_Account__c, Solutions_Architect_Lookup__r.Name, Partner_Track__c, Support_Hold__c, Account_Risk_Level__c, Type, Partners_Partner_Status__c FROM Account WHERE Account_ID_18__c = 'REDACTED' OR ( Type = 'Partner' AND Partners_Partner_Status__c IN ('Authorized') AND Partner_Track__c IN ('Open', 'Select') )見つかったすべての Salesforce アカウントをアカウントオブジェクトに再マッピング
account_type属性はPartner_Track__cおよびAccount_ID_18__cの値から派生:Account_ID_18__cが特定の Salesforce アカウントの値の場合はalliance_partnerに設定Partner_Track__cがOpenの場合はopen_partnerに設定Partner_Track__cがSelectの場合はselect_partnerに設定- 上記のいずれにも一致しない場合は
nilに設定
restricted_account属性はRestricted_Account__cの値から派生:Restricted_Account__cの値がRestricted Partyの場合はtrue。そうでない場合はfalseに設定
org_in_escalated_state属性はAccount_Risk_Level__cの値から派生:Account_Risk_Level__cの値がAt Risk - Escalatedの場合はtrue。そうでない場合はfalseに設定
再マッピングされた Salesforce アカウントを含むアーティファクトファイル(
data/salesforce_accounts.json)を作成
bin/zendesk、以下を行います:- インスタンスのすべての Zendesk 組織を List organizations API エンドポイントを使用して収集
- 非パートナータイプの組織(
account_typeがalliance_partner、open_partner、またはselect_partner以外)をフィルタリング - 残りすべての組織を組織オブジェクトにマッピング
- 再マッピングされた組織を含むアーティファクトファイル(
data/zendesk_orgs.json)を作成
bin/compare、以下を行います:- アーティファクトファイルからデータを読み込み
- すべてのデータを
salesforce_idを統一フィールド(Zendesk 組織を組織オブジェクトに紐付けるもの)として比較に通し、3 つの配列を生成:zendesk_only_objects: 一致する組織オブジェクトのない Zendesk 組織と等価ssot_only_objects: 一致する Zendesk 組織のない組織オブジェクトと等価different_objects: 一致する Zendesk 組織を持つが、その 2 つのデータが等しくない組織オブジェクトと等価
- 次に 3 つのアーティファクトを生成:
data/updates.json:different_objectsの項目を含むdata/creates.json:ssot_only_objectsの項目を含むdata/not_in_sync.json:zendesk_only_objectsの項目を含む
bin/sync、以下を行います:- アーティファクトファイルからデータを読み込み
data/creates.jsonアーティファクトファイルからのオブジェクトリストを反復処理し、以下を行う:- Zendesk Create Organization API エンドポイントを使用して組織を作成
data/updates.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(以前判定された通りに更新するため)
data/not_in_sync.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Organizations API エンドポイントを使用して更新ジョブを作成(削除マークを付けるため)
User Sync - US Government
ソースプロジェクト: Zendesk US Government User Sync
このステージは同期 - US Governmentの完了時にトリガーされます。Zendesk US Government の観点から Zendesk-Salesforce 同期の最終ステージとして機能します。
このステージはマルチスクリプトプロセスです。
bin/zendesk_orgs_gather、以下を行います:- インスタンスのすべての Zendesk 組織を List organizations API エンドポイントを使用して収集
- すべての組織を組織オブジェクトにマッピング
- 再マッピングされた組織を含むアーティファクトファイル(
data/zendesk_orgs.json)を作成
bin/zendesk_users_gather、以下を行います:- インスタンスのすべての Zendesk ユーザーを List Users API エンドポイントを使用して収集
- すべての保護されたユーザー(
gitlab.comのメールドメインまたは制御されたエンドユーザーのメールアドレスを持つもの)をフィルタリング - すべてのユーザーをユーザーオブジェクトにマッピング
- 再マッピングされたユーザーを含むアーティファクトファイル(
data/zendesk_users.json)を作成
bin/salesforce、以下を行います:アーティファクトファイル
data/zendesk_orgs.jsonを読み込み、salesforce_id値のみを含む 500 のチャンク(SOQL 制限のため)にリストを分割以下の SOQL クエリを使用して Salesforce 連絡先のリストを取得:
クリックして展開
SELECT Name, Email, Account.Account_ID_18__c FROM Contact WHERE Inactive_Contact__c = false AND Role__c INCLUDES ('Gitlab Admin') AND Name != '' AND Email != '' AND Account.Account_ID_18__c IN (#{chunk.map { |i| "'#{i}'" }.join(',')})chunk部分は各チャンク内のsalesforce_id値のリスト
見つかったすべての Salesforce 連絡先を連絡先に再マッピング
organization_id属性は、一致する Zendesk 組織のsalesforce_id値のid値から派生
無効な連絡先を削除
email値が欠けているもの- 重複(
email値で一致)
再マッピングされた Salesforce 連絡先を含むアーティファクトファイル(
data/salesforce_contacts.json)を作成
bin/compare、以下を行います:- アーティファクトファイルからデータを読み込み
- すべてのデータを
emailを統一フィールド(Zendesk ユーザーをユーザーオブジェクトに紐付けるもの)として比較に通し、3 つの配列を生成:zendesk_only_objects: 一致する組織オブジェクトのない Zendesk 組織と等価ssot_only_objects: 一致する Zendesk 組織のない組織オブジェクトと等価different_objects: 一致する Zendesk 組織を持つが、その 2 つのデータが等しくない組織オブジェクトと等価
- 次に 3 つのアーティファクトを生成:
data/updates.json:different_objectsの項目を含むdata/creates.json:ssot_only_objectsの項目を含むdata/not_in_sync.json:zendesk_only_objectsの項目を含む
bin/sync、以下を行います:- アーティファクトファイルからデータを読み込み
data/creates.jsonアーティファクトファイルからのオブジェクトリストを反復処理し、以下を行う:- Zendesk Create User API エンドポイントを使用してユーザーを作成
data/updates.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Users API エンドポイントを使用して更新ジョブを作成(以前判定された通りに更新するため)
data/not_in_sync.jsonアーティファクトファイルからのオブジェクトをバッチ(API 制限により最大 100)に分割し、以下を行う:- Zendesk Update Many Users API エンドポイントを使用して更新ジョブを作成(削除マークを付けるため)
管理者タスク
注意
- このアクションには Zendesk-Salesforce 同期プロジェクトへの
Developerレベルのアクセスが必要です。
Zendesk-Salesforce 同期の変更
警告
- これは対応するリクエスト Issue(機能リクエスト、管理、バグなど)がある場合のみ実施してください。存在しない場合は、まず作成し(標準プロセスを通してから対応)してください。
Zendesk-Salesforce 同期を変更するには、対応するプロジェクトリポジトリ(変更内容によりどれかが異なります)で MR を作成する必要があります。実際の変更内容はリクエスト自体によります。
ピアレビューと承認の後、MR をマージできます。これは Ad-hoc デプロイメントタイプであるため、変更は次回のスケジュール実行時に使用されます。
どこで変更が発生するかのクイックリファレンス
- SKU 変更: 詳細はSKU マッピングのドキュメントを参照
- 権限計算の変更: 変更は Processor プロジェクトで発生
- パイプラインスケジュールの変更: 変更は Salesforce Accounts プロジェクトで発生
- オブジェクト属性の変更: 変更は すべての プロジェクトで発生する可能性が高い
よくある問題とトラブルシューティング
Runner エラー
これには Runner の完全な失敗、タイムアウトなどが含まれます。これらが発生した場合、2 つの対処があります。
- 同期を最初から再起動
- 次の同期実行を待つ
実行の早い時間帯(時間の最初の 5-10 分以内)に問題が発生した場合は、再起動が許容できる方法です。それ以降であれば、次の同期実行を待つべきです。
これが繰り返し発生する場合は、Fullstack Engineer に通知する Issue を起票してください。
長時間実行ジョブ
完全なプロセスは 45 分を超えるべきではありません。長時間実行ジョブのアラートが発生した場合、最善の動きは以下のいずれかです。
- 古いパイプラインをキャンセル
- 新しいパイプラインをキャンセル
残された方は処理可能(キャッシュが使用されていないため)で、自己修正するはずです。
これが繰り返し発生する場合は、Fullstack Engineer に通知する Issue を起票してください。
データ不一致
これらは解決が複雑になる可能性があり、計算の問題か期待の問題のどちらかです。実際にデータの不一致(つまり計算の問題)か、単に期待の問題かを判断するためには、ソース(Salesforce、Zendesk)のデータを慎重にレビューする必要があります。
- 計算の問題の場合は、Fullstack Engineer に通知するバグレポートを起票してください。
- 期待の問題の場合は、違いとなぜそれがその値であるかを説明してください。
- その会話の結果として計算を変更したいという要望が出れば、報告者に機能リクエスト Issue を起票させてください。
スクリプトエラー
これに使用される各種スクリプトは、できるだけ多くの詳細を提供できるようにコード化されています。スクリプトエラーが発生した場合、まず実際にスクリプトエラーなのか、単にネットワークの問題(スクリプトエラーを引き起こしている)なのかを判断する必要があります。
最も簡単な確認方法は、過去の同期実行とその後の実行を見ることです。本物のスクリプトエラーは毎回繰り返されます。毎回発生していない場合は、ネットワークの問題です。
- ネットワークの問題の場合は、Runner エラーを参照
- 本物のスクリプトエラーの場合は、Fullstack Engineer に通知する Issue を起票してください
bfd74782)