Как быстро развернуть ресурсы в Amazon S3 с целью Ant? - PullRequest
0 голосов
/ 29 сентября 2010

Какой самый быстрый способ развертывания контента в CDN с целью Ant?Моя цель Ant работает на сервере непрерывной интеграции (Hudson).Мое текущее решение использует curl и немного медленное.Должен ли я использовать wput или что-то еще, и как мне это сделать в ant?

<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.) максимально увеличить пропускную способность канала, используя задачу ant для одновременной передачи нескольких взаимоисключающих наборов файлов.Например, если в выходной папке есть три подпапки, каждая из них может быть передана отдельной параллельной задаче, и каждая будет перебирать файлы, вызывая curl для каждого файла для передачи его в cdn.http://ant.apache.org/manual/Tasks/parallel.html

2) напишите пользовательскую задачу ant (сценарий bash?), Которая будет иметь локальные знания о сборке, чтобы все файлы, которые были изменены в последней сборке, отмечались и передавались только эти файлы.Это предотвратит отправку файла, который уже находится на cdn.

3) прочитает удаленный каталог с cdn и использует временные метки, чтобы определить, какие файлы отправлять.Это может быть невозможно в зависимости от cdn и от того, разрешены ли такие запросы.Я надеялся, что wput сможет это сделать, но я не вижу возможности для этого.http://wput.sourceforge.net/wput.1.html

1 Ответ

2 голосов
/ 30 сентября 2010

ПОСТАНОВИЛИ

Я нашел блог под названием " Развертывание ресурсов в Amazon S3 с помощью Ant ", который был чрезвычайно полезен. Он использует скрипт Python ' s3cmd sync ', который передает только файлы, которые не существуют в месте назначения.

Я закончил с этой целью муравья:

<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>
...