简体   繁体   English

在 Jenkins 上部署 Spring 引导应用程序

[英]Deploying Spring Boot Application on Jenkins

I am deploying Spring Boot App on Jenkins port 8081. I have tomcat running on port 5050. When I deploy the App it shows a Success message but when I navigate to localhost:5050/{given context name} it shows me a 404 Not found message. I am deploying Spring Boot App on Jenkins port 8081. I have tomcat running on port 5050. When I deploy the App it shows a Success message but when I navigate to localhost:5050/{given context name} it shows me a 404 Not found信息。 I have also tried using the embedded way it doesn't work if there is any way for deploying with embedded tomcat that will be more good我也尝试过使用嵌入式方式,如果有任何方法可以使用嵌入式 tomcat 进行部署,它会更好

pom.xml pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>auth-course</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>auth-course</name>
    <description>Demo project for Spring Boot</description>

    <properties>
            <java.version>1.8</java.version>
            <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.12.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Jenkins Logs Jenkins 日志

 > git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision 23c1d2fafe6f0c1d19c479b1ae2e5b9b6492a36a (refs/remotes/origin/master)
 > git.exe config core.sparsecheckout # timeout=10
 > git.exe checkout -f 23c1d2fafe6f0c1d19c479b1ae2e5b9b6492a36a # timeout=10
Commit message: "added new dep"
 > git.exe rev-list --no-walk 70373963607fb3dd6f1919eb0e6313cfd135e6dd # timeout=10
[jenkins-deployment-1] $ cmd.exe /C "mvn clean compile package && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< com.example:auth-course >-----------------------
[INFO] Building auth-course 0.0.1-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ auth-course ---
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ auth-course ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ auth-course ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 24 source files to C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ auth-course ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ auth-course ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 24 source files to C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ auth-course ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ auth-course ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ auth-course ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.demo.SareetaApplicationTests
21:58:30.863 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.demo.SareetaApplicationTests]
21:58:30.928 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
21:58:30.991 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
21:58:31.109 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.example.demo.SareetaApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
21:58:31.398 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.example.demo.SareetaApplicationTests], using SpringBootContextLoader
21:58:31.456 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.demo.SareetaApplicationTests]: class path resource [com/example/demo/SareetaApplicationTests-context.xml] does not exist
21:58:31.464 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.example.demo.SareetaApplicationTests]: class path resource [com/example/demo/SareetaApplicationTestsContext.groovy] does not exist
21:58:31.466 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.example.demo.SareetaApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
21:58:31.469 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.example.demo.SareetaApplicationTests]: SareetaApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
21:58:31.933 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.example.demo.SareetaApplicationTests]
21:58:32.922 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\classes\com\example\demo\SareetaApplication.class]
21:58:32.937 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.example.demo.SareetaApplication for test class com.example.demo.SareetaApplicationTests
21:58:33.933 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.example.demo.SareetaApplicationTests]: using defaults.
21:58:33.948 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
21:58:34.144 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@38425407, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@43bc63a3, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@702657cc, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6a6cb05c, org.springframework.test.context.support.DirtiesContextTestExecutionListener@40a4337a, org.springframework.test.context.transaction.TransactionalTestExecutionListener@6025e1b6, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@22ff4249, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@2d1ef81a, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@4c402120, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@327514f, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@5b12b668, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@1165b38]
21:58:34.161 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.demo.SareetaApplicationTests]
21:58:34.166 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.demo.SareetaApplicationTests]
21:58:34.181 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.demo.SareetaApplicationTests]
21:58:34.188 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.demo.SareetaApplicationTests]
21:58:34.197 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.demo.SareetaApplicationTests]
21:58:34.200 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.demo.SareetaApplicationTests]
21:58:34.247 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@179ece50 testClass = SareetaApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@3b0090a4 testClass = SareetaApplicationTests, locations = '{}', classes = '{class com.example.demo.SareetaApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@42607a4f, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@64485a47, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4c762604, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@52525845], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null].
21:58:34.264 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.example.demo.SareetaApplicationTests]
21:58:34.265 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.example.demo.SareetaApplicationTests]
21:58:34.816 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.5.RELEASE)

2021-02-10 21:58:39.164  INFO 5452 --- [           main] c.example.demo.SareetaApplicationTests   : Starting SareetaApplicationTests on DESKTOP-PM4AIA1 with PID 5452 (started by Developer in C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1)
2021-02-10 21:58:39.175  INFO 5452 --- [           main] c.example.demo.SareetaApplicationTests   : No active profile set, falling back to default profiles: default
2021-02-10 21:58:47.344  INFO 5452 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2021-02-10 21:58:48.015  INFO 5452 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 622ms. Found 4 repository interfaces.
2021-02-10 21:58:54.388  INFO 5452 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$db2b2bf7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-02-10 21:58:56.598  INFO 5452 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-02-10 21:58:58.389  INFO 5452 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2021-02-10 21:58:59.098  INFO 5452 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2021-02-10 21:58:59.636  INFO 5452 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.3.10.Final}
2021-02-10 21:58:59.645  INFO 5452 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2021-02-10 21:59:01.012  INFO 5452 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2021-02-10 21:59:04.109  INFO 5452 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2021-02-10 21:59:09.888  INFO 5452 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-02-10 21:59:23.250  INFO 5452 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@32b46831, org.springframework.security.web.context.SecurityContextPersistenceFilter@13cc31ae, org.springframework.security.web.header.HeaderWriterFilter@34ab26a, org.springframework.security.web.authentication.logout.LogoutFilter@671d97bc, com.example.demo.security.jwt.JwtAuthenticationFilter@5353dd09, com.example.demo.security.jwt.JwtAuthorizationFilter@320ff86f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4bfa5eb9, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@ee2ae9a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@192b472d, org.springframework.security.web.session.SessionManagementFilter@12209826, org.springframework.security.web.access.ExceptionTranslationFilter@176333ee, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6eabe718]
2021-02-10 21:59:40.560  INFO 5452 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-02-10 21:59:41.490  WARN 5452 --- [           main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-02-10 21:59:51.868  INFO 5452 --- [           main] c.example.demo.SareetaApplicationTests   : Started SareetaApplicationTests in 76.819 seconds (JVM running for 83.918)
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 84.83 s - in com.example.demo.SareetaApplicationTests
2021-02-10 21:59:54.810  INFO 5452 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2021-02-10 21:59:54.828  INFO 5452 --- [       Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2021-02-10 21:59:54.839  INFO 5452 --- [       Thread-3] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2021-02-10 21:59:54.950  INFO 5452 --- [       Thread-3] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-war-plugin:3.2.2:war (default-war) @ auth-course ---
[INFO] Packaging webapp
[INFO] Assembling webapp [auth-course] in [C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [3006 msecs]
[INFO] Building war: C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT.war
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.1.5.RELEASE:repackage (repackage) @ auth-course ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:02 min
[INFO] Finished at: 2021-02-10T22:00:41+05:00
[INFO] ------------------------------------------------------------------------
[DeployPublisher][INFO] Attempting to deploy 1 war file(s)
[DeployPublisher][INFO] Deploying C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT.war to container Tomcat 8.x Remote with context jenkins-project-1
  Redeploying [C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT.war]
  Undeploying [C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT.war]
  Deploying [C:\Users\Developer\.jenkins\workspace\jenkins-deployment-1\target\auth-course-0.0.1-SNAPSHOT.war]
Finished: SUCCESS

Jenkins is a CI/CD software to build your application (and not to deploy it on the Jenkins server). Jenkins 是一个 CI/CD 软件,用于构建您的应用程序(而不是将其部署在 Jenkins 服务器上)。 Where you run it is a different topic.在哪里运行它是一个不同的主题。 Jenkins does everything right building your java executable (.war). Jenkins 可以正确构建您的 java 可执行文件 (.war)。 What you should do now is to run this built executable on a server.你现在应该做的是在服务器上运行这个构建的可执行文件。

Consider using Docker to build your application in Jenkins and start the resulting docker container on a different server.考虑使用 Docker 在 Jenkins 中构建您的应用程序,并在不同的服务器上启动生成的 docker 容器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM