You need to sign in to do that
Don't have an account?
sihmeieos
Force.comIDEを使用した運用組織へのデプロイ
こんにちは。
超初歩的かつ今更な話で恐縮なのですが、運用組織への正式なデプロイの方法が良くわかりません。
Developer's Guideには「
別の
Salesforce.com 組織への展開
Eclipseで入手できるForce.comIDEの「別のSalesforce.com 組織への展開」を参照してください」とありますが、このマニュアルもどこにあるのか良くわかりません。
以下の方法でおかしいところがあると思うので、ご指摘いただけると非常に助かります。
【運用組織へのdeploy】
1.新規ApexTrigger,ApexClassを作成する。
2.ソースを書く。
3.Trigger,Classを「Save to Server」でアップロードする。
4.Run Testする。
5.75%になったら「Deploy to Server」が可能になる。
現在は、Run Testしても、中身が無いTrigger,Classがサーバーにアップロードされている状態のため、テストが実行できずにデプロイできません。
ちなみに、Developer組織でも上記のような手順でデプロイをしています。(CookBookなどに書かれている手順のはず)
こちらは正常にデプロイでき、実行できています。
本当に基本的な質問で申し訳ないのですが、ご指導・ご指摘のほど、よろしくお願いいたします。
sandboxで作成しテストしないとイケナイです。
fukumimiさん、返信ありがとうございます。
SandBoxでのテストですが、DeveloperEditionで作成してテストでも問題ないのですよね?
私は、DeveloperEditionでTrigger,Classを作成し、テストをした上で運用組織にデプロイしました。
そうすると、デプロイはできたようなのですが、その後の変更ができなくなったので困っております。
なので、デプロイ手順に何か間違いがあったのではと思って、確認させていただきました。
1.Sandbox or Develop組織でTrigger,Class 作成。
2.1をテスト
3.クリアしたら運用組織にデプロイ。
何かおかしいのでしょうか?
DeveloperEditionではなく、SandBoxでのテストが必須なのであれば、なぜ過去に、DeveloperEdition
でのみテストをしたものが運用組織にデプロイできたのかわかりません。
可能性でもご存知でしたらご指摘いただけるとありがたいです。
運用環境にデプロイするには全てのクラス、トリガで平均75%以上のカバレッジが必要です。
また、1つのクラスorトリガはカバレッジが1%以上である事も必要です。
上記条件を満たしていないと、デプロイ時の検証(テストクラス実行等)でエラーになります。「Save to Server」でも同じです。
Developer環境にはこの制限はありませんのでアップし放題です!
>中身が無いTrigger,Classがサーバーにアップロードされている状態のため
これは運用環境でしょうか?
運用環境でしたら、上記の制約をクリアするためのテストクラスの作成が必要です。
運用環境でしたら何でこうなったかが疑問ですが。。。(テストクラス削除したか、トライアル時に作成したかかな?)
ちなみに私は
1.新規ApexTrigger,ApexClassを作成する。
2.ソースを書く。テストクラスを作る。
3.IDE上でRun Testして全体で75%以上のカバレッジを確保できていることを確認する。
4.「Deploy to Server」もしくは「Save to Server」で運用環境にデプロイする。
です。
ちなみにSandboxでのテストは必須ではないです。
IDEでクラスorトリガを作成して、上記条件を満たした状態で、直接運用環境に「Save to Server」すればアップされます。
通常はSandboxでテストしてからアップしますが・・・
的はずれでしたらすみません。
ue123さんこんにちは。
返信ありがとうございます。
記述が抜けていますが、テストクラスはもちろん作成し、75%以上のカバレッジが確保できてから
運用組織にデプロイしています。
ただ、SandoBoxでテストクラスを作成し、テストを実行して75%以上カバーできていても、
運用組織にデプロイする時にエラーが発生してしまうのです。
先程コピーしたばかりで特に設定を変更していないので、環境は全く同じはずなのですが…。
> 1.新規ApexTrigger,ApexClassを作成する。
> 2.ソースを書く。テストクラスを作る。
> 3.IDE上でRun Testして全体で75%以上のカバレッジを確保できていることを確認する。
> 4.「Deploy to Server」もしくは「Save to Server」で運用環境にデプロイする。
この手順の1~3まではDeveloperEditionかSandBoxの組織の設定をしたプロジェクト上で実行
ですよね?
> >中身が無いTrigger,Classがサーバーにアップロードされている状態のため
> これは運用環境でしょうか?
> 運用環境でしたら、上記の制約をクリアするためのテストクラスの作成が必要です。
> 運用環境でしたら何でこうなったかが疑問ですが。。。(テストクラス削除したか、トライアル時に作成したか かな?)
運用環境です。普通にTriggerを作成し、テストクラスを作成してテストを実行し、デプロイしています。
このような初歩的な質問をするのも気がひけるのですが、他に情報を得られるところもなく…。
レスいただけただけで助かります。ありがとうございます。
sihmeieosさん
失礼いたしました。
デプロイ時のエラー情報を差し支えなければご提示頂ければ何かわかるかもしれません。
1~3はご認識のとおりです。
あと、中身が無いTrigger,Classとはどういう状態をさされていますか?
>記述が抜けていますが、テストクラスはもちろん作成し、75%以上のカバレッジが確保できてから
>運用組織にデプロイしています。
ちょっと思ったんですけど、カバレッジの問題はなくても、そもそもエラーがあるんじゃないですかね?
75%カバーできていたとしても、テストメソッド内で1箇所でもエラーが発生しているとデプロイはできないはずです。
ue123さん
レスをいただき、ありがとうございます。
> デプロイ時のエラー情報を差し支えなければご提示頂ければ何かわかるかもしれません。
現在、エラーが解消したのでエラー情報はアップできないのですが、1つ下にアドバイスいただいたikouさんの
仰るとおり、そもそもロジックにエラーがある状態で運用組織にデプロイしようとしていました。
かつ、なぜそのエラーがSandBoxで補足できなかったかというと、SandBoxに「Save to Server」せずに「Run Test」
していたからです。
なんともお恥ずかしい限りです…。
ということで、「ここまで書かないとわからないのか!」というご指摘を甘んじて受けつつ、デプロイ手順を今一度
まとめると、以下のようになると思います。
【運用組織へデプロイするまでの手順】
1.新規ApexTrigger,ApexClassを作成する。(Dev or SandBox)
2.ソースを書く。テストクラスを作る。(Dev or SandBox)
3.Developer組織かSandBoxに「Save to Server」したあと「Run Test」(Dev or SandBox)
4.エラーがなく、75%以上のカバレッジが確保できていたら、「Deploy to Server」もしくは「Save to Server」で運用環境にデプロイする。
※プロジェクトはDev or SandBoxの設定をしておき、デプロイする時に運用組織を指定する。
ただ、IDE上で「Run Test」できるとのことですので、おそらくプロジェクトをオフラインにしておくとわざわざDeveloperもしくはSandBoxにソースを上げずにテストできるのかなと思っています。
(いつもオンラインで作成していました。)
> あと、中身が無いTrigger,Classとはどういう状態をさされていますか?
こちらは、中身のロジックを全て消し、メソッドがあるのみの状態のことを指しています。
別件になるのですが、削除したくてもできなかったので、無理やり空白にしてしまいました…。
こちらが不勉強ゆえの疑問にお答えいただき、誠にありがとうございます。
ikouさん、こんにちは。
ご指摘いただき、ありがとうございます。
仰る通り、そもそもソースコードにエラーがある状態でデプロイしようとしていました。
また、そのエラーを補足できなかった原因としては、以下のように認識しています。
作業対象のプロジェクトを常にオンラインにしており、そこでTrigger,Classを作成していた。
→Trigger,Classの新規作成時には中身が空白(ソースコードの無い)のものができるので、ソースコードを書いた(=内容を更新した)場合は、都度、「Save to Server」でアップロードしなければ、変更後の内容で「Run Test」できない。
→今回の場合、「Save to Server」せずに「Run Test」していたため、ソースコードの無い状態でテストをしたことになり、追加したロジックの検証ができていなかった。それをそのまま運用組織にデプロイしようとしていたため、エラーが発生した。
Eclipseの使い方を良くわかっていないがゆえの問題だったと思います。
お忙しい中ご指摘いただき、ありがとうございました。