[jenkins] auto deploy to tomcat

kill-still

Пытаюсь заставить дженкинса деплоить сбилденый проект на другой томкат.
Добавляю в "Post Step" шэлл скрипт:

curl -T - -u admin:password 'http://remore_host:8090/manager/html/deploy?update=true&path=/my-war-.0.1-SNAPSHOT' < ../builds/$BUILD_ID/my-war-0.0.1-SNAPSHOT.war

он отвечает:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>403 Access Denied</title>
<style type="text/css">
<!--
BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}
H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
PRE, TT {border: 1px dotted #525D76}
A {color : black;}A.name {color : black;}
-->
</style>
</head>
<body>
<h1>403 Access Denied</h1>
<p>
You are not authorized to view this page.
</p>
<p>
If you have already configured the Manager application to allow access and
you have used your browser's back button, used a saved book-mark or similar
then you may have triggered the cross-site request forgery (CSRF) protection
that has been enabled for the HTML interface of the Manager application. You
will need to reset this protection by returning to the
<a href="/manager/html">main Manager page</a>. Once you
return to this page, you will be able to continue using the Manager
appliction's HTML interface normally. If you continue to see this access
denied message, check that you have the necessary permissions to access this
application.
</p>
<p>
If you have not changed
any configuration files, please examine the file
<tt>conf/tomcat-users.xml</tt> in your installation. That
file must contain the credentials to let you use this webapp.
</p>
<p>
For example, to add the <tt>manager-gui</tt> role to a user named
<tt>tomcat</tt> with a password of <tt>s3cret</tt>, add the following to the
config file listed above.
</p>
<pre>
&lt;role rolename="manager-gui"/&gt;
&lt;user username="tomcat" password="s3cret" roles="manager-gui"/&gt;
</pre>
<p>
Note that for Tomcat 6.0.30 onwards, the roles required to use the manager
application were changed from the single <tt>manager</tt> role to add the
following four roles. (The manager role is still available but should not be
used as it avoids the CSRF protection). You will need to assign the role(s)
required for the functionality you wish to access.
</p>
<ul>
<li><tt>manager-gui</tt> - allows access to the HTML GUI and the status
pages</li>
<li><tt>manager-script</tt> - allows access to the text interface and the
status pages</li>
<li><tt>manager-jmx</tt> - allows access to the JMX proxy and the status
pages</li>
<li><tt>manager-status</tt> - allows access to the status pages only</li>
</ul>
<p>
The HTML interface is protected against CSRF but the text and JMX interfaces
are not. To maintain the CSRF protection:
</p>
<ul>
<li>users with the <tt>manager-gui</tt> role should not be granted either
the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>
<li>if the text or jmx interfaces are accessed through a browser (e.g. for
testing since these interfaces are intended for tools not humans) then
the browser must be closed afterwards to terminate the session.</li>
</ul>
<p>
For more information - please see the
<a href="/docs/manager-howto.html">Manager App HOW-TO</a>.
</p>
</body>
</html>

Окей, идём на remore_host, меняем tomcat-users.xml на следущее:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<role rolename="tomcat"/>
<user username="admin" password="Cthdth" roles="admin,tomcat,manager-gui,manager-script"/>
</tomcat-users>

до кучи на всякий случай меняем /webapps/manager/META-INF/context.xml на:
<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

перезапускаем томкат на remore_host, запускаем сборку на дженкинсе, теперь он выдаёт:
<html><head><title>Apache Tomcat/6.0.37 - Error report</title><style><></style> </head>
<body><h1>HTTP Status 403 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p>
<p><b>message</b> <u></u></p>
<p><b>description</b> <u>Access to the specified resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.37</h3>
</body></html>

При этом и в первом и втором случе с моей машины(все три машины в одной подсети) заходит на /manager/html, и деплоится с вёбморды нормально всё.
Что ему ещё прописать надо?

kill-still

спасибо
З.Ы. достаточно было убрать html после manager.

kill-still

слушай, может ты ещё знаешь, почему он складывает war-архивы в такие странные папки:
$BUILD_ID/ru.<site>$war-admin/archive/ru.<site>/war-admin/0.0.1-SNAPSHOT/war-admin-0.0.1-SNAPSHOT.war

а если билдить на своей машине, то в
war-admin/target/war-admin-0.0.1-SNAPSHOT.war

katrin2201

Мм, это jenkins их в такое место билдит?

kill-still

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

SergeRRRRRR

деплоит модуль мавена. Кстати, какой используется? В модуле может быть прописан путь.
Не знаю как в гудзоне, в тимсити мавен запускается с указанием goals и, собственно, все. остальное берется из конфы pom, мб в гудзоне как-то кастомно можно редактировать туже диру для деплоя, хз.

katrin2201

Там не должно быть никакой магии - посмотри на Invoke Maven в конфигурации jenkins'a - с чем он там запускается. Может профиль какой выставляется или оверрайдится что-нибудь...
Оставить комментарий
Имя или ник:
Комментарий: