コンテンツにスキップ

AppExchangeリリース

フェーズ1:プリフライト(ローカル)

Section titled “フェーズ1:プリフライト(ローカル)”

組織に触れる前にこれらを実行します。発生するすべてを修正します。

1.1 Salesforce Code Analyzer v5 — 完全スキャン

Section titled “1.1 Salesforce Code Analyzer v5 — 完全スキャン”
Terminal window
# インストール(1回)
sf plugins install @salesforce/plugin-code-analyzer
# すべてのルールを実行(PMD、ESLint、RetireJS、Regex、Flow、CPD)
sf code-analyzer run \
--workspace force-app \
--output-file docs/scan-results.html
# AppExchange固有のルールを実行
sf code-analyzer run \
--rule-selector AppExchange \
--workspace force-app \
--output-file docs/scan-appexchange.html
# Security タグ付きルールのみを実行
sf code-analyzer run \
--rule-selector Security \
--workspace force-app \
--output-file docs/scan-security.html
# 重大度閾値 — HighまたはCriticalで失敗(CI/CD)
sf code-analyzer run \
--rule-selector AppExchange \
--workspace force-app \
--severity-threshold 2 \
--output-file docs/scan-appexchange.html

ゼロトレランス: Critical(1)とHigh(2)。 Medium(3)以下 — docs/FALSE-POSITIVES.mdに誤検出として文書化します。

Terminal window
npm run lint
Terminal window
npm run test:unit

フェーズ2:組織テストとカバレッジ

Section titled “フェーズ2:組織テストとカバレッジ”
Terminal window
sf apex run test \
--code-coverage \
--result-format human \
--wait 10 \
--target-org FlexiFREE

必須: >= 75%の全体カバレッジ、すべてのトリガーにカバレッジが必要。

2.2 クラスごとのカバレッジを確認

Section titled “2.2 クラスごとのカバレッジを確認”
Terminal window
sf apex run test \
--code-coverage \
--result-format json \
--wait 10 \
--target-org FlexiFREE \
| jq '.result.coverage.coverage[]
| select(.coveredPercent < 75)
| {name, coveredPercent}'

フェーズ3:パッケージバージョンをビルド(beta)

Section titled “フェーズ3:パッケージバージョンをビルド(beta)”

3.1 sfdx-project.jsonでバージョンをバンプ

Section titled “3.1 sfdx-project.jsonでバージョンをバンプ”
"versionName": "ver 1.2.0",
"versionNumber": "1.2.0.NEXT"

3.2 betaパッケージバージョンを作成

Section titled “3.2 betaパッケージバージョンを作成”
Terminal window
sf package version create \
--package FlexibleTeamShare \
--definition-file config/package-scratch-def.json \
--installation-key-bypass \
--wait 30 \
--code-coverage \
--skip-ancestor-check
Terminal window
sf package version list --packages FlexibleTeamShare --order-by CreatedDate --verbose
sf package version report --package 04tXXXXXXXXXXXXXXX --verbose

フェーズ4:インストールをテスト

Section titled “フェーズ4:インストールをテスト”

4.1 クリーンなスクラッチ/サンドボックス組織にインストール

Section titled “4.1 クリーンなスクラッチ/サンドボックス組織にインストール”
Terminal window
sf package install \
--package 04tXXXXXXXXXXXXXXX \
--target-org TestOrg \
--wait 10
  • FTS_App_AccessFTS_Data_Access Permission Setを割り当て
  • Wizardを介して共有設定を構成
  • レコード上でチームメンバーを追加/編集/削除
  • 共有レコードが作成/削除されることを確認
  • 非管理者ユーザーとしてテスト(FTS_Data_Accessのみ)
Terminal window
sf package version promote --package 04tXXXXXXXXXXXXXXX

フェーズ6:Partner Security Portal — Source Scanner(Checkmarx)

Section titled “フェーズ6:Partner Security Portal — Source Scanner(Checkmarx)”

これはSalesforceパッケージを含むすべての送信に対して必須です。

  1. DevHub/パッケージング組織の認証情報を使用してPartner Security Portalにアクセス
  2. プロモートされた(リリース済み)パッケージバージョンを選択
  3. Start Scanをクリックして結果を待つ(通常15〜30分)
  4. レポートをダウンロード
  • Critical/High — コードを修正、再ビルド、再スキャン
  • 誤検出docs/FALSE-POSITIVES.mdに文書化し、送信に添付
  • Low/Info — 根拠を文書化、修正不要

フェーズ7:DASTスキャン(該当する場合)

Section titled “フェーズ7:DASTスキャン(該当する場合)”

Flexible Team Shareには外部コールアウト、Web UI、APIエンドポイントがありません — DASTは該当しません

資料ファイル注記
Code Analyzerレポート(完全)docs/scan-results.htmlフェーズ1から
Code Analyzerレポート(AppExchange)docs/scan-appexchange.htmlフェーズ1から
Source Scannerレポートポータルからダウンロードフェーズ6から
誤検出ドキュメントdocs/FALSE-POSITIVES.md各検出結果を説明
管理者/ユーザードキュメントdocs/APPLICATION-OVERVIEW.mddocs/USE-CASES.mdレビュー担当者がアプリをテスト
インストールガイドdocs/1. Installation Guide.mdステップバイステップのセットアップ
  • プロモートされたパッケージバージョンをインストール
  • MFA/2FAを無効化してレビューチームがログインできるようにする
  • このレビューに関連するパッケージのみをインストール
  • レビューチーム用の完全なアクセス権を持つテストユーザーを作成
  • サンプルデータを含む少なくとも1つの動作する共有設定を事前に構成
  1. AppExchange Partner Console > Publishing > Security Reviewに移動
  2. パッケージとプロモートされたバージョンを選択
  3. すべてのスキャンレポートをアップロード
  4. レビューチーム用の組織ログイン認証情報を提供
  5. $999の料金を支払う(有料アプリの場合;無料アプリ — 料金なし)
  6. 送信

タイムライン: 4〜6週間。ほとんどのアプリは2回目の試行で合格します。

フェーズ1 Code Analyzer + ESLint + Jest ← コードの問題を修正
フェーズ2 組織でApexテスト(>= 75%) ← カバレッジギャップを修正
フェーズ3 betaパッケージバージョンをビルド ← ビルド失敗の場合、フェーズ2に戻る
フェーズ4 クリーンな組織にインストールしてスモークテスト ← 壊れている場合、修正して再ビルド
フェーズ5 releaseにプロモート ← 元に戻せません
フェーズ6 Source Scanner(Checkmarx) ← プロモートされたバージョンのみ
フェーズ7 DASTスキャン(該当する場合) ← このアプリには該当しません
フェーズ8 ドキュメントとレビュー組織を準備 ← すべてをパッケージ化
フェーズ9 AppExchangeに送信 ← 4〜6週間待つ