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

Учите Ant (Salesforce Migration Tool)

Не могу удержать и не поделиться моими впечатлениями типа "Вау! Это круто".
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных.
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.

Так что, УЧИТЕ Ant!!!

Не могу удержать и не поделиться моими впечатлениями типа [b]"Вау! Это круто"[/b].
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных. 
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.

Так что, УЧИТЕ Ant!!! 

Dmitry Shnyrev
Не могу удержать и не поделиться моими впечатлениями типа "Вау! Это круто".
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных.
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.

Так что, УЧИТЕ Ant!!!


Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.

[quote="Dmitry Shnyrev"]Не могу удержать и не поделиться моими впечатлениями типа [b]"Вау! Это круто"[/b].
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных. 
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.

Так что, УЧИТЕ Ant!!![/quote]
Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.

Ну насколько я знаю скрипты от Financial Force это делают.

Ну насколько я знаю скрипты от Financial Force это делают.

wilder
Ну насколько я знаю скрипты от Financial Force это делают.

Кстати да, в основе лежат эти скрипты (так в комментах написано), только они еще допилены по ходу.
Подробности потом как-нибудь расскажу, я пока толком не разобрался что там да как.

[quote="wilder"]Ну насколько я знаю скрипты от Financial Force это делают.[/quote]
Кстати да, в основе лежат эти скрипты (так в комментах написано), только они еще допилены по ходу.
Подробности потом как-нибудь расскажу, я пока толком не разобрался что там да как.

Все равно, даже с учетом того что это Financial Force масштабы поражают.
Это же надо такое придумать! Моя вера во могущество ant только укрепилась.

Все равно, даже с учетом того что это Financial Force масштабы поражают.
Это же надо такое придумать! Моя вера во могущество ant только укрепилась.

Dmitry Shnyrev
Все равно, даже с учетом того что это Financial Force масштабы поражают.
Это же надо такое придумать! Моя вера во могущество ant только укрепилась.

Он настолько крут что может легко заблокировать орг. Могу скинуть инфу как это делать:)

[quote="Dmitry Shnyrev"]Все равно, даже с учетом того что это Financial Force масштабы поражают.
Это же надо такое придумать! Моя вера во могущество ant только укрепилась.[/quote]

Он настолько крут что может легко заблокировать орг. Могу скинуть инфу как это делать:)

wilder
Он настолько крут что может легко заблокировать орг. Могу скинуть инфу как это делать:)

Скинь конечно! Будет полезно знать.

[quote="wilder"]Он настолько крут что может легко заблокировать орг. Могу скинуть инфу как это делать:)[/quote]
Скинь конечно! Будет полезно знать.

Sergey Prichepo
Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.

А что там спрашивать - SF Metadata API

[quote="Sergey Prichepo"]Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.[/quote]
А что там спрашивать - SF Metadata API

Спрашивать, то может и спрашивают, но я редко встречал людей которые в нем разбираются.
Так что за человеком, которые знает Migration Tools (ant) или тот же Metadata API (а может и Tooling API) компании должны бегать, а не он на собеседованиях отвечать на глупые вопросы. Такой человек реально сможет организовать сложный процесс разработки в том числе и всеми любимый CI.

Спрашивать, то может и спрашивают, но я редко встречал людей которые в нем разбираются.
Так что за человеком, которые знает Migration Tools (ant) или тот же Metadata API (а может и Tooling API) компании должны бегать, а не он на собеседованиях отвечать на глупые вопросы. Такой человек реально сможет организовать сложный процесс разработки в том числе и всеми любимый CI.

Я все равно всем советую использовать Gradle вместо Ant.

Я все равно всем советую использовать Gradle вместо Ant.

Gres
Я все равно всем советую использовать Gradle вместо Ant.

Можешь привести небольшой пример как выкачать метадату из орга?
Какие преимущества от использования Gradle?

[quote="Gres"]Я все равно всем советую использовать Gradle вместо Ant.[/quote]
Можешь привести небольшой пример как выкачать метадату из орга?
Какие преимущества от использования Gradle?

Dmitry Shnyrev
Можешь привести небольшой пример как выкачать метадату из орга?

Также как в Ant
Dmitry Shnyrev
Какие преимущества от использования Gradle?

Отсутствие xml
Groovy

На чем тебе удобнее писать скрипты?
На xml, или на скриптовом языке?

[quote="Dmitry Shnyrev"]Можешь привести небольшой пример как выкачать метадату из орга? [/quote]
Также как  в Ant
[quote="Dmitry Shnyrev"]Какие преимущества от использования Gradle?[/quote]
Отсутствие xml
Groovy

На чем тебе удобнее писать скрипты?
На xml, или на скриптовом языке?

Gres
Также как в Ant

Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?

[quote="Gres"]Также как в Ant [/quote]
Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?

Dmitry Shnyrev
Gres
Также как в Ant

Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?

Если быть точным, то для Ant есть не плагин, а набор кастомный тасок, которые описаны в ant-salesforce.jar/com/salesforce/antlib.xml

Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски, только с человеческим синтаксисом.

ant.retrieve(
username : sfUsername,
password : sfPassword,
serverurl : properties.getProperty('sf.serverurl'),
maxPoll : properties.getProperty('sf.maxPoll'),
retrieveTarget : properties.getProperty('sf.path.retrieveTarget'),
unpackaged : properties.getProperty('sf.path.packageXml')
)

[quote="Dmitry Shnyrev"][quote="Gres"]Также как в Ant [/quote]
Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?[/quote]
Если быть точным, то для Ant есть не плагин, а набор кастомный тасок, которые описаны в ant-salesforce.jar/com/salesforce/antlib.xml

Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски, только с человеческим синтаксисом.
[code]
    ant.retrieve(
        username : sfUsername,
        password : sfPassword,
        serverurl : properties.getProperty('sf.serverurl'),
        maxPoll : properties.getProperty('sf.maxPoll'),
        retrieveTarget : properties.getProperty('sf.path.retrieveTarget'),
        unpackaged : properties.getProperty('sf.path.packageXml')
    )
[/code]

Gres
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,

с этого и надо было начинать, а то пугаешь людей страшными названиями.

я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.

вроде все понятно, буду пробовать.

Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.


буду пробовать и изучать

[quote="Gres"]Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,[/quote]

с этого и надо было начинать, а то пугаешь людей страшными названиями.

я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд. 

вроде все понятно, буду пробовать.

Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.


буду пробовать и изучать

Den Brown
Gres
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,

с этого и надо было начинать, а то пугаешь людей страшными названиями.

я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.

вроде все понятно, буду пробовать.

Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.


буду пробовать и изучать


А вот думаешь почему я перешел на Gradle?

[quote="Den Brown"][quote="Gres"]Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,[/quote]

с этого и надо было начинать, а то пугаешь людей страшными названиями.

я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд. 

вроде все понятно, буду пробовать.

Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.


буду пробовать и изучать[/quote]
А вот думаешь почему я перешел на Gradle?

Gres
А вот думаешь почему я перешел на Gradle?

потому что:

Gres
с человеческим синтаксисом.

а также возможно, что Gradle скрипт - это JAVA программа, которая позволяет работать с файлами, использовать бибилиотеки и прочее. но я не знаю, просто смотрю на пример Gradle кода выше и делаю догадки.


[quote="Gres"]А вот думаешь почему я перешел на Gradle?[/quote]

потому что:

[quote="Gres"]с человеческим синтаксисом. [/quote] 

а также возможно, что Gradle скрипт - это JAVA программа, которая позволяет работать с файлами, использовать бибилиотеки и прочее. но я не знаю, просто смотрю на пример Gradle кода выше и делаю догадки.

Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.

Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.

wilder
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.

Меняй.
Меня все устраивает!
Для конкретного юзкейса должен быть свой инструмент - unix way.
Для билдов - система сборки.

[quote="wilder"]Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.[/quote]
Меняй.
Меня все устраивает!
Для конкретного юзкейса должен быть свой инструмент - unix way.
Для билдов - система сборки.

Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.

Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.

wilder
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.

Я на питоне пишу скрипты

[quote="wilder"]Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.[/quote]
Я на питоне пишу скрипты :D 

wilder
Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.

Я не вижу проблемы

[quote="wilder"]Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.[/quote]
Я не вижу проблемы

Проблемы в apex в том, что "долгие" процессы нельзя использовать. Как apex справится с деплоем если например ant скрипт, который использует мой клиент пердит более 5 минут (хотя наверное там большая часть времени уходит на пересылку данных по моему быстрому каналу). но все равно, сидеть и думать что в какой-то отвественный момент у тебя закончится время и скрипт отвалится.

Проблемы в apex в том, что "долгие" процессы нельзя использовать. Как apex справится с деплоем если например ant скрипт, который использует мой клиент пердит более 5 минут (хотя наверное там большая часть времени уходит на пересылку данных по моему быстрому каналу). но все равно, сидеть и думать что в какой-то отвественный момент у тебя закончится время и скрипт отвалится.

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

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

Dmitry Shnyrev
А придумывать всякие костыли на батчах - это уже извращение.

А почему ты думаешь что это костыль ? И кстати работает очень хорошо.

[quote="Dmitry Shnyrev"]А придумывать всякие костыли на батчах - это уже извращение.[/quote]

А почему ты думаешь что это костыль ? И кстати работает очень хорошо.

Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.

Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.

Dmitry Shnyrev
Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.

Т.е. ты любишь, чтобы все выполнялось долго в одном потоке, а не асинхронно в разных?

[quote="Dmitry Shnyrev"]Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.[/quote]
Т.е. ты любишь, чтобы все выполнялось долго в одном потоке, а не асинхронно в разных?

Ну что значит люблю это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.

Ну что значит люблю :) это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.

Dmitry Shnyrev
Ну что значит люблю это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.

Я то имел ввиду настоящую параллельность.
Просто к слову, на том же, тобой не любимом C#, это все делается элементарно.
А как обстоят дела на питоне и иже с ним?

[quote="Dmitry Shnyrev"]Ну что значит люблю :) это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.[/quote]
Я то имел ввиду настоящую параллельность.
Просто к слову, на том же, тобой не любимом C#, это все делается элементарно.
А как обстоят дела на питоне и иже с ним?

Да нормально обстоят дела. Как и везде.
В python есть специальные библиотеки для этого. В Go вообще эти возможности встроены в язык.
Да и в Ruby должно быть.
Не вижу чем может С# быть круче других современных полноценных языков

Да нормально обстоят дела. Как и везде. 
В python есть специальные библиотеки для этого. В Go вообще эти возможности встроены в язык.
Да и в Ruby должно быть.
Не вижу чем может С# быть круче других современных полноценных языков :D 

Dmitry Shnyrev
Не вижу чем может С# быть круче других современных полноценных языков

<trollMode>
Тем, что параллельная обработка коллекции занимает 1 строчку кода.
</trollMode>

[quote="Dmitry Shnyrev"]Не вижу чем может С# быть круче других современных полноценных языков [/quote]
<trollMode>
Тем, что параллельная обработка коллекции занимает 1 строчку кода.
</trollMode>

Ну до таких тонкостей в теме параллельного выполнения я не опускался.
А что значит 1 строчка? т.е. до этой строчки все выполняется последовательно и после этой строчки все выполняется последовательно? А конкретно эта строчка (обработка коллекции) распараллеливается?
Я больше думал что запускать в потоки нужно тяжелые задачи, чтобы они выполнялись параллельно, а потом просто собирать результат из всех потоков.

Ну до таких тонкостей в теме параллельного выполнения я не опускался.
А что значит 1 строчка? т.е. до этой строчки все выполняется последовательно и после этой строчки все выполняется последовательно? А конкретно эта строчка (обработка коллекции) распараллеливается?
Я больше думал что запускать в потоки нужно тяжелые задачи, чтобы они выполнялись параллельно, а потом просто собирать результат из всех потоков.