Вещи рассмотреть при записи нашего собственного Непрерывного Сервера интеграции?

Эта ошибка на самом деле происходит из-за пределов вашего приложения в большинстве случаев (иногда это просто отсутствующее INTERNET разрешение, но здесь это не похоже на случай).

Я печатал объяснение, но нашел гораздо более простой пример, который удваивается как объяснение в этого ответа на другой вопрос . Вот соответствующие биты, перефразированные немного:

  1. Джо заполняет форму заказа информацией о своей кредитной карте
  2. Сервер обрабатывает эту информацию и возвращает страницу подтверждения / получения, которая является помечен no-cache в заголовке, что означает, что он всегда будет запрашиваться с сервера.
  3. Джо переходит на другую страницу.
  4. Джо щелкает назад, потому что он хочет что-то проверить, перенося его на страницу подтверждения.

Проблема возникает из этого последнего шага. Страница подтверждения была помечена no-cache, поэтому ее необходимо запросить с сервера еще раз. Но чтобы правильно показать ту же страницу, те же данные, которые были переданы в первый раз, должны быть отправлены снова.

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

Кажется, эта ситуация была достаточно распространенной, и теперь она является стандартной ошибкой для большинства браузеров и, по-видимому, для более новых версий Android. Ошибка на самом деле происходит от Chromium, поэтому вы увидите ту же ошибку в Google Chrome и почему вы видите ее только в 4.4 (которая представила новую версию WebView на основе Chromium ).

На самом деле, вы, вероятно, уже видели это раньше, это сообщение, которое появляется в большинстве браузеров и предупреждает вас чем-то вроде «Чтобы обновить эту страницу, браузер должен будет повторно отправить данные ...» Яда Яда Яда ".

Это способ Android 4.4, предупреждающий вас о том, что происходит. Как это исправить, зависит от того, к чему вы подключаетесь, но если вы будете искать эту ситуацию, вы обнаружите, что она довольно распространена и содержит исправления. Точный триггер ошибки на самом деле, когда запрос не может быть обслужен из кэша (в этом случае, no-cache вызывает это).

В зависимости от характера запроса, возможно, no-cache на самом деле не нужен.

Но с точки зрения вашего приложения главная проблема в том, что onReceiveError является своего рода «последним средством» для WebView. Ошибки, которые вы получаете, распространились из базовой системы. И как только вы окажетесь там, вы не сможете продолжить загрузку страницы в том виде, в каком она стоит . Таким образом, у вас нет возможности разрешить повторную отправку, и вы не можете предоставить пользователю такую ​​возможность, в отличие, скажем, от Google Chrome.

5
задан Paul Sonier 20 May 2009 в 17:17
поделиться

6 ответов

Я бы настоятельно не советовал воздерживаться от подобного мышления NIH.

  • Рассмотрите возможность модификации CI-сервера с открытым исходным кодом, такого как CruiseControl.NET
  • Рассмотрите возможность написания пользовательских задач Nant
  • Рассмотрите возможность изменения вашего проекта, чтобы он более соответствовал существующим параметрам.
  • Вы не хотите заниматься непрерывная интеграция, вы хотите просто использовать ее и увидеть преимущества
14
ответ дан 18 December 2019 в 05:55
поделиться

Instead of a full-blown CI server, why not just build the customized pieces you need? Reuse as much as you can rather than have EVERYTHING custom, you can at least make some parts off-the shelf.

(By the way, I wouldn't characterize this as "NIH")

Note that even if you spend as much time configuring your builds to work with an existing CI server as you would building your own (probably being generous here) you then only need to maintain each custom bit - not the whole framework.

See what you can leverage, and work with it. Also see what tool seems to have promise for moving in the direction you are going. No CI server is going to work perfectly in your environment right out of the box. They all have to be tweaked and "met halfway".

9
ответ дан 18 December 2019 в 05:55
поделиться

Сделать это хорошо будет вовсе не из легких - сообщество разработчиков ПО с открытым исходным кодом использует по крайней мере третье поколение CI с открытым исходным кодом. серверы - с большим количеством уроков, извлеченных по ходу дела.

Я бы, конечно, посоветовал вам взглянуть на один из готовых серверов CI, который допускает легкое расширение, и построить те части, которые отсутствуют. В вашем вопросе нет ничего, что не было бы сделано (и сделано очень хорошо) на большинстве существующих CI-серверов.

Я реализовал внутреннюю CI-систему «бедняков» до перехода на решение с открытым исходным кодом и обнаружил что системы с открытым исходным кодом были настолько лучше, полнее и надежнее, что мои усилия были бессмысленны.

В частности, если вам нужна расширяемость, Hudson будет отличным выбором - у него отличная архитектура плагинов, а автор доступен для платной консультационной работы - вероятно, НАМНОГО лучше использовать ваши ресурсы, чем собственные.

Кстати, до моего участия в процессе сборки сборка продукта занимала 14,5 часов, без автоматического тестирования, упаковки или CM. Благодаря некоторым усилиям и следованию лучшим практикам существующего сообщества CI, сборка того же проекта занимает 7,5 минут с автоматическим тестированием, упаковкой и CM. По моему опыту, определенно стоит приложить определенные усилия, чтобы привести свою сборку в соответствие с существующими передовыми практиками опытного сообщества CI, вместо того, чтобы пытаться адаптировать CI к существующей сборке.

3
ответ дан 18 December 2019 в 05:55
поделиться

Вот что я хотел бы рассмотреть:

  • Какой опыт у нас в команде в этой области?
  • Таковы ли сроки, что люди в команде могут уделить время чтобы узнать о дизайне серверов CI?
  • Есть ли бюджет для найма людей, обладающих этими знаниями в предметной области, чтобы дополнить команду?
  • Как вы думаете, почему вы можете сделать это лучше, чем существующие решения?
1
ответ дан 18 December 2019 в 05:55
поделиться

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

В конце концов, это никогда не было профессиональной системой. Это всегда была система, которая была достаточно хорошей, работала на нас и спасала нас. Если конечно я не уехал в отпуск, или на встречу в другой город и т. Д. Дошло до того, что всякий раз, когда я уезжал из города, сборки терпели неудачу, терпели неудачу и терпели неудачу. Не из-за проблем с нашим кодом, а из-за мелочей, с которыми я ежедневно сталкивался в системе сборки. И когда меня не было рядом, чтобы справиться с ними, никто другой не знал, что делать.

Все это отняло время от нашего основного внимания - нашей собственной разработки программного обеспечения.

Наконец, у нас есть (по моему настоянию) отказались от созданной мной вручную системы сценариев Perl, и мы купили коммерческую систему: Zed Builds and Bugs

Теперь, когда что-то идет не так, это проблема с нашим собственным кодом. Система сборки поставщика работает. Когда у нас есть вопросы, мы их задаем или спрашиваем у сообщества пользователей. Когда нам нужно понять, как что-то сделать, у них есть люди, чтобы ответить на наши вопросы.

И самое главное, Я снова ухожу в отпуск: -)

Я все еще отвечаю за большинство задач с системой сборки, но это уже не вопрос ее написания. Это вопрос адаптации наших существующих make-файлов, проектов Visual Studio, сценариев сборки Ant и т. Д. К новой системе.

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

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

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

1
ответ дан 18 December 2019 в 05:55
поделиться

Я могу попытаться дать несколько подсказок с моей точки зрения. В нашей компании мы использовали разную конфигурацию среды сборки и другую целевую среду. Под разной конфигурацией я подразумеваю разную архитектуру системы. И это то, что я хотел бы описать. (Хотя я не знаю, действительно ли это ваша проблема.)

Сборка продукта производилась на основе сборки env, и для запуска тестов и самого продукта его необходимо перенести в целевую среду env. Таким образом, это включало кросс-компиляцию. Мы не использовали коммерческое решение или решение для непрерывной интеграции с открытым исходным кодом, но мы использовали набор сценариев bash (не было времени на создание разумного решения :() Запуск тестов (не имеет значения, если модуль, интеграция, работоспособность, компоненты и т. Д.) Должен выполняться на целевом уровне.

Итак, вы можете задать вопрос - что такое среда разработки? Где бы вы хотели провести тесты? (Мы запускали тест на цели и небольшую часть теста также на build env) Целевая среда такая же, как среда разработки? Вам нужно выполнить сборку для различных конфигураций (платформа, программное обеспечение и т. Д.)?

Вы не указали, какие языки вы используете. Я знаю, что это может быть неактуально, но это не так :) (Даже java ведет себя по-разному на разных платформах (x86 против x86-64)

Что-нибудь еще, например, покрытие кода тестом, некоторый статический анализ кода, сделанный во время компиляции (до ..) выполнение задачи по документации я считаю не очень интересной, так как ее можно выполнять отдельными плагинами.

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: