Jenkins环境搭建及项目部署(linux)

一、   环境搭建

1.  Jenkins安装及配置

安装:

利用官方提供的Debian软件包仓库,可以自动安装和升级,首先将秘钥添加到系统。

wget -q -O  - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add  -

然后在/etc/apt/sources.list中添加一下条目:

deb https://pkg.jenkins.io/debian-stable二进制/

更新你的本地包索引,然后安装Jenkins:

1sudo apt-get update 2 3sudo apt-get install jenkins

访问:

http://IP:8080/

配置:

1) 安装构建Maven项目插件

在可选插件中搜索Maven选择下图中的插件安装。

2) 全局工具配置

在系统设置->全局工具配置中,指定Maven的安装路径,jdk的路径,git路径等。

2.  PM2安装

在需要部署项目的机器上安装Node环境,然后使用下面的命令就可以安装PM2环境。

npm install pm2 -g

3.  Sonar代码质量分析安装

基于Docker安装

1) 利用docker快速安装sonar,首先安装Docker环境,然后编写如下的docker-compose.yml

1db: 2 3    image: postgres 4 5    container_name: db 6 7    restart: always 8 9    volumes: 10 11      - $PWD/data/postgres:/var/lib/postgresql/data 12 13    environment: 14 15      - POSTGRES_USER=sonar 16 17      - POSTGRES_PASSWORD=sonar 18 19 20 21sonarqube: 22 23    image: sonarqube 24 25    container_name: sonarqube 26 27    link: 28 29      - db 30 31    environment: 32 33      - SONARQUBE_JDBC_URL=jdbc:postgresql://db/sonar 34 35      - SONARQUBE_JDBC_USERNAME=sonar 36 37      - SONARQUBE_JDBC_PASSWORD=sonar 38 39    ports: 40 41      - "0.0.0.0:9000:9000"

启动

docker-compose up -d

访问

http://IP:9000/

常用命令

1docker-compose pull   #拉取服务镜像 2 3docker-compose up -d   #启动 4 5docker-compose restart  #重启 6 7docker-compose stop  # 停止运行的容器而不删除它们,它们可以使用命令docker-compose start重新启动起来 8 9docker-compose start  #启动已经存在的容器作为一个服务 10 11docker-compose logs  #显示服务的日志输出

在Jenkins中添加Sonar

1)  下载sonar插件,SonarQube Scanner for Jenkins

2)  系统管理->系统配置下面配置sonar服务器信息

二、   项目部署

1.  Maven 项目war包部署

  • 点击页面左侧的新建按钮

  • 输入项目名称,选择构建一个Maven项目,然后点击确定

  • 配置git仓库

  • 构建触发器

  • Build

  • 构建后操作,执行sonar代码分析

  •  远程部署

1) 下载插件。首先你需要下载Deploy Plugin。

2) 在父项目的pom文件中增加远程部署插件

1<plugin> 2 3    <groupId>org.codehaus.cargo</groupId> 4 5    <artifactId>cargo-maven2-plugin</artifactId> 6 7    <version>1.6.5</version> 8 9    <configuration> 10 11        <container> 12 13            <!-- 指明使用的tomcat服务器版本 --> 14 15            <containerId>tomcat8x</containerId> 16 17            <type>remote</type> 18 19        </container> 20 21        <configuration> 22 23            <type>runtime</type> 24 25            <cargo.remote.username>Tomcat的用户名</cargo.remote.username> 26 27            <cargo.remote.password>Tomcat的密码</cargo.remote.password> 28 29        </configuration> 30 31    </configuration> 32 33    <executions> 34 35        <execution> 36 37            <phase>deploy</phase> 38 39            <goals> 40 41                <goal>redeploy</goal> 42 43            </goals> 44 45        </execution> 46 47    </executions> 48 49</plugin>

3) 为Tomcat设置用户名和密码

修改tomcat的tomcat-users.xml文件,增加tomcat的manager用户。

    4)  修改Jenkins中的配置

    在“构建后操作”中增加如下配置:

    立即构建

2.  Maven项目jar包部署

1 安装Publish Over SSH插件

Jenkins使用ssh部署jar包到目标服务器上,所以首先安装Publish Over SSH插件,直接再jenkins中的系统管理->插件管理安装即可

2 设置ssh密钥,使得可以免密登陆目标服务器

再jenkins的服务器上生成密钥

ssh-keygen  -t rsa

然后使用

ssh-copy-id usera@a.site

复制到目标服务器即可

再jenkins中 系统管理->全局设置

下把刚才生成的密钥复制粘贴到这个地方

3 配置ssh

再刚才的地方的下面配置目标服务器

以上

Name,随便起一个名字

Hostname,写目标服务服务器的地址

Username,写目标服务器上的用户名,也是执行文件的用户(可以单独配置一个用户,最好不要给太高的权限)

Remote Directory:发送到jav包到目标服务器的路径,必须存在,jenkins不会自己创建目录

下面还有高级,可以根据自己的需求更改

以上就是jenkins方面的配置

4 示例项目

在某个项目中

在构建后操作中增加Send build artifacts over ssh

Name就是选择刚才上一步配置的服务器

下面的就是选择打包后的jar包等操作

5 服务器启动

在服务器上,利用pm2监控所传输的jar包,并启动项目。

参考process.json

1{ 2 3  "apps":[ 4 5  { 6 7    "name"  : "it-eureka", 8 9    "cwd": ".", 10 11    "script": "/usr/bin/java", 12 13    "args": [ 14 15        "-Xmx100m", 16 17        "-Xss100m", 18 19       "-jar", 20 21       "it-eureka/target/it-eureka-1.0-SNAPSHOT.jar" 22 23    ], 24 25    "watch": [ 26 27       "it-eureka/target/it-eureka-1.0-SNAPSHOT.jar" 28 29    ], 30 31    "max_memory_restart": "1G", 32 33    "log_date_format": "YYYY-MM-DD HH:mm Z", 34 35    "exec_interpreter": "", 36 37    "exec_mode"  : "fork_mode" 38 39  }]}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )