Как быстро развернуть активы на Amazon S3 с мишенью муравья?
-
26-09-2019 - |
Вопрос
Какой самый быстрый способ развертывать контент к CDN с мишенью муравья? My My Ant Target работает на сервере непрерывного интеграции (HUDSON). Мое текущее решение использует Curl и немного медленно. Должен ли я использовать WUT или что-то еще и как бы я сделал это в муравьеде?
<target name="Deploy">
<for param="file">
<path>
<fileset dir="${basedir}/output" includes="**/*"/>
</path>
<sequential>
<echo> Deploy @{file} </echo>
<exec executable="curl">
<arg value="-F name=value"/> <!-- params for secure access -->
<arg value= "-F file=@{file}"/>
<arg value="http://cdn.com/project"/>
</exec>
</sequential>
</for>
</target>
Несколько идей пришли к ускорению передачи контента к CDN
1) Максимальная пропускная способность трубы, используя задачу параллельного атака, чтобы одновременно перенести несколько взаимоисключающих файлов. Например, если в выходной папке есть три подпапки, каждая из них может быть дана для другой параллельной задачи, и каждый из них будет пересекать файлы, вызывая CURL при каждом файле, чтобы перенести его на CDN. http://ant.apache.org/manual/tasks/parallel.html.
2) Написать пользовательскую задачу Ant (Bash Script?), Который имел бы местные знания о сборке, так что любые файлы, которые были изменены последней сборкой, и только эти файлы будут переданы. Это предотвратит отправку файла, который уже находится на CDN.
3) Прочитайте удаленный каталог из CDN и используйте Timestamps, чтобы определить, какие файлы отправлять. Это может быть невозможно в зависимости от CDN и допускает ли он такие запросы. Я надеялся, что Wutt может сделать это, но я не вижу вариант для этого. http://wput.sourceforge.net/wput.1.html.
Решение
Решается
Я нашел блог под названием "Развертывание активов для Amazon S3 с муравьим«Что было чрезвычайно полезно. Он использует сценарий Python»S3CMD синхронизация«Что только передает файлы, которые не существуют в пункте назначения.
Я закончил эту мишень муравья:
<target name="s3Upload">
<property name="http.expires" value="Fri, 31 Dec 2011 12:00:00 GMT" />
<exec executable="${PYTHON_DIR}\python.exe" failonerror="true">
<arg value="${PYTHON_DIR}\Scripts\s3cmd" />
<arg value="--guess-mime-type" />
<arg value="--add-header=Cache-Control:public, max-age=630657344" />
<arg value="--add-header=Expires:${http.expires}" />
<arg value="--encoding=UTF-8" />
<arg value="--skip-existing" />
<arg value="--recursive" />
<arg value="--exclude=*.log" />
<arg value="--acl-public" />
<arg value="sync" />
<arg value="${CDN_DIR}/" />
<arg value="s3://my-project-cdn/" />
</exec>
</target>