Jenkins+Gitlab实现持续集成持续部署
一、GITLAB安装与使用
1、GITLAB安装要求
(1)中文文档地址
 https://docs.gitlab.cn/jh/install/requirements.html
(2)硬件要求
- 4GB RAM 是必需的最小内存,支持多达 500 名用户
8GB RAM 支持多达 1000 名用户 - 4 核 是推荐的最小核数,支持多达 500 名用户
8 核支持多达 1000 名用户 
2、安装步骤
官方安装文档:https://gitlab.cn/install/?version=ce
(1)安装所需依赖
# 注:root用户下不必加sudo
sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
(2)配置镜像
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
(3)开始安装
sudo EXTERNAL_URL="http://192.168.44.103" yum install -y gitlab-jh
注:除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。
(4)gitlab常用命令
gitlab-ctl start                  # 启动所有 gitlab 组件;
gitlab-ctl stop                   # 停止所有 gitlab 组件;
gitlab-ctl restart                # 重启所有 gitlab 组件;
gitlab-ctl status                 # 查看服务状态;
gitlab-ctl reconfigure            # 启动服务;
vi /etc/gitlab/gitlab.rb         # 修改默认的配置文件;
gitlab-ctl tail                   # 查看日志;
二、Jenkins安装
1、 jenkins安装要求
(1)硬件要求
- 内存>=256m
 - 磁盘>=1G(如果使用docker方式安装,磁盘空间应大于10G)
 
(2)java版本要求
- Jenkins 2.357 及以后版本最低需要 Java 11,否则启动时会报错
 - Jenkins 2.357以前的版本可以使用jdk8
 
2、使用rpm方式安装
(1)获取安装包
 安装包下载地址:https://mirrors.jenkins-ci.org/redhat-stable/

(2)将下载的安装包上传到服务器上

(3)执行安装命令
# 执行安装命令
[root@jenkins software]# rpm -ivh jenkins-2.346.3-1.1.noarch.rpm
# 查看安装完成后的目录
[root@jenkins software]# find / -iname jenkins

注:安装后目录说明
/usr/lib/jenkins/ #jenkins安装目录,WAR包会放在这里。
/etc/sysconfig/jenkins #jenkins配置文件
/var/lib/jenkins/ #默认的JENKINS_HOME。
/var/log/jenkins/jenkins.log #日志文件
(4)配置Jenkins
# 打开配置文件
[root@jenkins init.d]# vim /etc/init.d/jenkins
# 配置JDK
/opt/module/jdk-11.0.15.1 # 此处配置为你本地jdk安装路径即可

(5)启动Jenkins
## 启动服务
systemctl start jenkins.service
## 停止服务
systemctl stop jenkins.service
## 重启服务
systemctl restart jenkins.service
## 服务自启动
systemctl enable jenkins.service
## 服务关闭自动启动
systemctl disable jenkins.service
## 检查服务状态
systemctl status jenkins.service
## 显示所有已启动的服务
systemctl list-units  --type=service
注:启动后访问可能会出现的问题
- 界面初始化的时间过长,则需要修改相关配置文件。
 
 原因:因为访问官网太慢。我们只需要换一个源,不使用官网的源即可
 现象:

解决方法:
1.1 找到jenkins工作目录,打开文件hudson.model.UpdateCenter.xml
# 查找文件
[root@jenkins ~] find / -name *.UpdateCenter.xml
/var/lib/jenkins/hudson.model.UpdateCenter.xml
1.2 编辑文件
[root@jenkins ~] vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
# 将url标签里面的内容替换为下面的地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
(6)基本配置
- 初次登陆,将提示路径下的密码粘贴到输入框中
 

[root@jenkins ~] cat /var/lib/jenkins/secrets/initialAdminPassword
9a8be481847c48eca696d2c1d91c81aa
- 插件安装
 


- 创建用户
 

- 实例配置
 

- 初始化配置结束,可以使用jenkins啦
 

(7)jenkins卸载
systemctl stop jenkins.service
# rpm卸载
rpm -e jenkins
# 检查是否卸载成功
rpm -qa | grep jenkins
# 删除相关文件
rm -rf /etc/sysconfig/jenkins.rpmsave
rm -rf /var/cache/jenkins/
rm -rf /var/lib/jenkins/
rm -rf /var/log/jenkins
rm -rf /usr/lib/jenkins
# 查找是否还有残留文件 有就彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
三、Jenkins + Git + Maven 自动化部署配置
1、相关环境安装
(1)jenkins服务器上安装maven
 1. maven下载地址:https://maven.apache.org/download.cgi

- 将maven上传到jenkins所在服务器
 
 将上传到服务器的maven压缩包解压到指定目录下(本实例是解压到/opt/module下)
tar -zxvf apache-maven-3.8.5-bin.tar.gz -C /opt/module

- 配置maven阿里云镜像
 
修改/opt/module/apache-maven-3.8.5/conf/settings.xml
[root@jenkins conf] vim settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.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>
  -->
<!--配置maven仓库地址 -->
  <localRepository>/data/maven/repository</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
   <!-- 配置阿里云镜像地址 -->
   <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
   </mirror>
  </mirrors>
  <profiles>
  </profiles>
</settings>
- 配置maven环境变量
 
修改 vim /etc/profile.d/my_env.sh 文件(my_env.sh为自己创建文件,若不创建也可在/etc/profile中修改)
[root@jenkins conf] vim /etc/profile.d/my_env.sh

- 检查maven是否安装成功
 
[root@jenkins conf] mvn -version

(2)git安装
# yum方式安装git
[root@jenkins ~] yum install -y git
# 查看git版本
[root@jenkins ~] git --version

(3)jenkins中安装插件
- Maven Integration plugin
 - Publish Over SSH
 - Localization: Chinese (Simplified)
 - Git
 


(4)全局配置工具

- 配置jdk
 


配置git
maven配置

2、Jenkins配置自动构建自动部署
(1)创建jekins构建任务


任务创建完成后会跳转到任务配置页面
(2)任务配置
- 源码管理配置
 

配置构建触发器
配置构建环境
配置构建前置操作



运行之前清理脚本
#!/bin/bash
# 删除历史数据
rm -rf mybatisplus
appname=$1
# 获取传入的参数
echo "arg:$1"
#获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`
echo $pid
# 如果pid为空,提示一下,否则执行kill命令
if [ -z $pid ];
# 使用 -z 做空值判断
	then
		echo "$appname not started"
	else
		kill -9 $pid
		echo "$appname stoping ...."
check=`ps -ef | grep -w $pid | grep java`
if [ -z $check ];
	then
		echo "$appname pid:$pid is stop"
	else
		echo "$appname stop failed"
fi
fi
- 配置构建
 

- 配置构建后置操作
 


(3)执行任务

至此jenkins简单构建部署案例完成啦!
Jenkins+Gitlab实现持续集成持续部署的更多相关文章
- 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
		
构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...
 - Linux-GitLab+Jenkins持续集成+自动化部署
		
GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...
 - 持续集成①安装部署jenkins从git获取代码
		
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
 - 03 持续集成和部署/基础设施 - DevOps之路
		
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
 - CI/CD持续集成/持续部署 敏捷开发
		
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...
 - CI / CD /CD 持续集成 持续交付 持续部署
		
CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...
 - ThoughtWorks开发持续集成及部署利器:Go
		
持续集成及部署利器:Go Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨 ...
 - .NET Core 从 Github到 Nuget 持续集成、部署
		
一.前言 Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手.而 Nuget 除了官方nuget.or ...
 - vsts + XX云服务器构建netcore+docker持续集成交付部署
		
持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况 ...
 - Linux环境:持续集成环境部署系列
		
之前的博客介绍了Linux环境下持续集成环境部署的一些内容,这篇博客将其整理一下,算做一个index,方便自己和大家查阅... 1.linux下安装JDK Jenkins是一个java开源的持续集成工 ...
 
随机推荐
- halcon变量窗口的图像变量不显示,重启软件和电脑都没用
			
有幸遇到halcon变量窗口的图像变量不显示,重启软件和电脑都没用这个沙雕问题,也是找了蛮久才发现解决办法特意记录一下. 这是正常情况下的窗口(左边)和图像变量不显示的窗口(右边): 解决方法: 鼠标 ...
 - RapidEye快鸟、SPOT卫星遥感影像数据
			
目前地理遥感生态网平台已发布高分辨率卫星遥感影像数据. 数据样例:百度云下载链接:https://pan.baidu.com/s/17ofPwpDM3OCHnE-LuhvUp 提取码:i0m4 ...
 - 如果一个promise永不resolve,会内存泄漏吗
			
答:跟内存泄漏没有直接关系gc的策略不会改变,如果该promise没有被人引用,就会被gc掉.如果仍被引用,就不会被gc掉.即使一个promise,resolve或者reject了,但是它还被人引用, ...
 - Tapdata Cloud 2.1.5来啦:新增支持Amazon RDS数据库,错误日志查询更便捷,Agent部署细节再优化
			
需求持续更新,优化一刻不停--Tapdata Cloud 2.1.5 来啦! 最新发布的版本中,数据连接再上新,同时新增任务报错相关信息快速查询入口,开始支持 JVM 参数自定义设置. 更 ...
 - Whats On Tap | Tapdata Cloud 如何助力大型家居连锁商城推进数字化经营?
			
Tapdata Cloud 的操作有多便捷,上手试一下就能充分了解了.--Tapdata Cloud 用户 | 报表实施 @某大型家居服务平台 一边是监管政策趋严,推动房地产回归本源,存量竞争时代开启 ...
 - pop!_OS换国内源
			
今天给电脑换源了,虽然本来的源大部分好像也都连的上(不知道是不是错觉)换的这个:阿里云镜像开源站 先进入存放源的目录:` cd /etc/apt 里面有这些文件: sources.list是要修改的, ...
 - 003 Jwt登录流程图
			
用户\角色\权限 用户是一个基本的单位 用户和角色的关系是多对多,所以要有一张保存用户和角色关系的中间表 角色也不能直接决定这个用户能做什么操作,有哪些权限, 需要再关联权限表决定 角色和权限也是多对 ...
 - Java中修饰符的分类及用法
			
访问权限修饰符: public 修饰class,方法,变量: 所修饰类的名字必须与文件名相同,文件中最多能有一个pulic修饰的类. private class不可用,方法,变量可以用: 只限于本类成 ...
 - Template -「矩阵 - 行列式」
			
#include <cstdio> int Abs(int x) { return x < 0 ? -x : x; } int Max(int x, int y) { return ...
 - js 设置滚动条位置为底部
			
if (document.getElementById("")) { document.getElementById("").scro ...