Force.com Migration tool


Force.com Migration tool - очень полезный инструмент при выполнении задач переноса кода между оргами. Точно по такому же принципу, но с большей долей автоматизации работает Force.com IDE.

Migration tool работает на основе Apache Ant, популярной утилиты java для автоматизации процесса сборки.



Для установки Force.com Migration tool понадобится:

1. JDK версии 6.1 или выше.
2. Apache Ant, Version 1.6 или выше
3. Настроить глобальные переменные (ANT_HOME, JAVA_HOME и PATH) согласно инструкции для Ant.
4. Зайти на орг и скачать Force.com Migration tool (Setup -> Develop -> Tools). Это архив с плагином Ant ant-salesforce.jar и примерами.
5. Скопировать ant-salesforce.jar  в папку lib, расположенную в директории с установленным Ant.

Создайте пустую папку для экспериментов и командной строке введите ant. В ответ должно вернуться:

Buildfile: build.xml does not exist!
Build failed

Если вы видите это сообщение, то настройка прошла удачно и теперь можно пробовать Migration tool.

Попробуем вылить на свой комп созданные ранее тестовые страницу и  контроллер.
Для минимальной конфигурации нам нужны следующие файлы:

build.properties

 sf_dev.username=your-username@somemail.com  
 sf_dev.password=your_password  
 sf_dev.serverurl=https://login.salesforce.com  (или https://test.salesforce.com для sandbox)  
 sf_to.username=your-username@somemail.com  
 sf_to.password=your_password  
 sf_to.serverurl=https://login.salesforce.com  (или https://test.salesforce.com для sandbox)  

ВАЖНО: система безопасности Salesforce требует, чтобы при использовании API различными инструментами к паролю добавлялся security token. Его можно получить в Setup -> My Personal Information -> Reset My Security Token -> придет на мыло. Или сделать проще - добавить IP в разрешенные Setup  -> Administration Setup -> Security Controls -> Network Access -> добавить диапазон разрешенных IP. Тогда про Security Token можно забыть.

build.xml

 <project name="Levis" default="getFrom" basedir="." xmlns:sf="antlib:com.salesforce">  
      <property file="build.properties"/>  
      <property environment="env"/>  
      <target name="getFrom">  
           <mkdir dir="retrieveUnpackaged"/>  
           <!-- Retrieve the contents into another directory -->  
           <sf:retrieve  
                username="${sf_dev.username}"  
                password="${sf_dev.password}"  
                serverurl="${sf_dev.serverurl}"  
                retrieveTarget="retrieveUnpackaged"  
                unpackaged="package.xml"  
           />  
      </target>  
     <target name="deployTo">  
           <sf:deploy  
                username="${sf_sandbox.username}"  
                password="${sf_sandbox.password}"  
                serverurl="${sf_sandbox.serverurl}"  
                deployRoot="retrieveUnpackaged"  
           />  
      </target>  
 </project>  

package.xml

 <?xml version="1.0" encoding="UTF-8"?>  
 <Package xmlns="http://soap.sforce.com/2006/04/metadata">  
   <types>  
     <members>Hello_World_Controller</members>  
     <name>ApexClass</name>  
   </types>  
   <types>  
     <members>Hello_World</members>  
     <name>ApexPage</name>  
   </types>  
   <version>26.0</version>  
 </Package>  


Теперь если запустить из командной строки ant getFrom. Должен получиться примерно похожий результат.

 D:\test>ant getFrom  
 Buildfile: D:\test\build.xml  
 getFrom:  
 [mkdir] Created dir: D:\test\retrieveUnpackaged  
 [sf:retrieve] Request for a retrieve submitted successfully.  
 [sf:retrieve] Request Id for the current retrieve task: 04sd0000002H1gaAAC  
 [sf:retrieve] Waiting for server to finish processing the request...  
 [sf:retrieve] Request Status: Completed  
 [sf:retrieve] Finished request 04sd0000002H1gaAAC successfully.  
 BUILD SUCCESSFUL  
 Total time: 15 seconds  


Если все удачно, должна появиться папка retrieveUnpackaged такой структуры:

│   build.properties
│   build.xml
│   package.xml
│   
└── retrieveUnpackaged
    │   package.xml
    │   
    ├── classes
    │       Hello_World_Controller.cls
    │       Hello_World_Controller.cls-meta.xml
    │       
    └── pages
            Hello_World.page
            Hello_World.page-meta.xml


Теперь можно поменять все что душе угодно и залить обратно на орг используя команду ant deployTo. Должно получиться примерно следующее:


 D:\test>ant deployTo  
 Buildfile: D:\test\build.xml  
 deployTo:  
 [sf:deploy] Request for a deploy submitted successfully.  
 [sf:deploy] Request Id for the current deploy task: 04sd0000002H1hXAAS  
 [sf:deploy] Waiting for server to finish processing the request...  
 [sf:deploy] Request Status: Completed  
 [sf:deploy] Finished request 04sd0000002H1hXAAS successfully.  
 BUILD SUCCESSFUL  
 Total time: 13 seconds  


Комментарии

Популярные сообщения из этого блога

Начало работы, первые шаги, hello world в Salesforce