名称 系统 IP 备注
gitlab ubuntu20.04.2图形化 192.168.26.130 要求有6G的内存
Jenkins Ubuntu20.04.2图形化 192.168.26.110 没有硬性要求
测试服务器 Ubuntu20.04.2图形化 192.168.26.129 没有硬性要求
timedatectl set-timezone "Asia/Shanghai" #时区改为上海
ntpdate "ntp.aliyun.com" #更正时间
出现下图错误 说明本机没有安装ntpdate
解决办法
sudo apt install ntpdate
sudo apt-get update #更新系统的软件包列表和版本信息
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl #下载依赖
sudo systemctl status ssh #查看ssh是否在运行
sudo systemctl start ssh #启动ssh
curl -fsSL https://get.gitlab.cn | /bin/bash #配置极狐gitlab软件源镜像
sudo EXTERNAL_URL="http://192.168.193.130" apt-get install gitlab-jh #开始安装gitlab
注:URL后面的参数可以是本机的IP,也可以为域名,如果设置域名需要确保域名解析到本机的IP即可。
EXTERNAL_URL 中配置的地址来访问安装成功的极狐GitLab 实例。用户名默认为 root 。如果在安装过程中指定了初始密码,则用初始密码登录,如果未指定密码,则系统会随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中, 查看随机密码并使用 root 用户名登录。
注意:出于安全原因,24 小时后,/etc/gitlab/initial_root_password 会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。
gitlab常用命令
gitlab-ctl start # 启动所有gitlab组件
gitlab-ctl stop # 停止所有gitlab组件
gitlab-ctl restart # 重启所有gitlab组件
gitlab-ctl status # 查看服务状态
gitlab-ctl reconfigure # 启动服务
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件
gitlab-ctl tail # 查看日志
输入本机IP进行登陆
注:如果出现502错误 可以等一会再刷新看看
默认用户是root
密码我们可以在/etc/gitlab/initial_root_password文件中进行查看
我们登陆上后先改密码
修改完成后我们再次登陆
登陆gitlab页面
跟着图上标的步骤来
把页面拉到下面找到 Localization 选项
选择中文简体
在页面的最下面选择保存更改
在回到主页就可以看到已设置为中文
新建项目
选择创建空白项目
git branch -a #查看分支的命令
git status #查看当前工作目录的状态
找一个文件上传到你目录下 我的是在/root 目录下
#设置用户名、邮箱为gitlab上设置的邮箱
git config --global user.name "yuansui@2527.com"
git config --global user.email "yuansui@2527.com"
git config --global --list #查看邮箱
#然后输入上面保存的地址
git clone http://192.168.193.130/root/java-project.git
git add . #把目录下的所有文件上传到git
git commit -m "你的描述" #提交信息格式
git commit -m "测试"
git push <链接(orgin是别名)> <本地仓库>:<远程分支>
git push origin master
然后我们在浏览器可以看到下面的消息
我们上面操作推送代码的时候选择的的maser分支所以这里选择maser分支查看
下图可以看出我们推送的文件
sudo apt update #更新软件包
sudo apt install openjdk-17-jdk # 下载jdk17
java -version #查看安装的 Java 版本信息
sudo apt-get install git
echo $PATH #检查 PATH 变量
vim .bashrc 或者是 vim .bash_profile #打开文件配置变量
export PATH=/usr/bin/git:$PATH #在文件尾部添加此变量
注意 文件路径 通常是
/usr/bin/git
或/usr/local/bin/git
source ~/.bashrc 或者是 source ~/.bash_profile #使命令生效
下载Jenkins的war包到本地
将我们下载的war包传输到服务器内
启动我们的war包
java -jar jenkins.war #启动war包
Jenkins默认的端口是8080如果你需要指定端口的话可以使用--httpPort=选项
java -jar jenkins.war --httpPort=8888 #启动war包并指定端口
解决办法
将jdk1.8升级到jdk11 错误显示最少需要jdk11
sudo apt install openjdk-11-jdk
将下图初始码复制下来
然后在网页访问本机的IP+8080端口 将上图保存的初始码粘贴到下图
创建你的管理员用户密码
sudo apt install maven
配置环境变量
vim .bashrc (或
~/.bash_profile
或~/.profile
,取决于你使用的是哪个shell)在文件尾部添加下行内容
export PATH=$PATH:/usr/local/maven/bin
source ~/.bashrc #使修改生效
mvn -v #查看版本信息
apt install openjdk-8-jdk #安装java环境jdk1.8
sudo systemctl status ssh #查看ssh是否启动
sudo apt install -y openssh-server #如果没安装用此命令安装
查看本机IP
进入Jenkins页面我们先去安装插件
安装maven
安装publish
构建maven项目
源码管理设置
在gitlab上查看地址
将上图获得的地址填写在下图
Branches to bulid 配置 根据项目分支情况进行填写
Build 配置
跳转到页面找到最下面的新建maven
maven按照配置
登陆我们gitlab的页面查看项目中我们pom.xml文件的路径
Build 配置
我们再次打开一个新的Jenkins页面
找到 Publish over SSH 选项 添加后端发布服务器信息
填写信息然后选择高级继续填写信息
然后返回我们的配置 添加后端服务器
注:如果上图的路径不知道可以按照下图查看
构建一下看是否能成功
如果你的出现下图报错
解决办法
sudo apt install -y default-jdk
我们构建的时候看输出的内容
解决办法
再次进行编译查看 通过下图我们可以看到我们的文件已经传输完成
我们在测试服务器进行查看
因为我的虚拟机是图形化的所以文件路径和你们的应该有所不同
你们的话可以直接在家目录下有root目录
如果你感觉路径太长 可以按照下图进行更改
然后我们将服务器的文件删除
再次跑一下任务
然后再次进入测试服务器进行查看 通过下图我们可以看出更简单了
接下来我们让它传输完成后自动将jar包启动起来
再次跑一下服务然后在服务器查看
我们上面的配置可以实现文件传输后在后端服务器自动启动jar包(服务),但是有一个问题就是我们如果已经启动运行这一个jar包(一个服务),当我们在Jenkins跑服务的时候就无法启动新的jar包,端口会冲突,所以为了更加方便我们工作,我们可以写一个脚本来实现将老的jar包(服务)删除或者移动到指定文件夹,将老的服务停止,来释放端口,从而让我们新的jar包(服务)启动。
按照下图进行配置 为文件传输前的操作
这里我们先写好脚本的路径以及名字 下面我们在服务器创建脚本文件写脚本
注:脚本的服务器是我们发布服务器的路径,脚本也是在发布服务器上的
注:脚本的路径和上面我们写的路径必须要一样
vim /root/sy.sh
这是一个简单的shell脚本有需求可自己按照需求自己写
#!/bin/bash
# 删除历史数据
rm -rf /home/sy/data/my.*.jarappname=$1
# 获取正在运行的jar包pid
pid=$(ps -ef | grep 'my' | grep 'java -jar' | awk '{print$2}')# 如果pid为空,提示一下,否则,执行kill命令
if [ -z "$pid" ]
then
echo "$appname 未启动"
else
kill -9 $pid
echo "$appname 正在停止...."
fi# 等待一段时间,确保进程已经停止
sleep 5# 再次检查进程是否已经停止
if ps -p $pid > /dev/null
then
echo "$appname 停止失败"
else
echo "$appname 已成功停止"
fi
保存后我们的配置也就完成了。
注:上面的配置可以提交代码后我们进行合并,就会自动部署更新代码也就是我们的jar包
就是说我们将新的代码提交到代码仓库,然后选择合并,在跑一下代码就可以自动将代码达成jar包自动传输到我们的服务器,脚本会自动将我们旧的jar包停止,将新的jar包启动。
但是需要我们手动的去合并和跑一下服务:下图就是跑服务 这是大多数公司常用的配置。
如果你想提交代码后不用再手动去合并和跑服务可以继续按下面的操作进行配置
Build Authorization Token Root | Jenkins pluginhttps://plugins.jenkins.io/build-token-root/
选择我们的项目
注意这一步路径别写错了
http://192.168.26.110:8080/buildByToken/build?job=first&token=112233
说明:
http://192.168.26.110:8080/ #是你Jenkins的访问路径
buildByToken/build?job=first #是你Jenkins上的Item项目名称
&token=112233 #是你项目设置的身份令牌
触发事件按你们自己需求来
按照第5步操作完成后然后再按照第4步重新添加一下webhooks就可以了
以上配置完成了,但是不建议使用第四步扩展,这样会消耗更多的资源,而且每次提交代码都要构建一次服务 并不合理,同样也是需要手动合并才行。