Skip to content

Commit bf590a0

Browse files
First Commit
0 parents  commit bf590a0

38 files changed

+709
-0
lines changed

.gitignore

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
i### Gradle template
2+
.gradle/
3+
build/
4+
5+
### Java template
6+
*.class
7+
.settings
8+
.classpath
9+
.project
10+
11+
# Package Files #
12+
*.war
13+
*.ear
14+
15+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
16+
hs_err_pid*
17+
### JetBrains template
18+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
19+
20+
## File-based project format:
21+
*.ipr
22+
*.iws
23+
*.iml
24+
25+
## Directory-based project format:
26+
.idea/
27+
28+
## Plugin-specific files:
29+
30+
# IntelliJ
31+
/out/
32+
33+
.app-src/tmp/
34+
bower_components/
35+
dist/
36+
node_modules/
37+
.tmp/
38+
*.log

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM tomcat:8.0.20-jre8
2+
# Dummy text to test
3+
COPY target/java-web-app*.war /usr/local/tomcat/webapps/java-web-app.war

jenkins_ci_cd_docker_pipeline

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
node{
2+
3+
stage('SCM Checkout'){
4+
git url: 'https://github.com/devopstrainingbanglore/gradle-web-app.git',branch: 'master'
5+
}
6+
7+
stage(" Maven Clean Package"){
8+
def mavenHome = tool name: "Maven-3.5.6", type: "maven"
9+
def mavenCMD = "${mavenHome}/bin/mvn"
10+
sh "${mavenCMD} clean package"
11+
12+
}
13+
14+
15+
stage('Build Docker Image'){
16+
sh 'docker build -t dockerhandson/java-web-app .'
17+
}
18+
19+
stage('Push Docker Image'){
20+
withCredentials([string(credentialsId: 'Docker_Hub_Pwd', variable: 'Docker_Hub_Pwd')]) {
21+
sh "docker login -u dockerhandson -p ${Docker_Hub_Pwd}"
22+
}
23+
sh 'docker push dockerhandson/java-web-app'
24+
}
25+
26+
stage('Run Docker Image In Dev Server'){
27+
28+
def dockerRun = ' docker run -d -p 8080:8080 --name java-web-app dockerhandson/java-web-app'
29+
30+
sshagent(['DOCKER_SERVER']) {
31+
sh 'ssh -o StrictHostKeyChecking=no [email protected] docker stop java-web-app || true'
32+
sh 'ssh [email protected] docker rm java-web-app || true'
33+
sh 'ssh [email protected] docker rmi -f $(docker images -q) || true'
34+
sh "ssh [email protected] ${dockerRun}"
35+
}
36+
37+
}
38+
39+
40+
}

pom.xml

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>com.mt</groupId>
6+
<artifactId>java-web-app</artifactId>
7+
<packaging>war</packaging>
8+
<version>1.0</version>
9+
10+
<name>Maven Web Application</name>
11+
<url>http://mithuntechnologies.com</url>
12+
13+
<description>Maven Web Project</description>
14+
15+
<organization>
16+
<name>Mithun Technologies</name>
17+
<url>http://mithuntechnologies.com/</url>
18+
</organization>
19+
20+
<properties>
21+
<!-- versions -->
22+
23+
<spring.version>5.0.2.RELEASE</spring.version>
24+
<junit.version>4.12</junit.version>
25+
<log4j.version>1.2.17</log4j.version>
26+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
27+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
28+
</properties>
29+
30+
<dependencies>
31+
32+
<!-- test dependencies -->
33+
<dependency>
34+
<groupId>junit</groupId>
35+
<artifactId>junit</artifactId>
36+
<version>${junit.version}</version>
37+
<scope>test</scope>
38+
</dependency>
39+
40+
<dependency>
41+
<groupId>org.springframework</groupId>
42+
<artifactId>spring-test</artifactId>
43+
<version>3.2.3.RELEASE</version>
44+
<scope>test</scope>
45+
</dependency>
46+
47+
<dependency>
48+
<groupId>org.mockito</groupId>
49+
<artifactId>mockito-core</artifactId>
50+
<version>1.9.5</version>
51+
<scope>test</scope>
52+
</dependency>
53+
54+
<!-- compile dependencies -->
55+
56+
<dependency>
57+
<groupId>org.springframework</groupId>
58+
<artifactId>spring-core</artifactId>
59+
<version>${spring.version}</version>
60+
</dependency>
61+
<dependency>
62+
<groupId>org.springframework</groupId>
63+
<artifactId>spring-web</artifactId>
64+
<version>${spring.version}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.springframework</groupId>
68+
<artifactId>spring-webmvc</artifactId>
69+
<version>${spring.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.springframework</groupId>
73+
<artifactId>spring-context</artifactId>
74+
<version>${spring.version}</version>
75+
</dependency>
76+
77+
<!-- provided dependencies -->
78+
79+
<dependency>
80+
<groupId>javax.servlet</groupId>
81+
<artifactId>javax.servlet-api</artifactId>
82+
<version>3.1.0</version>
83+
<scope>provided</scope>
84+
</dependency>
85+
86+
<dependency>
87+
<groupId>javax.servlet</groupId>
88+
<artifactId>jstl</artifactId>
89+
<version>1.2</version>
90+
</dependency>
91+
92+
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
93+
<dependency>
94+
<groupId>ch.qos.logback</groupId>
95+
<artifactId>logback-classic</artifactId>
96+
<version>1.2.3</version>
97+
</dependency>
98+
99+
</dependencies>
100+
101+
<!-- <distributionManagement>
102+
<repository>
103+
<id>nexus</id>
104+
<name>Mithun Technologies Releases Nexus Repository</name>
105+
<url>http://13.235.8.113:8081/repository/flipkart-release/</url>
106+
</repository>
107+
<snapshotRepository>
108+
<id>nexus</id>
109+
<name>Mithun Technologies Snapshot Nexus Repository </name>
110+
<url>http://13.235.8.113:8081/repository/flipkart-snapshot/</url>
111+
</snapshotRepository>
112+
</distributionManagement> -->
113+
114+
<build>
115+
<plugins>
116+
<plugin>
117+
<groupId>org.apache.maven.plugins</groupId>
118+
<artifactId>maven-compiler-plugin</artifactId>
119+
<version>2.5.1</version>
120+
<inherited>true</inherited>
121+
<configuration>
122+
<source>1.8</source>
123+
<target>1.8</target>
124+
</configuration>
125+
</plugin>
126+
</plugins>
127+
</build>
128+
129+
130+
</project>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.rst.helloworld.service;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.stereotype.Service;
6+
import org.springframework.util.StringUtils;
7+
8+
@Service
9+
public class HelloWorldService {
10+
11+
private static final Logger logger = LoggerFactory.getLogger(HelloWorldService.class);
12+
13+
public String getDesc() {
14+
15+
logger.debug("getDesc() is executed!");
16+
17+
return "Maven + Spring MVC + Jenkins + Docker Hello World Example";
18+
19+
}
20+
21+
public String getTitle(String name) {
22+
23+
logger.debug("getTitle() is executed! $name : {}", name);
24+
25+
if(StringUtils.isEmpty(name)){
26+
return "Hello World";
27+
}else{
28+
return "Hello " + name;
29+
}
30+
31+
}
32+
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.rst.helloworld.web;
2+
3+
import java.util.Map;
4+
5+
import com.rst.helloworld.service.HelloWorldService;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RequestMethod;
13+
import org.springframework.web.servlet.ModelAndView;
14+
15+
@Controller
16+
public class WelcomeController {
17+
18+
private final Logger logger = LoggerFactory.getLogger(WelcomeController.class);
19+
private final HelloWorldService helloWorldService;
20+
21+
@Autowired
22+
public WelcomeController(HelloWorldService helloWorldService) {
23+
this.helloWorldService = helloWorldService;
24+
}
25+
26+
@RequestMapping(value = "/", method = RequestMethod.GET)
27+
public String index(Map<String, Object> model) {
28+
29+
logger.debug("index() is executed!");
30+
31+
model.put("title", helloWorldService.getTitle(""));
32+
model.put("msg", helloWorldService.getDesc());
33+
34+
return "index";
35+
}
36+
37+
@RequestMapping(value = "/hello/{name:.+}", method = RequestMethod.GET)
38+
public ModelAndView hello(@PathVariable("name") String name) {
39+
40+
logger.debug("hello() is executed - $name {}", name);
41+
42+
ModelAndView model = new ModelAndView();
43+
model.setViewName("index");
44+
45+
model.addObject("title", helloWorldService.getTitle(name));
46+
model.addObject("msg", helloWorldService.getDesc());
47+
48+
return model;
49+
50+
}
51+
52+
}

src/main/resources/logback.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
4+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
5+
<layout class="ch.qos.logback.classic.PatternLayout">
6+
7+
<Pattern>
8+
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
9+
</Pattern>
10+
11+
</layout>
12+
</appender>
13+
14+
<logger name="org.springframework" level="debug" additivity="false">
15+
<appender-ref ref="STDOUT" />
16+
</logger>
17+
18+
<logger name="com.rst.helloworld" level="debug" additivity="false">
19+
<appender-ref ref="STDOUT" />
20+
</logger>
21+
22+
<root level="debug">
23+
<appender-ref ref="STDOUT" />
24+
</root>
25+
26+
</configuration>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<beans xmlns="http://www.springframework.org/schema/beans"
2+
xmlns:context="http://www.springframework.org/schema/context"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:mvc="http://www.springframework.org/schema/mvc"
5+
xsi:schemaLocation="
6+
http://www.springframework.org/schema/beans
7+
http://www.springframework.org/schema/beans/spring-beans.xsd
8+
http://www.springframework.org/schema/context
9+
http://www.springframework.org/schema/context/spring-context.xsd ">
10+
11+
<context:component-scan base-package="com.rst.helloworld.service" />
12+
13+
</beans>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<beans xmlns="http://www.springframework.org/schema/beans"
2+
xmlns:context="http://www.springframework.org/schema/context"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:mvc="http://www.springframework.org/schema/mvc"
5+
xsi:schemaLocation="
6+
http://www.springframework.org/schema/beans
7+
http://www.springframework.org/schema/beans/spring-beans.xsd
8+
http://www.springframework.org/schema/mvc
9+
http://www.springframework.org/schema/mvc/spring-mvc.xsd
10+
http://www.springframework.org/schema/context
11+
http://www.springframework.org/schema/context/spring-context.xsd ">
12+
13+
<context:component-scan base-package="com.rst.helloworld.web" />
14+
15+
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
16+
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
17+
<property name="prefix" value="/WEB-INF/views/jsp/" />
18+
<property name="suffix" value=".jsp" />
19+
</bean>
20+
21+
<mvc:resources mapping="/resources/**" location="/resources/" />
22+
23+
<mvc:annotation-driven />
24+
25+
</beans>

0 commit comments

Comments
 (0)