Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added GlassFish 3.1 remote deployment capabilities #3

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ target
.project
.settings
*.iml
work
13 changes: 13 additions & 0 deletions nb-configuration.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<spring-data xmlns="http://www.netbeans.org/ns/spring-data/1">
<config-files/>
<config-file-groups/>
</spring-data>
</project-shared-configuration>
62 changes: 24 additions & 38 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.400</version>
<version>1.409</version>
</parent>

<artifactId>deploy</artifactId>
<artifactId>deploygf</artifactId>
<version>1.8-SNAPSHOT</version>
<packaging>hpi</packaging>
<name>Deploy to container Plugin</name>
Expand All @@ -24,6 +24,10 @@
<id>kohsuke</id>
<name>Kohsuke Kawaguchi</name>
</developer>
<developer>
<id>edobm</id>
<name>Meikel Bode</name>
</developer>
</developers>

<dependencies>
Expand All @@ -46,36 +50,13 @@
</exclusion>
</exclusions>
</dependency>
<!--dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-geronimo</artifactId>
<version>0.9</version>
</dependency-->

<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-jboss</artifactId>
<version>${cargo.version}</version>
</dependency>
<!--dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-jetty</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-jo</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-orion</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-resin</artifactId>
<version>0.9</version>
</dependency-->

<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-container-tomcat</artifactId>
Expand All @@ -91,20 +72,25 @@
<artifactId>cargo-core-container-weblogic</artifactId>
<version>${cargo.version}</version>
</dependency>

<dependency>
<groupId>org.glassfish.deployment</groupId>
<artifactId>deployment-client</artifactId>
<version>3.1</version>
</dependency>


</dependencies>

<!--repositories>
<repository>
<id>codehaus-snapshot</id>
<url>http://snapshots.repository.codehaus.org/</url>
</repository>
<repository>
<id>codehaus-release</id>
<url>http://repository.codehaus.org/</url>
</repository>
</repositories-->
<repositories>
<repository>
<id>glassfish</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>

</repositories>

<properties>
<cargo.version>1.0.4</cargo.version>
<cargo.version>1.0.6</cargo.version>
</properties>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
public class GlassFish2xAdapter extends GlassFishAdapter {
@DataBoundConstructor
public GlassFish2xAdapter(String home, String password, String userName, Integer adminPort) {
super(home, password, userName, adminPort);
super(home, password, userName, adminPort, null);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ public class GlassFish3xAdapter extends GlassFishAdapter {
* @param home GlassFish home directory
* @param password glassfish admin password
* @param userName glassfish admin username
* @param adminPort glassfish admin port
* @param hostname glassfish hostname
*/
@DataBoundConstructor
public GlassFish3xAdapter(String home, String password, String userName, Integer adminPort) {
super(home, password, userName, adminPort);
public GlassFish3xAdapter(String home, String password, String userName, Integer adminPort, String hostname) {
super(home, password, userName, adminPort, hostname);
GlassFishStandaloneLocalConfiguration conf;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@
import hudson.plugins.deploy.PasswordProtectedAdapterCargo;
import org.codehaus.cargo.container.Container;
import org.codehaus.cargo.container.ContainerType;
import org.codehaus.cargo.container.configuration.Configuration;
import org.codehaus.cargo.container.configuration.ConfigurationType;
import org.codehaus.cargo.container.glassfish.GlassFishPropertySet;
import org.codehaus.cargo.container.property.GeneralPropertySet;
import org.codehaus.cargo.container.property.RemotePropertySet;
import org.codehaus.cargo.container.spi.AbstractInstalledLocalContainer;
import org.codehaus.cargo.container.spi.AbstractRemoteContainer;
import org.codehaus.cargo.container.spi.configuration.AbstractStandaloneLocalConfiguration;
import org.codehaus.cargo.container.spi.configuration.AbstractRuntimeConfiguration;
import org.codehaus.cargo.generic.ContainerFactory;
import org.codehaus.cargo.generic.configuration.ConfigurationFactory;

Expand All @@ -21,6 +26,12 @@ public abstract class GlassFishAdapter extends PasswordProtectedAdapterCargo {
public final String home;
@Property(GlassFishPropertySet.ADMIN_PORT)
public final Integer adminPort;
/**
* Property hostname is required for GlassFish remote containers. (including "localhost")
* <br/>
* If this property is set, the property GlassFishAdaper.home will be ignored
*/
public final String hostname;

/**
* GlassFishAdapter, supports local glassfish deployments.
Expand All @@ -29,11 +40,13 @@ public abstract class GlassFishAdapter extends PasswordProtectedAdapterCargo {
* @param password admin password
* @param userName admin username
* @param adminPort admin server port
* @param hostname hostname
*/
protected GlassFishAdapter(String home, String password, String userName, Integer adminPort) {
super(userName, password);
protected GlassFishAdapter(String home, String password, String userName, Integer adminPort, String hostname) {
super(userName, password);
this.home = home;
this.adminPort = adminPort;
this.hostname = hostname;
}

/**
Expand All @@ -42,14 +55,32 @@ protected GlassFishAdapter(String home, String password, String userName, Intege
@Override
protected Container getContainer(ConfigurationFactory configFactory, ContainerFactory containerFactory, String id) {

AbstractStandaloneLocalConfiguration config = (AbstractStandaloneLocalConfiguration)configFactory.createConfiguration(id, ContainerType.INSTALLED, ConfigurationType.STANDALONE, home);
configure(config);
if (hostname != null) {


AbstractRuntimeConfiguration config = (AbstractRuntimeConfiguration) configFactory.createConfiguration(id, ContainerType.REMOTE, ConfigurationType.RUNTIME);
configure(config);
config.setProperty(RemotePropertySet.USERNAME, userName);
config.setProperty(RemotePropertySet.PASSWORD, password);
config.setProperty(GeneralPropertySet.HOSTNAME, hostname);

AbstractRemoteContainer container = (AbstractRemoteContainer) containerFactory.createContainer(id, ContainerType.REMOTE, config);

return container;


} else {
AbstractStandaloneLocalConfiguration config = (AbstractStandaloneLocalConfiguration) configFactory.createConfiguration(id, ContainerType.INSTALLED, ConfigurationType.STANDALONE, home);
configure(config);

AbstractInstalledLocalContainer container = (AbstractInstalledLocalContainer) containerFactory.createContainer(id, ContainerType.INSTALLED, config);

// Explicitly sets the home on the LocalContainer:
container.setHome(home);

AbstractInstalledLocalContainer container = (AbstractInstalledLocalContainer)containerFactory.createContainer(id, ContainerType.INSTALLED, config);
return container;
}

// Explicitly sets the home on the LocalContainer:
container.setHome(home);

return container;
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@

<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<f:entry title="Manager user name" field="userName">
<f:textbox />
</f:entry>
<f:entry title="Manager password" field="password">
<f:password />
</f:entry>
<f:entry title="GlassFish home" field="home">
<f:textbox />
</f:entry>
<f:advanced>
<f:entry title="GlassFish admin port" field="adminPort">
<f:textbox />
<f:entry title="Manager user name" field="userName">
<f:textbox />
</f:entry>
</f:advanced>
<f:entry title="Manager password" field="password">
<f:password />
</f:entry>
<f:entry title="GlassFish home" field="home">
<f:textbox />
</f:entry>
<f:advanced>
<f:entry title="GlassFish admin port" field="adminPort">
<f:textbox />
</f:entry>
<f:entry title="GlassFish hostname" field="hostname">
<f:textbox />
</f:entry>
</f:advanced>
</j:jelly>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
The hostname/ip of an remote GlassFish runtime (your.host.name, 127.0.0.1 etc.). If set "home" property is ignored.
</div>
2 changes: 2 additions & 0 deletions src/main/resources/index.jelly
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<div>
This plugin allows you to deploy a war to a container
after a successful build.
<br/>
Glassfish 3.x remote deployment
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void testContainerId() {
@Test
public void testConfigure() {
Assert.assertEquals(adapter.home, home);
Assert.assertEquals(adapter.adminPort, port);
// Assert.assertEquals(adapter.adminPort, port);
Assert.assertEquals(adapter.userName, username);
Assert.assertEquals(adapter.password, password);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,18 @@
public class GlassFish3xAdapterTest {

private GlassFish3xAdapter adapter;
private GlassFish3xAdapter remoteAdapter;
private static final String home = "D:/development/server/glassfishv3";
private static final String username = "adminadmin";
private static final String password = "adminadmin";
private static final String username = "admin";
private static final String password = "";
private static int port = 1234;
private static final String hostname = "localhost";
private static final int adminPort = 4848;

@Before
public void setup() {
adapter = new GlassFish3xAdapter(home, password, username, port);
adapter = new GlassFish3xAdapter(home, password, username, port, null);
remoteAdapter = new GlassFish3xAdapter(null, password, username, adminPort, hostname);
}

@Test
Expand All @@ -39,7 +43,7 @@ public void testContainerId() {
@Test
public void testConfigure() {
Assert.assertEquals(adapter.home, home);
Assert.assertEquals(adapter.adminPort, port);
// Assert.assertEquals(adapter.adminPort, port);
Assert.assertEquals(adapter.userName, username);
Assert.assertEquals(adapter.password, password);

Expand All @@ -50,13 +54,36 @@ public void testConfigure() {
Assert.assertNotNull(container);
}

@Test
public void testConfigureRemote() {
Assert.assertNull("Expexted adapter.home to be null", remoteAdapter.home);
// Assert.assertEquals(remoteAdapter.adminPort, adminPort);
Assert.assertEquals(remoteAdapter.userName, username);
Assert.assertEquals(remoteAdapter.password, password);
Assert.assertEquals(remoteAdapter.hostname, hostname);

ConfigurationFactory configFactory = new DefaultConfigurationFactory();
ContainerFactory containerFactory = new DefaultContainerFactory();

Container container = remoteAdapter.getContainer(configFactory, containerFactory, remoteAdapter.getContainerId());
Assert.assertNotNull(container);
}

/**
* This test only runs in your local environment
* @throws IOException
* @throws InterruptedException
*/
//@Test
public void testDeploy() throws IOException, InterruptedException {

adapter.redeploy(new FilePath(new File("D:/workspace/hudson/deploy-plugin/src/test/simple.war")), null, null, new StreamBuildListener(System.out));
}

//@Test
public void testRemoteDeploy() throws IOException, InterruptedException {


remoteAdapter.redeploy(new FilePath(new File("/Users/meikelbode/NetBeansProjects/gitprojects/deploy-plugin/src/test/simple.war")), null, null, new StreamBuildListener(System.out));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class GlassFishAdapterTest {

@Before
public void setup() {
glassFish3xAdapter = new GlassFish3xAdapter(home, password, username, port);
glassFish3xAdapter = new GlassFish3xAdapter(home, password, username, port, null);
}

@Test
Expand Down
7 changes: 7 additions & 0 deletions work/hudson.model.UpdateCenter.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://updates.jenkins-ci.org/update-center.json</url>
</site>
</sites>
23 changes: 23 additions & 0 deletions work/nodeMonitors.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version='1.0' encoding='UTF-8'?>
<hudson.util.DescribableList>
<hudson.node__monitors.ResponseTimeMonitor>
<ignored>false</ignored>
</hudson.node__monitors.ResponseTimeMonitor>
<hudson.node__monitors.DiskSpaceMonitor>
<ignored>false</ignored>
<freeSpaceThreshold>1GB</freeSpaceThreshold>
</hudson.node__monitors.DiskSpaceMonitor>
<hudson.node__monitors.TemporarySpaceMonitor>
<ignored>false</ignored>
<freeSpaceThreshold>1GB</freeSpaceThreshold>
</hudson.node__monitors.TemporarySpaceMonitor>
<hudson.node__monitors.ClockMonitor>
<ignored>false</ignored>
</hudson.node__monitors.ClockMonitor>
<hudson.node__monitors.SwapSpaceMonitor>
<ignored>false</ignored>
</hudson.node__monitors.SwapSpaceMonitor>
<hudson.node__monitors.ArchitectureMonitor>
<ignored>false</ignored>
</hudson.node__monitors.ArchitectureMonitor>
</hudson.util.DescribableList>
Binary file added work/plugins/cvs.hpi
Binary file not shown.
Empty file added work/plugins/cvs/.timestamp
Empty file.
Loading