ステージング環境
多くのプロジェクトでは、通常のローカルおよびライブデプロイメントの他に、ステージング環境を利用できるようにすることで利益を得ることができます。このページでは、そのようなステージング環境をセットアップする方法を説明します。
ステージング環境のメリット
why から始めることに意味があります。なぜプロジェクトはステージング環境を望むのでしょうか?最も大きな理由のひとつは、テストです。 本番環境にデプロイする前に、機能をエンドツーエンドでテストできる別のデプロイメント環境を用意することは、非常に有効です。 開発者(と、おそらく一部のベータユーザー)は、実際の環境で自分自身でテストできるようになります。 ローカルでのデプロイは、ライブの Intenrnet Computer をできるだけ忠実に反映させますが、それでも同じではありません。 例えば、ローカルインスタンスは、単一のサブネットとしてのみ動作します。ふたつの異なるサブネットの Canister を互いに接続してテストしたい場合、ローカルでこれを行うことはできません。
さらに、ステージング環境を持つ理由としては、以下のようなことが挙げられます:
- 他のサービスとの統合テスト
- デプロイワークフローのテスト
- 全ユーザーを対象とした機能の本番稼働前のコスト見積もり。
- エンドツーエンドのテスト
ステージング環境のセットアップ
このセクションでは、ステージング環境を設定する方法を説明します。ステージング環境があれば、 dfx
コマンドを実行するときに、 --network ic
を指定する代わりに --network my-staging
を指定することができるようになります。
もちろん、 my-staging
という名前は他の任意の名前に置き換えることができます(ただし、予約されている 2 つの名前は除きます:ic
はライブの Internet Computer、 local
は dfx start
で実行されるデフォルトネットワークです)。
ネットワーク(この文脈では「環境」ともいう)には、想定されたものと明示的に設定されたもののふたつの方法があります。Dfx は想定されたネットワークとして、ic
ネットワークだけを含んでいます。
—network ic
を(ほとんど)どのコマンドにも追加すると、そのコマンドは Internet Computer 環境のコンテキストで実行されます。
他のすべてのネットワークは dfx.json
で明示的に設定されます。任意の dfx.json
(例えば dfx new
で生成された新しいもの)を見てみると、 "networks"
セクションに少なくとも local
ネットワークが含まれているはずです。
この local
ネットワークは、 --network
で他のネットワークが指定されていない場合に、デフォルトで選択されるネットワークです。
ネットワーク定義
my-staging
という名前のステージングネットワークを dfx.json
に追加するには、dfx.json
の "networks"
の下に以下のように追加してください:
"my-staging": {
"providers": [
"https://ic0.app"
],
"type": "persistent"
}
この "providers"
の値は、dfx
にネットワークに接続する場所を指定します。これはハードコードされた ic
ネットワークのものと同じです。
persistent
という "type" は、このネットワーク上の Canister がそこに留まることを dfx
に伝えます。そのため、Canister 識別子は canister_ids.json
ファイルに保存されます。
ウォレットの設定
デフォルトで使用する Cycle ウォレットは、ネットワークごとに別々に保存されています。このため、新しく作成された my-staging
ネットワークには、まだウォレットが設定されていません。
ほとんどの人はメインの ic
ネットワークと同じ Cycle ウォレットを使いたいででしょう。そのためには、正しい ID が設定されていることを確認します(dfx identity use <identity name>
)。
次に、dfx identity get-wallet --network ic
を使用して、ic
ネットワークの現在設定されているウォレットを読み取ります。
最後に、dfx identity set-wallet <wallet id> --network my-staging
で新しく定義したネットワークにウォレットを設定します。
あるいは、このふたつを組み合わせてワンライナーにします:
dfx identity set-wallet "$(dfx identity get-wallet --network ic)" --network my-staging
ステージング環境用に別の Cycle ウォレットを使用したい場合は、network quickstart のステップ 'Creating a Cycles Wallet' にある指示に従ってください