Регистрация  |  Вход

Build tools: что может делать муравей (ANT)?

Всем привет!

Подошло время взяться за метадату и ANT, и я начал с простых операций, но чувствую что в реальной жизни ANT используют для автоматизации сложных вещей в СФ.

Поэтому в этой теме прошу поделиться кратким описанием СЦЕНАРИЕВ того, чем обычно занят ваш муравей или то, что он может делать полезного в целом.

Вот например, сценарий (build.xml) который я могу представить (не сделать, пока просто представить):

(1) выгружает по списку метадату из одного Орга.
(2) выгружает по списку метадату из другого Орга.
(3) апдатируем package.xml (если это нужно) или что меняем в метадате на локальной машине.
(4) загружает все это в третий Орг.

но это мое представление как можно заставить работать муравья по-серьезному.

Какими сценариями вы можете поделиться? можно самые простые и банальные

кстати эту тему уже поднимали:
https://salesforce-developer.ru/forum/topic-build-project-ant-gradle-etc

Плюс для тех у кого есть опыт с Груви\Gradle, напишите Муравьиный сценарий, а после добавьте, что с Груви\Gradle ко всему этому я могу сделать вот это и это.

Спасибо

Всем привет!

Подошло время взяться за метадату и ANT, и я начал с простых операций, но чувствую что в реальной жизни ANT используют для автоматизации  сложных вещей в СФ.

Поэтому в этой теме прошу поделиться кратким описанием СЦЕНАРИЕВ того, чем обычно занят ваш муравей или то, что он может делать полезного в целом.

Вот например,  сценарий (build.xml) который я могу представить (не сделать, пока просто представить):

(1) выгружает по списку метадату из одного Орга.
(2) выгружает по списку метадату из другого Орга.
(3) апдатируем package.xml (если это нужно) или что меняем в метадате на локальной машине.
(4) загружает все это в третий Орг.

но это мое представление как можно заставить работать муравья по-серьезному.

Какими сценариями вы можете поделиться? можно самые простые и банальные

кстати эту тему уже поднимали:
https://salesforce-developer.ru/forum/topic-build-project-ant-gradle-etc

Плюс для тех у кого есть опыт с Груви\Gradle, напишите Муравьиный сценарий, а после добавьте, что с Груви\Gradle ко всему этому я могу сделать вот это и это.

Спасибо

Den Brown
но это мое представление как можно заставить работать муравья по-серьезному.

Вот тут посмотри
https://github.com/financialforcedev/df12-deployment-tools
Уже не первый раз про это писали.

[quote="Den Brown"]но это мое представление как можно заставить работать муравья по-серьезному.[/quote]
Вот тут посмотри
https://github.com/financialforcedev/df12-deployment-tools
Уже не первый раз про это писали.

его возможности БЕЗГРАНИЧНЫ!!!

его возможности БЕЗГРАНИЧНЫ!!!

Самое банальное - деплой только измененных файлов с огра на орг.

Самое банальное - деплой только измененных файлов с огра на орг.

Den Brown
Плюс для тех у кого есть опыт с Груви\Gradle, напишите Муравьиный сценарий, а после добавьте, что с Груви\Gradle ко всему этому я могу сделать вот это и это.

Везде ты можешь сделать примерно одно и тоже, просто потратишь на это разное количество времени и сил.

[quote="Den Brown"]Плюс для тех у кого есть опыт с Груви\Gradle, напишите Муравьиный сценарий, а после добавьте, что с Груви\Gradle ко всему этому я могу сделать вот это и это.[/quote]
Везде ты можешь сделать примерно одно и тоже, просто потратишь на это разное количество времени и сил.

А возможные сценарии мне самому интересны.
Не раз уже спрашивал на форуме, но ответов нет.
Могу реализовать твой сценарий)

А возможные сценарии мне самому интересны.
Не раз уже спрашивал на форуме, но ответов нет.
Могу реализовать твой сценарий)

Gres
Не раз уже спрашивал на форуме, но ответов нет.

Ну отчего же нет сценариев, упоминал я вроде и не раз.
(опять же все из https://github.com/financialforcedev/df12-deployment-tools )
- очистка орга
- загрузка проект на орг (все/по частям)
- запуск тестов
- запуск анонимного кода
- выгрузка нужных данных
Что тут еще можно придумать?
вот с пунктом -запуск анонимного кода вообще можно творить ВСЕ ЧТО УГОДНО!!!!

[quote="Gres"]Не раз уже спрашивал на форуме, но ответов нет. [/quote]
Ну отчего же нет сценариев, упоминал я вроде и не раз.
(опять же все из https://github.com/financialforcedev/df12-deployment-tools )
- очистка орга
- загрузка проект на орг (все/по частям)
- запуск тестов
- запуск анонимного кода
- выгрузка нужных данных
Что тут еще можно придумать?
вот с пунктом -запуск анонимного кода вообще можно творить ВСЕ ЧТО УГОДНО!!!!

Dmitry Shnyrev
Gres
Не раз уже спрашивал на форуме, но ответов нет.

Ну отчего же нет сценариев, упоминал я вроде и не раз.
(опять же все из https://github.com/financialforcedev/df12-deployment-tools )
- очистка орга
- загрузка проект на орг (все/по частям)
- запуск тестов
- запуск анонимного кода
- выгрузка нужных данных
Что тут еще можно придумать?
вот с пунктом -запуск анонимного кода вообще можно творить ВСЕ ЧТО УГОДНО!!!!

Это все элементарные задачи!

[quote="Dmitry Shnyrev"][quote="Gres"]Не раз уже спрашивал на форуме, но ответов нет. [/quote]
Ну отчего же нет сценариев, упоминал я вроде и не раз.
(опять же все из https://github.com/financialforcedev/df12-deployment-tools )
- очистка орга
- загрузка проект на орг (все/по частям)
- запуск тестов
- запуск анонимного кода
- выгрузка нужных данных
Что тут еще можно придумать?
вот с пунктом -запуск анонимного кода вообще можно творить ВСЕ ЧТО УГОДНО!!!![/quote]
Это все элементарные задачи!

Еще можно change sets генерить, но это тоже никого не впечатлило

Еще можно change sets генерить, но это тоже никого не впечатлило

Gres
Могу реализовать твой сценарий)

Милости просим!

Сценарий:
(1) выгружаем из одного Орга ту метадату, что была изменена за последнюю неделю.
(2) меняем на локальной машине все АПИ имена с упоминанием головного объекта с "Generic_Request__с' на "New_Request__с' .
(3) загружаем все это во второй Орг.


Dmitry Shnyrev
- запуск анонимного кода
- выгрузка нужных данных

как запуск анонимного кода?
как выгрузка данных через Ант?

Gres
Еще можно change sets генерить, но это тоже никого не впечатлило

Как не впечатлило?!

[quote="Gres"]Могу реализовать твой сценарий)[/quote]

Милости просим!

Сценарий:
(1) выгружаем из одного Орга ту  метадату, что была изменена за последнюю неделю. 
(2) меняем  на локальной машине все АПИ имена  с упоминанием головного объекта с "Generic_Request__с' на "New_Request__с' . 
(3) загружаем все это во второй Орг.


[quote="Dmitry Shnyrev"]- запуск анонимного кода 
- выгрузка нужных данных [/quote]

как запуск анонимного кода?
как выгрузка данных через Ант?

[quote="Gres"]Еще можно change sets генерить, но это тоже никого не впечатлило[/quote]
Как не впечатлило?!

Den Brown
как выгрузка данных через Ант?

сорри, метаданных

[quote="Den Brown"]как выгрузка данных через Ант?[/quote]
сорри, метаданных

Den Brown
Как не впечатлило?!

Ну никто не проявил инициативы

[quote="Den Brown"]Как не впечатлило?![/quote]
Ну никто не проявил инициативы

Dmitry Shnyrev
Den Brown
как выгрузка данных через Ант?

сорри, метаданных

Имея правильный package.xml все это реализуется достаточно просто. А вот его построить без других утилит сложновато.

В принципе могу описать как у иеня реализована выгрузка метадаты измененной после определенной даты. Не все так сложно как кажется.

Самый долгий путь начинается с первого шага. Ден заразил:)

[quote="Dmitry Shnyrev"][quote="Den Brown"]как выгрузка данных через Ант?[/quote]
сорри, метаданных[/quote]

Имея правильный package.xml все это реализуется достаточно просто. А вот его построить без других утилит сложновато.

В принципе могу описать как у иеня реализована выгрузка метадаты измененной после определенной даты. Не все так сложно как кажется.

Самый долгий путь начинается с первого шага. Ден заразил:)

Den Brown
как запуск анонимного кода?

Tooling API -> Execute Anonymous

[quote="Den Brown"]как запуск анонимного кода? [/quote]
Tooling API -> Execute Anonymous

wilder
В принципе могу описать как у иеня реализована выгрузка метадаты измененной после определенной даты. Не все так сложно как кажется.

На самом же деле все просто)

[quote="wilder"]В принципе могу описать как у иеня реализована выгрузка метадаты измененной после определенной даты. Не все так сложно как кажется.[/quote]
На самом же деле все просто)

Gres
Den Brown
как запуск анонимного кода?

Tooling API -> Execute Anonymous

Если память не изменяет сейчас и через ант это можно делать.

[quote="Gres"][quote="Den Brown"]как запуск анонимного кода? [/quote]
Tooling API -> Execute Anonymous[/quote]

Если память не изменяет сейчас и через ант это можно делать.

wilder
Если память не изменяет сейчас и через ант это можно делать.

У него только 6 тасков, как и раньше.

[quote="wilder"]Если память не изменяет сейчас и через ант это можно делать.[/quote]
У него только 6 тасков, как и раньше.

Gres
wilder
Если память не изменяет сейчас и через ант это можно делать.

У него только 6 тасков, как и раньше.

Обнови salesforce-ant библиотеку до 33 версии и проверь executeApex

[quote="Gres"][quote="wilder"]Если память не изменяет сейчас и через ант это можно делать.[/quote]
У него только 6 тасков, как и раньше.[/quote]

Обнови salesforce-ant библиотеку до 33 версии и проверь executeApex

wilder
Обнови salesforce-ant библиотеку до 33 версии и проверь executeApex

Вот antlib.xml 33.0 версии
<antlib>
<typedef name="compileAndTest" classname="com.salesforce.ant.CompileAndTest"/>
<typedef name="deploy" classname="com.salesforce.ant.DeployTask"/>
<typedef name="retrieve" classname="com.salesforce.ant.RetrieveTask"/>
<typedef name="bulkRetrieve" classname="com.salesforce.ant.BulkRetrieveTask"/>
<typedef name="listMetadata" classname="com.salesforce.ant.ListMetadataTask"/>
<typedef name="describeMetadata" classname="com.salesforce.ant.DescribeMetadataTask"/>
</antlib>

[quote="wilder"]Обнови salesforce-ant библиотеку до 33 версии и проверь executeApex[/quote]
Вот antlib.xml 33.0 версии
[code]
<antlib>
    <typedef name="compileAndTest" classname="com.salesforce.ant.CompileAndTest"/>
    <typedef name="deploy" classname="com.salesforce.ant.DeployTask"/>
    <typedef name="retrieve" classname="com.salesforce.ant.RetrieveTask"/>
    <typedef name="bulkRetrieve" classname="com.salesforce.ant.BulkRetrieveTask"/>
    <typedef name="listMetadata" classname="com.salesforce.ant.ListMetadataTask"/>
    <typedef name="describeMetadata" classname="com.salesforce.ant.DescribeMetadataTask"/>
</antlib>
[/code]
[url=http://salesforce.stackexchange.com/questions/19117/execute-an-apex-class-using-ant-build-script]нежданчик[/url]

wilder
нежданчик

Не получилось)
Это кастомная таска. Посмотри реализацию. У меня для градла тоже написана.

[quote="wilder"]нежданчик[/quote]
Не получилось)
Это кастомная таска. Посмотри реализацию. У меня для градла тоже написана.

Ок, те кто уже на ты с муравьями, выкладывайте сюда несложные, но жизненные сценарии (build.xml) для того, чтобы другие начали пробовать: повторять эти сценарии, дополнять их, учиться.

Ок, те кто уже на ты с муравьями, выкладывайте сюда несложные, но жизненные сценарии (build.xml) для того, чтобы другие начали пробовать: повторять эти сценарии, дополнять их, учиться. 

вот нашел статью, о том как можно работать с муравьиными скриптами прямо в IDE:

https://www.artlebedev.ru/tools/technogrette/soft/eclipse-ant/

а вы как запускаете АНТ: с консоли или в IDE?

вот нашел статью, о том как можно работать с муравьиными скриптами прямо в IDE:

https://www.artlebedev.ru/tools/technogrette/soft/eclipse-ant/

а вы как запускаете АНТ: с консоли или в IDE?

Вот кстати хороший вопрос!!! Как раз для меня сегодня актуальный.

В MavensMate сегодня нечаянно нажал CTRL+B (вместо CTRL+V) и у меня открылась снизу консоль Sublime и попер выполняться ant скрипт.
Что за мистика? Откуда ноги растут? Кто знает?

Вот кстати хороший вопрос!!! Как раз для меня сегодня актуальный.

В MavensMate сегодня нечаянно нажал CTRL+B (вместо CTRL+V) и у меня открылась снизу консоль Sublime и попер выполняться ant скрипт.
Что за мистика? Откуда ноги растут? Кто знает?

Den Brown
а вы как запускаете АНТ: с консоли или в IDE?

Использую Gradle, пишу скрипты, дебажу и запускаю в IDEA.

[quote="Den Brown"]а вы как запускаете АНТ: с консоли или в IDE?[/quote]
Использую Gradle, пишу скрипты, дебажу и запускаю в IDEA.

в одном managed package есть пара несложных объектов, которые хочу "взять за основу" при создании своих собственных объектов.

Хорошо бы их просто скопировать как метадату, чтобы не делать это в ручную.

попробовал выгрузить объекты через Эклипсе - их нет в перечне метадаты.

попробовал выгрузть объекты через Ант - выгрузились объекты...

осталось только перебить ВИН номе... АПИ имена и все.

не хорошо как-то. так сделаешь приложение, а его потом просто откопируют...

но то, что изучения Муравьишки приносит пользу - это, конечно, хорошо.

в одном managed package есть пара несложных объектов, которые хочу "взять за основу" при создании своих собственных объектов.

Хорошо бы их просто скопировать как метадату, чтобы не делать это в ручную.

попробовал выгрузить объекты через Эклипсе - их нет в перечне метадаты.

попробовал выгрузть объекты через Ант - выгрузились объекты...

осталось только перебить ВИН номе... АПИ имена и все.

не хорошо как-то. так сделаешь приложение, а его потом просто откопируют...

но то, что изучения Муравьишки приносит пользу - это, конечно, хорошо.

Den Brown
не хорошо как-то. так сделаешь приложение, а его потом просто откопируют...

ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

[quote="Den Brown"]не хорошо как-то. так сделаешь приложение, а его потом просто откопируют...[/quote]
ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

Dmitry Shnyrev
ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

Её тоже можно защитить

[quote="Dmitry Shnyrev"]ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.[/quote]
Её тоже можно защитить

Gres
Dmitry Shnyrev
ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

Её тоже можно защитить

А можно поинтересоваться, что означает защитить структуру, и как ето будет виглядеть?

[quote="Gres"][quote="Dmitry Shnyrev"]ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.[/quote]
Её тоже можно защитить[/quote]

А можно поинтересоваться, что означает защитить структуру, и как ето будет виглядеть?

Alex Tsitsura
А можно поинтересоваться, что означает защитить структуру, и как ето будет виглядеть?

Кастом сеттинги нужно днлать приват. Вместо страниц делать компоненты. Может еще чего уже и не помню.

[quote="Alex Tsitsura"]А можно поинтересоваться, что означает защитить структуру, и как ето будет виглядеть?[/quote]

Кастом сеттинги нужно днлать приват. Вместо страниц делать компоненты. Может еще чего уже и не помню.

Gres
Dmitry Shnyrev
ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

Её тоже можно защитить

Как можно "защитить" структуру базы данных (объекты)?
Сам занимался реверс инежнерингом пакета по объектам для дальнейшей интеграции на уровне триггеров, потому что не имел доступа к коду в пакете. Все отлично разбирается.

[quote="Gres"][quote="Dmitry Shnyrev"]ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.[/quote]
Её тоже можно защитить[/quote]
Как можно "защитить" структуру базы данных (объекты)?
Сам занимался реверс инежнерингом пакета по объектам для дальнейшей интеграции на уровне триггеров, потому что не имел доступа к коду в пакете. Все отлично разбирается.

Dmitry Shnyrev
Gres
Dmitry Shnyrev
ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.

Её тоже можно защитить

Как можно "защитить" структуру базы данных (объекты)?
Сам занимался реверс инежнерингом пакета по объектам для дальнейшей интеграции на уровне триггеров, потому что не имел доступа к коду в пакете. Все отлично разбирается.

Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.

[quote="Dmitry Shnyrev"][quote="Gres"][quote="Dmitry Shnyrev"]ну кроме объектов больше ничего не "откопируют" если у тебя managed package. А структура базы данных я думаю не такой уж страшный секрет.[/quote]
Её тоже можно защитить[/quote]
Как можно "защитить" структуру базы данных (объекты)?
Сам занимался реверс инежнерингом пакета по объектам для дальнейшей интеграции на уровне триггеров, потому что не имел доступа к коду в пакете. Все отлично разбирается.[/quote]
Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.

Gres
Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.

Хм, что-то новенькое. Надо эту тему развить.

[quote="Gres"]Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.[/quote]
Хм, что-то новенькое. Надо эту тему развить.

Gres
Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.

Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял?

[quote="Gres"]Wilder, как всегда абсолютно прав, объекты тоже можно сделать приватными.[/quote]

Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял?

Alex Tsitsura
Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял?

Custom objects тоже можно

[quote="Alex Tsitsura"]Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял? [/quote]
Custom objects тоже можно

Gres
Alex Tsitsura
Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял?

Custom objects тоже можно

Сорь за нубськый вопрос, но как можно custom object сделать приавтным?

Вот в метадате CustomбObject есть только customSettingsVisibility, но ето только когда компонента представляет custom setting.


Но что нужно указать и где чтоб сделать приватным custom object?

[quote="Gres"][quote="Alex Tsitsura"]Возможно я что-то пропустил, но приватными можно сделать custom settings, а custom objects нет. Или я не правильно понял? [/quote]
Custom objects тоже можно[/quote]

Сорь за нубськый вопрос, но как можно custom object сделать приавтным?

Вот в метадате [url=http://www.salesforce.com/us/developer/docs/api_meta/Content/customobject.htm]CustomбObject[/url] есть только customSettingsVisibility, но ето только когда компонента представляет custom setting. 


Но что нужно указать и где чтоб сделать приватным custom object?