jenkins实现gitlab自动部署
简介Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。在DevOps流程中Jenkins充当CI/CD的角色,非常重要。环境准备干净的CentOS 7.4及以上版本的虚拟机或服务器XShell:连接虚拟机的工具...
简介
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。
这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。
在DevOps流程中Jenkins充当CI/CD的角色,非常重要。
环境准备
- 干净的CentOS 7.4及以上版本的虚拟机或服务器
- XShell:连接虚拟机的工具
安装
Jenkins的安装有多种方式,这里介绍其中一种tomcat+war包的形式。
jenkins和tomcat都是java应用,因此我们一开始必须要先安装Java。
Java安装
下载:
|
安装:
|
Tomcat安装
Jenkins是运行在tomcat中,因此还需要下载tomcat
|
Jenkins安装
Java和tomcat都安装完成后,我们就可以开始安装Jenkins了。
|
将下载的war包复制到/opt/apache-tomcat-8.0.53/webapps/路径下
|
这样就完成Jenkins的安装了。。
Tomcat服务配置
|
按字母a进入插入模式,添加以下内容,注意tomcat的安装目录:
|
填写完了,按ESC键,然后输入冒号:wq 保存并退出。
启动Tomcat
在启动之前,我们需要关闭防火墙等安全措施。
|
关闭selinux
|
启动tomcat
|
访问Jenkins
|
Jenkins配置
Jenkins首次启动需要进行一些配置,管理员密码默认在这个文件,查看密码:
cat /root/.jenkins/secrets/initialAdminPassword
Jenkins基础实战
实战这里分享前端vue项目构建和后端maven项目构建。
在开始之前需要先在系统上安装git、maven和node工具。
其中git用于下载代码仓库中的项目源代码,maven和node用于项目构建。
安装git
|
安装maven
|
安装node
|
前端Node vue项目
创建源代码项目
|
创建Jenkins任务
点击左边导航的新建任务,输入任务名称,选择任务类型为构建一个自由风格的软件项目
点击确认,进入任务配置页面
配置页面,源码管理选择Git,Repository URL填写我们源码仓库的地址。
配置构建
选择shell执行,填写shell命令
构建成功后就会生成dist目录了
前端部署
安装nginx
|
配置nginx
|
启动nginx
|
修改jenkins配置
保持配置,点击立即构建
最后访问http://虚拟机IP 即可查看vue页面
后端Maven项目
创建项目
首先到Gitlab上创建后端项目,如:luhy-maven-demo
项目Visibility Level选择Public
创建完成后,访问:
Dependencies搜索Web,选择Web:
最后点击Generate Project进行下载。
修改项目文件
解压demo.zip
替换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>
<groupId>com.exmaple</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>jason-maven-demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后下拉,找到<build>标签,修改finalName中间的值如下:
<build>
<finalName>luhy-maven-demo</finalName>
</build>
将luhy-maven-demo改为自己的项目名
再上传以下文件到src/main/java/com/example/demo/路径下面:
package com.exmaple.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author jason
* @date 2018/9/27
* @desc
*/
@RestController
public class HelloController {
@GetMapping(value = "/hello")
public String sayHello() {
return "Hello, World";
}
}
SpringBootStartApplication.java
package com.exmaple.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import com.exmaple.demo.DemoApplication;
/**
* @author jason
* @date 2018/9/27
* @desc
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(DemoApplication.class);
}
}
上传项目
最后重新将demo目录打包为demo.zip,并上传到虚拟机中。
这里推荐一个上传工具:
yum install lrzsz -y
安装完成后,执行:rz 命令
选择demo.zip
安装解压工具
yum install unzip -y
解压demo.zip
unzip demo.zip
进入到demo目录,提交代码到Gitlab的项目中
git init
git remote add origin http://git.paasdev.k2software.cn/demo/luhy-maven-demo.git
git add .
git commit -m "Initial commit"
git push -u origin master
创建Jenkins任务
构建添加执行shell,命令填写:
|
访问项目
最后通过浏览器访问项目:
http://[虚拟机IP]:8080/[项目名称]
如:
http://10.6.17.151:8080/luhy-maven-demo
出现Hello,World则表示部署成功了。
Jenkins高级实战
自动构建部署
进行Jenkins右边导航系统管理——插件管理——可选插件
搜索gitlab
安装Gitlab Plugin插件,勾选重启Jenkins
进入项目设置,找到构建触发器,勾选Build when a change ....
生成Jenkins用户token
点击右上角的用户,进入设置:
添加Token,注意保存一下token。
Gitlab允许本地IP进行Webhook:
进入Admin area—>Setttings—>Outbound requests
勾选Allow request xxx
Gitlab WebHook设置
进入项目,找到Settings—>Integrations
URL填写:http://[jenkins用户]:[token]@[触发地址]
其中触发地址可通过Jenkins项目设置里面的构建触发器获取。
最后点击下方的添加,然后点击Test,选择最上面的Push Events
下载项目代码
git clone http://10.6.16.62/root/luhy-vue-demo.git
修改代码提交代码
git commit -am "hello,world"
git push
归档下载
Vue前端项目
进入Jenkins前端demo项目,点击编辑:
找到构建选项,在下面添加:
tar zcvf dist.tar.gz dist
然后点击构建后操作,选择归档成品:
用于存档的文件,输入:dist.tar.gz
如图:
Maven后端项目
Pipeline流水线
新建Jenkins任务,选择流水线Pipeline
Vue前端项目
前端项目流水线脚本:
|
Maven后端项目
|
Pipeline from SCM
将Pipeline脚本放到git仓库中,并命名为Jenkinsfile
将前后端Pipeline脚本的checkout步骤修改如下:
|
Blue Ocean新一代UI
系统管理——插件管理——可选插件
搜索Blue Ocean,进行安装
打开任意项目,点击打开Blue Ocean
更多推荐
所有评论(0)