返回顶部
首页 > 资讯 > 后端开发 > Python >Jenkins+Git+Maven自动化部署配置详解
  • 256
分享到

Jenkins+Git+Maven自动化部署配置详解

JenkinsGitMaven自动化部署 2023-01-09 12:01:27 256人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录基本思路1、jenkins安装Maven依赖2、git安装3、Jenkins中新建任务3.1 git配置3.2 maven配置3.3 pom.xml配置3.4 build4、自动

基本思路

服务器配置如下:

192.168.159.50 gitlab服务器(Gitlab,内存至少5个G,要不根本跑不动)

192.168.159.51 jenkins服务器(Jenkins-Server+Maven+JDK)

192.168.158.52 测试服务器(JDK)

1、jenkins安装maven依赖

image-20230107174445281

image-20230107174432629

2、git安装

git安装

这里先在jenkins这台机器上装个git

yum install -y git

image-20230107175826820

3、Jenkins中新建任务

新建一个任务,这里选择构建一个maven项目

image-20230107174543897

项目名称写first

image-20230107174603376

3.1 git配置

image-20230107174705545

输入项目地址(就是我们在自己gitlab服务器上的项目地址)

image-20230107180355689

选择分支,看你的是master分支还是main分支

image-20230107180526759

3.2 maven配置

这里写你jenkins服务器上的maven安装位置:我的是/usr/local/maven

image-20230107180845359

3.3 pom.xml配置

代码仓库中pom.xml的位置

image-20230107182015492

这里还要看你pom.xml文件的位置,如果不是直接暴露在仓库最外层,比如在demo目录下,那就要写成demo/pom.xml

3.4 build

点击构建按钮

image-20230107210906999

查看控制台输出:

image-20230107210033005

看到如下页面说明打包完成了。

image-20230107205137340

Dashboard这里也可以看到成功了,并且显示出了曾经成功和失败的时间

image-20230107210504969

去jenkins服务器上面查看是否打包成功,如下,可以看到target目录和jar包说明打包成功了

image-20230107205216694

运行jar包测试一下

java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8888

image-20230107205314375

这个只是个测试项目,只有一个负责测试的Controller,结构大概如下

image-20230107211031304

测试下简单的业务类,访问:Http://192.168.159.51:8888/index/hello

image-20230107210350535

简单业务类的测试也没有任何的问题。这样一个简单的自动化部署就完成了,但是我们还想自动把jar包传到测试服务器(192.168.159.52)上面执行,而不是我们去手动执行jar包。

4、自动化发布到测试服务器并自动执行(Test-server)

4.1 安装Publish Over SSH插件

先在jenkins服务器上安装个插件:Publish Over SSH

image-20230107212220556

选中,点击Install without restart

image-20230107212301949

4.2 修改Post Steps配置

image-20230107214419334

1、由于还没有添加测试服务器,先去System Configuration中配置

image-20230107214542507

2、在Configure System菜单里 往下拉,找到Publish over SSH

image-20230107214605456

3、添加一台目标服务器:这里我的测试服务器IP是192.168.159.52

4、测试下链接是否正常,左下角显示Success说明连接没问题

image-20230108192905445

5、再去看Post Steps中,选择Send files or execute commands over SSH

这里就可以看到我们刚才添加的testserver了,如下图所示。

image-20230108193352059

6、发布到远程服务器的配置

image-20230108201037944

这样让远程测试服务器上的jar包以后台进程方式启动

4.3 执行构建

image-20230108201449189

查看控制台输出

image-20230108201506507

查看jar包是否传到了测试服务器上,如下图。

image-20230108201903673

查看测试服务器是否执行了启动jar包的脚本(脚本就是我们在Post Steps配置的那一行)

jps

image-20230108201600380

可以看到,jar包已经被执行了。

验证业务类是否可访问,192.168.159.52:8888/index/hello

image-20230108201657871

好了,到此我们已经了解了持续集成和持续部署的基本操作,当然,这些还都是皮毛,后面再研究下。

5、小插曲

5.1 构建的时候报错找不到jdk

默认yum安装java的时候会显示安装的是openjdk1.8,实则实际上只安装了jre

yum install -y java-devel

image-20230107202714630

5.2 阿里云镜像配置

修改/usr/local/maven/conf/settings.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional infORMation
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language Governing permissions and limitations
under the License.
-->

<!--
 | This is the configuration file for Maven. It can be specified at two levels:
 |
 |  1. User Level. This settings.xml file provides configuration for a single user,
 |                 and is normally provided in ${user.home}/.m2/settings.xml.
 |
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -s /path/to/user/settings.xml
 |
 |  2. Global Level. This settings.xml file provides configuration for all Maven
 |                 users on a Machine (assuming they're all using the same Maven
 |                 installation). It's normally provided in
 |                 ${maven.conf}/settings.xml.
 |
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -gs /path/to/global/settings.xml
 |
 | The sections in this sample file are intended to give you a running start at
 | getting the most out of your Maven installation. Where appropriate, the default
 | values (values used when the setting is not specified) are provided.
 |
 |-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>${user.home}/.m2/repository</localRepository>
  <!-- interactiveMode
   | This will determine whether maven prompts you when it needs input. If set to false,
   | maven will use a sensible default value, perhaps based on some other setting, for
   | the parameter in question.
   |
   | Default: true
  <interactiveMode>true</interactiveMode>
  -->

  <!-- offline
   | Determines whether maven should attempt to connect to the network when executing a build.
   | This will have an effect on artifact downloads, artifact deployment, and others.
   |
   | Default: false
  <offline>false</offline>
  -->

  <!-- pluginGroups
   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
   |-->
  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>org.mortbay.jetty</pluginGroup>
  </pluginGroups>

  <!-- proxies
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <passWord>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->
  </proxies>

  <!-- servers
   | This is a list of authentication profiles, keyed by the server-id used within the system.
   | Authentication profiles can be used whenever maven must make a connection to a remote server.
   |-->
  <servers>
    <!-- server
     | Specifies the authentication information to use when connecting to a particular server, identified by
     | a unique name within the system (referred to by the 'id' attribute below).
     | 
     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are 
     |       used together.
     |
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
    -->
    
    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
    <server>
        <id>releases</id>
        <username>ali</username>
        <password>ali</password>
      </server>
      <server>
        <id>Snapshots</id>
        <username>ali</username>
        <password>ali</password>
      </server>
  </servers>

  <!-- mirrors
   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
   |
   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
   | However, this repository may have problems with heavy traffic at times, so people have mirrored
   | it to several places.
   |
   | That repository definition will have a unique id, so we can create a mirror reference for that
   | repository, to be used as an alternate download site. The mirror site will be the preferred
   | server for that repository.
   |-->
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
    <mirror>
      <!--This is used to direct the public snapshots repo in the 
          profile below over to a different nexus group -->
      <id>nexus-public-snapshots</id>
      <mirrorOf>public-snapshots</mirrorOf> 
      <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
    </mirror>
    <mirror>
      <!--This is used to direct the public snapshots repo in the 
          profile below over to a different nexus group -->
      <id>nexus-public-snapshots1</id>
      <mirrorOf>public-snapshots1</mirrorOf> 
      <url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
    </mirror>
  </mirrors>

  <!-- profiles
   | This is a list of profiles which can be activated in a variety of ways, and which can modify
   | the build process. Profiles provided in the settings.xml are intended to provide local machine-
   | specific paths and repository locations which allow the build to work in the local environment.
   |
   | For example, if you have an integration testing plugin - like cactus - that needs to know where
   | your Tomcat instance is installed, you can provide a variable here such that the variable is
   | dereferenced during the build process to configure the cactus plugin.
   |
   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
   | section of this document (settings.xml) - will be discussed later. Another way essentially
   | relies on the detection of a system property, either matching a particular value for the property,
   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
   | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
   | Finally, the list of active profiles can be specified directly from the command line.
   |
   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
   |       repositories, plugin repositories, and free-form properties to be used as configuration
   |       variables for plugins in the POM.
   |
   |-->
   <profiles> 
    <profile>
      <id>development</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
          <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
          <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    <profile>
      <!--this profile will allow snapshots to be searched when activated-->
      <id>public-snapshots</id>
      <repositories>
        <repository>
          <id>public-snapshots</id>
          <url>http://public-snapshots</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>public-snapshots</id>
          <url>http://public-snapshots</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
 
   <activeProfiles>
    <activeProfile>development</activeProfile>
    <activeProfile>public-snapshots</activeProfile>
   </activeProfiles>

  <!-- activeProfiles
   | List of profiles that are active for all builds.
   |
  <activeProfiles>
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  </activeProfiles>
  -->
</settings>

5.3 配置testserver之后构建异常

Exception when publishing, exception message [Exec timed out or was interrupted after 120,001 ms]

参考了其他大佬的文章,需要勾选Exec in pty选项

image-20230108201300736

然后重新构建就成功了

image-20230108201343290

 到此这篇关于Jenkins+Git+Maven自动化部署配置详解的文章就介绍到这了,更多相关Jenkins Git Maven自动化部署内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Jenkins+Git+Maven自动化部署配置详解

本文链接: https://lsjlt.com/news/177189.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Jenkins+Git+Maven自动化部署配置详解
    目录基本思路1、jenkins安装maven依赖2、git安装3、Jenkins中新建任务3.1 git配置3.2 maven配置3.3 pom.xml配置3.4 build4、自动...
    99+
    2023-01-09
    Jenkins Git Maven 自动化部署
  • jenkins怎么配置git自动部署
    要配置Jenkins实现Git自动部署,您可以按照以下步骤进行操作: 安装Jenkins:首先确保您已经安装了Jenkins,并...
    99+
    2023-10-27
    jenkins git
  • 详解如何使用Jenkins和Git来实现自动化部署
    Jenkins是一款开源的自动化部署工具,它可以通过配置来自动化构建、测试、部署代码等一系列操作。而Git则是一种流行的版本控制工具,能够管理代码的历史变更记录。在软件开发领域中,Jenkins和Git已经成为了必不可少的工具。本文将介绍如...
    99+
    2023-10-22
  • Jenkins+Docker+Gitee+SpringBoot自动化部署
    目录1, 搭建Jenkins平台2, Jenkins平台配置3,创建SpringBoot应用4,Gitee配置5, 新建自动化部署任务6,打包测试当我们使用传统的开发方式开发后台系统...
    99+
    2024-04-02
  • php项目自动化部署 —— Jenkins
    一 、确认本地安装好了Java的JDK 地址:Java Downloads | Oracle 因为我是在本地安装jenkins,这里用到的是java11-windows 安装JDK,并配置环境变量,csdn教程有很多 二、jinkins安装...
    99+
    2023-09-25
    jenkins 自动化 java git php
  • 怎么使用Jenkins和Git来实现自动化部署
    这篇文章主要介绍“怎么使用Jenkins和Git来实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Jenkins和Git来实现自动化部署”文章能帮助大家解决问题。一、为什么需要自...
    99+
    2023-07-05
  • 如何使用Jenkins自动部署Git代码
    Jenkins是一个流行的开源自动化服务器工具,可以用于持续集成和持续部署应用程序。通过Jenkins,可以轻松地自动化测试,构建和部署代码。在这篇文章中,我们将学习如何使用Jenkins自动部署Git代码。准备工作:安装Jenkins在本...
    99+
    2023-10-22
  • 怎么使用Jenkins自动部署Git代码
    今天小编给大家分享一下怎么使用Jenkins自动部署Git代码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。准备工作:安装J...
    99+
    2023-07-05
  • GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署
    目录一、安装 Tomcat 服务二、在 Jenkins 上安装 Maven1.安装 Maven2.创建 Jenkins 任务3.验证一、安装 Tomcat 服务 1.安装 JDK J...
    99+
    2024-04-02
  • jenkins+shell自动化部署怎么实现
    这篇文章主要介绍了jenkins+shell自动化部署怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jenkins+shell自动化部署怎么实现文章都会有所收获,下面我们一起来看看吧。通过jenkins...
    99+
    2023-06-29
  • jenkins+shell自动化部署的实现步骤
    通过jenkins与shell脚本相结合,实现war包自动部署到多台服务器上 环境: 192.168.2.120 jenkins服务器192.168.2.117 tomcat服务器 设置jenkins服务器免密钥登陆to...
    99+
    2022-06-05
    jenkinsshell自动化部署 jenkinsshell自动化
  • docker+gitlab+jenkins从零搭建自动化部署
    目录前言:一、安装Docker二、Docker 安装Jenkins1. 搜索仓库中的jenkins镜像2. 通过拉取jenkins镜像到本地images中3. 启动jenkins容器...
    99+
    2024-04-02
  • Jenkins中怎么实现Pipeline自动化部署
    本篇文章给大家分享的是有关Jenkins中怎么实现Pipeline自动化部署,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Jenkins前的一些设置为了快速搭建Jenkin...
    99+
    2023-06-19
  • Jenkins自动化部署SpringBoot项目的实现
    目录1、Jenkins介绍1.1、概念1.2、优势1.3、Jenkins目的2、环境准备3、Jenkins下载3.1、下载3.2、运行3.3、问题解决4、Jenkins配置4.1、用...
    99+
    2023-01-13
    Jenkins自动化部署SpringBoot Jenkins部署SpringBoot
  • 怎么搭建jenkins实现自动化部署
    要搭建Jenkins实现自动化部署,您需要按照以下步骤进行操作:1. 安装Jenkins:您可以从Jenkins官方网站下载适用于您...
    99+
    2023-08-12
    jenkins
  • 如何使用 Jenkins 自动化 PHP 云端部署?
    通过 jenkins 自动化 php 云端部署,您可以:安装 php 插件并创建新的管道作业。定义构建和部署阶段,包括安装依赖项、运行测试和条件性部署代码。将构建和部署过程自动化,提高代...
    99+
    2024-05-06
    php jenkins laravel git composer
  • Maven+Tomcat8 实现自动化部署的方法
    本文介绍了Maven+Tomcat8 实现自动化部署的方法,分享给大家,具体如下:1.配置tomcat-users.xml首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml):<...
    99+
    2023-05-31
    maven tomcat8 自动部署
  • Jenkins+Docker 一键自动化部署 SpringBoot 项目的详细步骤
    目录Jenkins+Docker 一键自动化部署 SpringBoot 项目一、安装docker1.确保 yum 包更新到最新2.卸载旧版本(如果安装过旧版本的话)3.安装需要的软件...
    99+
    2024-04-02
  • Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤
    目录环境说明Docker安装Gogs安装Docker中托管.NetCore服务Jenkins安装使用Jenkins自动化总结环境说明 腾讯云轻量服务器, 配置 1c 2g ...
    99+
    2024-04-02
  • Jenkins自动化部署Vue项目的方法实现
    目录jenkins介绍1. 环境准备2. 首先登录服务器更新系统软件3. 安装Java和git4. 安装nginx5. 安装Jenkins6. 用jenkins创建一个构建任务7. ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作