持续集成交付CICD:Jenkins部署

news2024/9/19 20:03:54

目录

一、理论

1.CI/CD

2.Gitlab内置持续集成

3.Jenkins安装与部署

4.Gitlab服务部署

5.Jenkins服务部署

6.Tomcat服务部署

7.Jenkins–Pipeline流水线项目构建

二、实验

1.Gitlab服务部署

2.Jenkins服务部署

3.Tomcat服务部署

4.Jenkins–Pipeline流水线项目构建

三、问题

1.报错FirewallD is not running

2.Gitlab报错502

3.Gitlab提交代码申明报错

4.linux下安装新JDK

5.jenkins插件scale安装失败

6.Jenkins中正则表达式未匹配

7.Gitlab界面添加SSH key报错ssh key已经存在

8.连接 Gitlab的PostgreSql数据库有哪些方式

9.Jenkins新建项目中源码管理使用Git时

10. jenkins登录报错

11.tomcat账户密码登录报错

12.jenkins添加Git项目时报错

13.jenkins 设置Git sshkey 凭证后报错

14.流水线进行编译打包失败

15.流水线报错 mvn: 未找到命令

四、总结


一、理论

1.CI/CD

(1)概念

① CI:

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了 新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确 地集成在一起。

② CD:

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近 真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环 境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

2.Gitlab内置持续集成

(1)概念

① 持续集成(CI)

1)集成团队中每个开发人员提交的代码到代码存储库中。

2)开发人员在merge或者pull请求中合并拉去新的代码。

3)在提交或者合并更改到代码库之前,会触发了构建,测试和新代码验证的管道。

4)CI 可帮助您在开发周期的早期发现并减少错误。

② 持续交付(CD)

1)可通过结构化的部署管道确保将经过CI验证的代码交付给您的应用程序。

2)CD可以将经过验证的代码更快地移至您的应用程序。

③ 持续集成交付(CI/CD)

CI/CD一起可以加快团队为客户和利益相关者交互成果的速度。CI 和 CD必须无缝协作,以使您的团队快速有效的进行构建,并且对于确保完全优化的开发实践至关重要。

④ 设计步骤

根据持续集成的设计,代码从提交到生产,整个过程有以下几步:

1)提交
流程的第一论,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)
测试(第一轮)
代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试.

2)构建
通过第一轮测试,代码就可以合并进主干。就算可以交付了。
交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源〔样式表、JS脚本、图片)等等。
测试(第二轮)
构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。

3)部署
过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(tarfilename.tar*]存档,发到生产服务器。

4)回滚
一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。

(2) Gitlab的CI/CD优势

1)开源:ci/cd是开源gitlab社区版和专有gitlab企业版的一部分。
2)易于学习:具有详细的入门文档。
3)无缝集成:gitlab的ci/cd是gitlab的一部分,支持从计划到部署,具有出色的用户体验。
4)可扩展:测试可以在单独的计算机上分布式运行,可以根据需要添加任意数量的计算机。
5)更快的结果:每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
6)针对交付进行了优化:多个阶段、手动部署、环境和变量。

(3)Gitlab的CI/CD特点

1)多平台:UNIX,WINDOWS,macOS和任何其他支持GO的平台上执行构建。

2)多语言:构建脚本是命令行驱动的,并且可以与java、php、ruby、c和其他语言一起使用。

3)稳定构建:构建在gitlab不同的机器上运行。

4)并行构建:gitlab CI/CD在多台机器上拆分构建,以实现快速执行。‘

5)实时日志记录:合并请求中的链接将您带到动态更新的当前构建日志。

6)灵活的管道:您可以在每个阶段定义多个并行作业,并且可以触发其他构建。

7)版本管道:一个.gitlab-ci.yml文件包含您的测试,整个过程的步骤,是每个人都能贡献更改,并确保每个分支
获得所需的管道。

8)自动缩放:您可以自动缩放构建机器,以确保立即处理您的构建并降低成本。

9)构建工件:您可以将二进制文件和其他构建工件上载到gitlab并浏览和下载它们。

10)docker支持:可以使用自定义docker镜像,作为测试的一部分启动服务,构建新的dockers镜像,甚至可以在k8s上运行。

11)容器注册表:内置的容器注册表,用于存储,共享和使用容器镜像。

12)受保护的变量:子啊部署期间使用受每个环境保护的变量安全地存储和使用机密。
环境:定义多个环境。

(4)Gitlab的CI/CD组件

为了运行测试,至少需要一个 GitLab 实例、一个 GitLab Runner、一个gitlab-ci文件:

① Gitlab CI/CD

1)Gitlab的一部分,Gitlab是一个web应用程序,具有将其状态存储在数据库中的API。

2)除了Gitlab的所有功能之外,它还管理项目、构建并提供一个不错的用户界面。

② Gitlab Runner

1)是一个处理构建的应用程序。

2)它可以单独部署,并通过API 与 Gitlab CI/CD 一起使用。

③ .gitlab-ci.yml

定义流水线作业运行,位于应用项目根目录下 。

(5)  Gitlab CI/CD工作原理

1)将代码托管到git存储库中;

2)在项目根创建ci文件 .gitlab-ci.yml,在文件中指定构建,测试和部署脚本;

3)gitlab将检测到它并使用名为gitlab runner的工具运行脚本;

4)脚本被分组为作业,它们共同组成了一个管道。

管道状态也会由GitLab显示:

最后,如果出现任何问题,可以轻松地 回滚所有更改:


3.Jenkins安装与部署

(1) 概念

官网:https://www.jenkins.io/

Jenkins是一个广泛用于持续集成的可视化web自动化工具,Jenkins可以很友好的支持各种语言的项目构建,也可以完全兼容ant maven、gradle等多种第三方构建工具,同时跟svn git能无缝集成,也支持直接与知名源代码托管网站,比如 github、bitbucket直接集成,而且插件众多,在这么多年的"技术积累之后,在国内大部分公司都有使用Jenkins。

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。主要做的事情就是从git中拉取代码,根据配置信息打包;把打好的包传输到目标服务器,并可以执行一些shell脚本,使项目打包发布一键完成。
 

(2)特点

1)开源的ava语言开发持续集成工具,支持持续集成,持续部署。

2)易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。

3)消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。

4)分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

5)文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

6)丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

(3)安装和持续集成环境配置

使用三台服务器:一台Gitlab仓库服务器、一台Jenkins服务器(JDK、Git、Maven)、一台Tomcat测试服务器。

4.Gitlab服务部署

(1)介绍

官网:https://about.gitlab.com/

GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

(2)Gitlab与Github区别

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发。
Github服务器在别人手上,所有的代码需要上传到别人的服务器上。Gitlab可以看作是一个个人版的Github。

(3)Gitlab安装

1.安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
2.启动ssh服务&设置为开机启动
systemctl enable sshd && systemctl start sshd
3.设置postfix开机自启,并启动,postfix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
4.开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果关闭防火墙就不需要做以上配置
关闭防火墙和增强机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#使用命令行模式在线下载
1)第一个下载源
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/7/gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm/download.rpm

2)第二个下载源
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlabce/yum/el7/gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm
#--no-check-certificate 不进行证书验证


#安装
rpm -ivh gitlab-ce-12.10.14-ce.0.el6.x86_64.rpm

(4)修改Gitlab配置

vim /etc/gitlab/gitlab.rb
external_url 'http://xxxxxxx' #29行,ip地址:端口;外部访问的地址
nginx['listen_port'] = 82 #1197默认注释。修改为82端口
unicorn['worker_processes'] = 2 #736行,设置gitlab占用内存大小

重载配置及启动gitlab

gitlab-ctl reconfigure #重新加载配置

gitlab-ctl restart #重启服务

#开机自启
systemctl enable gitlab-runsvdir.service

试着用IP 直接访问 IP:82

http://192.168.204.8:82/

修改管理员密码后,即可登录

(5)Gitlab用户管理

创建用户组

组名: test
组描述:no
组权限: Private

权限等级分三种:

1)Private 私有的,只有你自己或者组内的成员能访问

2)Internal 所有登录的用户

3)Public 公开的,所有人都可以访问

创建项目

Project name(项目名) : web test
Visibility level: Private

代码上传

#安装git
yum install -y git

git config --global user.name "root" #全局声明
git clone http://192.168.204.8:82/root/web-test.git #将项目克隆到服务器
输入密码:(之前修改的)
cd web-test #切换目录
git add . #将代码上传到工作区
git commit -m "Initial commit" #提交代码申明
git push -u origin master #将代码推送到Gitlab

用户创建

菜单栏More选择Admin Area

创建新用户: New user

Name: david
Username: david
Email: XXX@qq.com

#项目上限
Project limit: 100000
Access level: Regular (普通用户类型)
              Admin (可以访问所有)

点击创建,在生成用户的右侧点击创建密码
点下面的保存你修改,save change!

④ 添加用户到组

菜单Groups选择Explorer groups

#添加用户 
Gitlab member or Email address:david

#选择用户权限
Choose a role permission: Owner

#激活
Invite

Gitlab用户在组里面有5种不同权限:

1)Guest:可以创建issue、发表评论,不能读写版本库

2)Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

3)Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限

4)Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限

5)Owner:可以设置项目访问权限·Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

⑤使用新用户登录,第一次登录系统会让更改密码

5.Jenkins服务部署

(1)安装

官网:https://www.jenkins.io/

华为云下载jenkins:

Index of jenkins-local/redhat-stable (huaweicloud.com)
新版的Jenkins需要安装JDK11的JAVA环境,所以我们首先要配置JDK

Java Archive Downloads - Java SE 11 | Oracle 中国
下载完之后拖到opt目录下

cd /opt

#安装JDK11
rpm -ivh jdk-11.0.15.1_linux-x64_bin.rpm
#安装Jenkins
rpm -ivh jenkins-2.332.3-1.1.noarch.rpm

(2)  修改Jenkins配置文件

vim /etc/sysconfig/jenkins
JENKINS_PORT="8080" #修改默认端口,根据所需修改
systemctl start jenkins.service

在浏览器访问IP:端口 (记得这里要把防火墙给关闭)

#查看密码
cat/var/lib/jenkins/secrets/initialAdminPassword

在浏览器访问,选择自行选择插件安装,选择None全部不安装

第一次进入后,会让创建一个管理员账户与密码

(3)Jenkins添加汉化插件

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索Chinese、Locale插件

在Manage Jenkins–>Configure System中设置如下

zh_CN

解决插件安装完,中文简体部分不翻译在Locale中,将语言设置为en_US,重启,再设置为zh_CN;注:zh_TW为中文繁体(因为版本问题可能会导致部分英文无法被识别)

Locale插件需要在2.346.3版本及以上安装

 (4)用户权限管理

① 安装插件

Role-based Authorization Strategy:主要用于用户权限管理

系统管理-全局安全配置-授权策略选择刚添加的role-based

添加完后可以再管理界面看到如下功能选项

Manage and Assign Roles

点击进入

Glabal rales (全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色)︰针对菜个或者某些项目的角色
Node rales(节点角色)︰节点相关的权限

 添加角色

添加以下三个角色:
TEST: 该角色为全局角色。这个角色需要绑定Dverall下面的Read权限,是为了给所有用户绑定最基本的jenkins访问权限。
注意:如果不给后续用户绑定这个角色,会报错误:用户名is missing the Overall/Read permission
test1:该角色为项目角色。使用正则表达式绑定david.*,意思是只能操作zzh开头的项目。
test2:该角色也为项目角色。绑定mao.*,意思是只能操作wxd开头的项目。

③ 创建用户

路径:系统管理–>管理用户–>新建用户
新建两个用户001与002

用户名:001
密码:XXXXXXXX
确认密码:XXXXXXXX
全名:001

用户名:002
密码:XXXXXXXX
确认密码:XXXXXXXX
全名:002

查看用户列表

④ 切换账户

http://192.168.204.15:8080

⑤ 权限分配

系统管理–>Manage and Assign Roles–>Assign Roles

#先在这添加001 002
1)Add
001  002

#接着进行全局授权,test是只读权限,admin为管理员权限
2)TEST:001 002
   admin: david

#添加要授权的账户
3)Add
001  002

#项目角色授权
001: 有权访问test1的项目
002: 有权访问test2的项目

⑥ 项目创建

在首页新建任务中,创建两个自由风格项目

#构造一个自由风格的软件项目
david001
mao001

切换账户进行访问

001
002

(5)  Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

① 安装Credentials Binding插件

点全局创建凭据

安装完插件后在系统管理,多了两个功能菜单

路径:系统管理–>Manage Credentials

Username with password:用户名和密码 比如使用Gitlab拉取代码
SSH Username with private key:使用SSH用户和密钥 SSH免密登录
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到
一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要偃存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate:通过上传证书文件的方式
常用的凭证类型有: Username with password(用户密码)和SSH Username with private key (SSH密
钥)
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。

② 安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOs7上安装Git工具Git插件安装

插件所搜Git
随便选择一个项目
点击配置,多了git选项

打开服务器安装Git工具

yum install -y git #安装git工具
git --version #查看git版本

(6) 配置Gitlab凭证

SSH免密登录

路径:系统管理-->Manage Credentials
在Gitlab服务器上,使用root用户生成钥匙对

ssh-keygen
#/root/.ssh/目录保存公钥和使用
id_rsa:私钥文件
id_rsa.pub:公钥文件
把生成的公钥放在Gitlab中,使用root用户登录Gitlab

Gitlab点击Settings

查看服务器上的公钥内容,添加密钥Gitlab

cat /root/.ssh/id_rsa.pub

将私钥复制到jenkins

cat /root/.ssh/id_rsa

生成后的凭证(如连接gitlab失败可采用令牌方式)

打开gitlab,选择仓库,复制仓库ssh克隆地址

选择一个项目
ssh:免费,需要密码

#在gitlab上面clone拉取http代码链接
URL: http://192.168.204.8:82/root/web-test.git

当免密登录ssh失败的时候,就选这里添加root账户密码然后前面选root登录就可以了

测试,选择david001的任务,选择立即构建进行拉取gitlab代码
 

#点击立即构建
Build Now

#控制台输出,可以查看详细信息,相当于操作日志
控制台输出: Finished SUCCESS 成功

(7) Maven部署

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。Maven是编译java、Python的工具(后端打包工具)
Maven官网:https://maven.apache.org/download.cgi

① Maven 源概述

 安装Maven

上传Maven软件【在Jenkins的服务器上装】
 

tar -xf apache-maven-3.8.6-bin.tar.gz #解压
mv apache-maven-3.8.6 /usr/local/maven #移动文件
#配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/java/jdk-11.0.15.1
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#刷新配置
source /etc/profile
mvn -v #查找Maven版本

③ Jenkins配置Maven

打开全局工具设置

新增JDK

别名:jdk11

#要与profile里面的一致
JAVA_HOME:/usr/java/jdk-11.0.15.1

#取消自动安装
Install automatically

③ 添加Maven

Name:maven3.8.6

MAVEN_HOME: /usr/local/maven

取消自动安装

应用保存
打开系统设置

#jdk开发工具包
键:JAVA_HOME
值:/usr/java/jdk-11.0.15.1

#maven编译工具
键:MAVEN_HOME
值: /usr/local/maven

#固定格式
键:PATH+EXTRA
值:$M2_HOME/bin

④  修改Maven的settings.xml

mkdir /opt/repo #创建本地仓库目录
vim /usr/local/maven/conf/settings.xml

6.Tomcat服务部署

(1) JDK配置

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#上传安装包
apache-tomcat-9.0.16.tar.gz #tomcat安装包
jdk-8u201-linux-x64.rpm #JDK安装包
#解压,安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm

(2)  设置JDK环境变量

#新建文件
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
#刷新变量
source /etc/profile.d/java.sh

使用java -version查看版本
 

java -version

在服务台测试
mvn help:system
出现如下,则说明mvn配置正确
 

mvn help:system

(3) 安装Tomcat

#解压安装包
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
tar -xf apache-tomcat-9.0.16.tar.gz
#移动解压包到指定目录
mv apache-tomcat-9.0.16 /usr/local/tomcat
#创建用户,便于管理服务
useradd -M -s /sbin/nologin tomcat
chown -R tomcat:tomcat /usr/local/tomcat
#添加启动脚本:
vim /etc/init.d/tomcat
#!/bin/bash
#chkconfig: 35 80 25
#description:Tomcat Service Control Script
start="/usr/local/tomcat/bin/startup.sh"
stop="/usr/local/tomcat/bin/shutdown.sh"
case "$1" in
start)
$start
;;
stop)
$stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "$0 {start|stop|restart}"
esac
#设置:
chmod +x /etc/init.d/tomcat #添加执行权限
chkconfig --add tomcat #添加到系统服务
systemctl start tomcat
lsof -i:8080 #查看服务是否启动

(4)设置终端访问

#添加tomcat用户密码用于终端登录
vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="123456" roles="tomcat,manager-script,manager-gui,admin-gui,admin-script"/>
</tomcat-users>
#开启终端访问,修改以下配置,默认不许允许远程访问,现在需要注释掉
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
#重启服务
systemctl start tomcat

#查看服务状态
systemctl status tomcat.service

网页测试

http://192.168.204.13:8080

输入用户名和密码,点击manager_webapp

7.Jenkins–Pipeline流水线项目构建

(1)  Pipeline

概念

Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

使用Pipeline有以下好处

代码: Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止: Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能: Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展: Pipeline插件支持其DSL的自定义扩展,以及与其他插件集成的多个选项。

创建Jenkins Pipeline

Pipeline脚本是由Groovy语言实现的,但是我们没必要单独去学习Groovy
Pipeline支持两种语法: Declarative(声明式)和Scripted Pipeline(脚本式)语法
**Pipeline也有两种创建方法:**可以直接在Jenkins的Web UI界面中输入脚本;也可以通过创建一个Jenkinsfile脚本文件放入项目源码库中(一般我们都推荐在Jenkins 中直接从源代码控制(SCM)中直接载入Jenkinsfile Pipeline这种方法)。

(2)安装Pipeline插件

插件搜索Pipeline

新建流水线项目

Pipeline分为:脚本式、声明式,2.0以后推荐使用声明式脚本

声明式:以pipeline开头 stages之前,可以加入环境、jdk、maven等配置,
stages(一个)阶段下有多个stage,stage下有steps,拉取代码等操作

声明式脚本(Pipeline script)

pipeline {
agent any
stages {
stage('pull code') {
steps {
echo '开始拉取代码'
}
}
stage('build project') {
steps {
echo '开始构建'
}
}
stage('publish project') {
steps {
echo '正在部署'
}
}
}
}

点击构建,查看控制台输出

(3)拉取代码

选择checkout拉取代码
选择代码仓库:Git
URL: git@192.168.48.8:root/freestyle.git
Credentials:jenkins

点击生成脚本,将内容复制到脚本中

应用、保存、再次构建

能够看到刚刚的操作
查看Jenkins工作空间/var/lib/jenkins/workspace/

ls /var/lib/jenkins/workspace/

(4) 编译打包

流水线语法

mvn clean package

将代码放入脚本中

再次点击应用、保存,并构建
查看控制台输出

查看Jenkins工作空间

ls /var/lib/jenkins/workspace/

(5) 发布

① Tomcat认证

类型:Usename with password

用户名:tomcat

密码:添加tomcat的远程账户密码

生成密钥,将war包部署到tomcat上

插件安装Deploy to container

选择流水线语法,生成pipeline脚本
 

deploy adapters: [tomcat9(credentialsId: '8108a31f-a1bc-4350-9cfb-147bafaae1e8',
path: '', url: 'http://192.168.204.13:8080')], contextPath: null, war: '**/*.war'

将脚本内容复制到代码中

点击应用、保存,并构建,查看控制台输出

访问tomcat界面

二、实验

1.Gitlab服务部署

(1)环境配置

(2)修改主机

gitlab

jenkins

tomcat

分别配置主机hosts文件

(3)Gitlab安装

安装相关依赖

启动ssh服务&设置为开机启动
设置postfix开机自启,并启动,postfix支持gitlab发信功能
开放ssh以及http服务,然后重新加载防火墙列表



如果关闭防火墙就不需要做以上配置
关闭防火墙和增强机制
上传软件并安装

(4)修改Gitlab配置

ip地址:端口;外部访问的地址

设置gitlab占用内存大小

修改为82端口

④ 重载配置及启动gitlab

重新加载配置

重启服务

开机自启

监听端口


 

试着用IP 直接访问 IP:82


修改管理员密码后,即可登录

登录

进入主界面

(5)Gitlab用户管理

创建用户组组名: test,组描述:no    ,组权限: Private

创建成功

权限等级分三种:

1)Private 私有的,只有你自己或者组内的成员能访问

2)Internal 所有登录的用户

3)Public 公开的,所有人都可以访问

创建项目

项目名 : web test,权限: Private

创建成功

代码上传

全局声明(用户、密码、邮箱)

将项目克隆到服务器

切换目录

将代码上传到工作区

提交代码申明
 将代码推送到Gitlab

查看

用户创建

点击New user

创建新用户

点击创建,在生成用户的右侧点击Edit创建密码


点下面的保存你修改,save change!

④ 添加用户到组添加用户,选择用户权限Owner

成功:

Gitlab用户在组里面有5种不同权限:

1)Guest:可以创建issue、发表评论,不能读写版本库

2)Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

3)Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限

4)Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限

5)Owner:可以设置项目访问权限·Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

⑤使用新用户登录,第一次登录系统会让更改密码

设置新密码

查看所属组

2.Jenkins服务部署

(1)安装

上传

安装并查看java版本

安装jenkins

(2)  修改Jenkins配置文件

修改默认端口,根据所需修改

启动服务

在浏览器访问IP:端口 (记得这里要把防火墙给关闭)

输入密码

在浏览器访问,选择右边的自行选择插件安装,

选择None(无)全部不安装

第一次进入后,会让创建一个管理员账户与密码

输入账户密码

实例配置

登录成功

(3)Jenkins添加汉化插件

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索Chinese、Locale插件

在Manage Jenkins–>Configure System中设置如下

选择不重启安装

重启勾选

解决插件安装完,中文简体部分不翻译在Locale中,将语言设置为en_US,重启,再设置为zh_CN;注:zh_TW为中文繁体(因为版本问题可能会导致部分英文无法被识别)

需要在2.346.3版本及以上安装

 更新版本

插件已安装

(4)用户权限管理

① 安装插件

Role-based Authorization Strategy:主要用于用户权限管理

已安装

安全域

授权策略

添加完后可以再管理界面看到如下功能选项

点击进入

Glabal rales (全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色)︰针对菜个或者某些项目的角色
Node rales(节点角色)︰节点相关的权限

 添加角色

添加以下三个角色:
TEST: 该角色为全局角色。这个角色需要绑定Dverall下面的Read权限,是为了给所有用户绑定最基本的jenkins访问权限。
注意:如果不给后续用户绑定这个角色,会报错误:用户名is missing the Overall/Read permission
test1:该角色为项目角色。使用正则表达式绑定david.*,意思是只能操作zzh开头的项目。
test2:该角色也为项目角色。绑定mao.*,意思是只能操作wxd开头的项目。

③ 创建用户

路径:系统管理–>管理用户–>新建用户


新建两个用户001与002

查看用户列表

④ 切换账户

没权限

⑤ 权限分配

系统管理–>Manage and Assign Roles–>Assign Roles

⑥ 项目创建

在首页新建任务中,创建两个自由风格项目

切换账户进行访问

 

(5)  Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

① 安装Credentials Binding插件

路径:系统管理–>Manage Credentials

安装完插件后在系统管理,多了两个功能菜单

路径:系统管理–>Manage Credentials

Username with password:用户名和密码 比如使用Gitlab拉取代码
SSH Username with private key:使用SSH用户和密钥 SSH免密登录
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到
一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要偃存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate:通过上传证书文件的方式
常用的凭证类型有: Username with password(用户密码)和SSH Username with private key (SSH密
钥)
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。


 

② 安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOs7上安装Git工具Git插件安装

随便选择一个项目

点击配置,多了git选项

打开服务器安装Git工具,查看git版本

(6) 配置Gitlab凭证

SSH免密登录:

在Gitlab服务器上使用root用户生成钥匙对

/root/.ssh/目录保存公钥和使用,查看服务器上的公钥内容,添加密钥Gitlab

查看版本

Gitlab点击Settings

将私钥复制到jenkins

生成后的凭证

打开gitlab,选择仓库,复制仓库ssh克隆地址

如连接Gitlba失败,可以采用令牌方式

测试,选择david001的任务,选择立即构建进行拉取gitlab代码

点击立即构建

控制台输出,可以查看详细信息,相当于操作日志

SUCCESS为成功

(7) Maven部署

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。Maven是编译java、Python的工具(后端打包工具)
Maven官网:https://maven.apache.org/download.cgi

① Maven 源概述

 安装Maven

上传Maven软件【在Jenkins的服务器上装】配置环境变量

刷新配置

查找Maven版本

③ Jenkins配置Maven

打开全局工具设置

③ 添加Maven

应用保存


打开系统设置

④  修改Maven的settings.xml

创建本地仓库目录

3.Tomcat服务部署

(1) JDK配置

关闭防火墙

上传安装包

解压,安装JDK

(2)  设置JDK环境变量

新建文件

刷新变量

使用java -version查看版本

在服务台测试
mvn help:system
出现如下,则说明mvn配置正确
 

mvn help:system

(3) 安装Tomcat

移动解压包到指定目录,,创建用户便于管理服务

添加启动脚本

设置:

添加执行权限,添加到系统服务,启动并查看服务是否启动

(4)设置终端访问

开启终端访问,修改以下配置,默认不许允许远程访问,现在需要注释掉


重启服务

查看服务状态

网页测试

输入用户名和密码,点击manager_webapp

登录成功

4.Jenkins–Pipeline流水线项目构建

(1)  Pipeline

创建Jenkins Pipeline

Pipeline脚本是由Groovy语言实现的,但是我们没必要单独去学习Groovy
Pipeline支持两种语法: Declarative(声明式)和Scripted Pipeline(脚本式)语法
**Pipeline也有两种创建方法:**可以直接在Jenkins的Web UI界面中输入脚本;也可以通过创建一个Jenkinsfile脚本文件放入项目源码库中(一般我们都推荐在Jenkins 中直接从源代码控制(SCM)中直接载入Jenkinsfile Pipeline这种方法)。

(2)安装Pipeline插件

新建流水线项目

Pipeline分为:脚本式、声明式,2.0以后推荐使用声明式脚本

声明式:以pipeline开头 stages之前,可以加入环境、jdk、maven等配置,
stages(一个)阶段下有多个stage,stage下有steps,拉取代码等操作

声明式脚本(Pipeline script)

点击构建,查看控制台输出

(3)拉取代码

点击”流水线语法“查看

代码生成器,生成一些pipeline代码

声明式脚本生成

官网pipeline语法说明

选择checkout拉取代码
 

点击生成脚本,将内容复制到脚本中

应用、保存、再次构建

能够看到刚刚的操作
查看Jenkins工作空间/var/lib/jenkins/workspace/

(4) 编译打包

流水线语法

将代码放入脚本中

再次点击应用、保存,并构建


查看控制台输出

查看Jenkins工作空间

ls /var/lib/jenkins/workspace/

(5) 发布

① Tomcat认证

安装插件

生成密钥,将war包部署到tomcat上

插件安装Deploy to container

选择流水线语法,生成pipeline脚本

将脚本内容复制到代码中

点击应用、保存,并构建,查看控制台输出

访问tomcat界面

三、问题

1.报错FirewallD is not running

(1)报错

(2)原因分析

防火墙未开启

(3)解决方法

通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
使用命令:

systemctl start firewalld #开启防火墙

再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

成功:

2.Gitlab报错502

(1)报错

(2)原因分析

配置文件错误、内存空间

(3)解决方法

尝试 gitlab-ctl reconfigure 、gitlab-ctl restart

如果上述两个命令无效,常见的502错误的解决方案如下:

 Gitlab官网硬件需求:Installation system requirements | GitLab

1.首先查看配置文件/etc/gitlab/gitlab.rb 中的端口号是否被占用
我们可以用gitlab-ctl tail 命令查看实时log。 发现日志报错:端口被占用。
在服务器上查看 netstat -tnlp | grep “被占用端口”
之后重启gitlab :gitlab-ctl restart

2.另外一个原因是gitlab占用内存太多,导致服务器崩溃
内存问题 解决办法,启用swap分区,步骤如下:
cat /proc/swaps 查看swap分区是否启动(无)
创建 :
dd if=/dev/zero of=/data/swap bs=512 count=8388616
创建swap大小为bs*count=4294971392(4G);
通过mkswap命令将上面新建出的文件做成swap分区
mkswap /data/swap
查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60
查看: cat /proc/sys/vm/swappiness
设置: sysctl -w vm.swappiness=60
若想永久修改,则编辑/etc/sysctl.conf文件,改文件中有vm.swappiness变量配置,默认为0
启用分区
swapon /data/swap
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
再次使用cat /proc/swaps 查看swap分区是否启动
重启gitlab。

3.服务器内存多大(参考 Gitlab硬件需求)
内存
GitLab至少需要8GB的可寻址内存(RAM +SWAP空间)才能安装和使用!内存太少的话,GitLab将在重新配置运行期间产生奇怪的错误,在使用过程中会经常产生500错误。
4GB RAM + 4GB交换支持多达100个用户,但是,速度非常慢 8GB RAM是所有安装推荐的最小内存大小,最多支持100个用户 16GB RAM最多支持500个用户 32GB RAM最多支持1,000个用户 128GB RAM最多支持5,000个用户 更多用户或高可用性查看多应用程序服务器
我们建议,即使你当前有足够的可用内存,在服务器上至少有2GB的SWAP空间。

查看内存:

查看日志:

修改配置文件:

修改前:

 

修改后:

 检查:

成功:

3.Gitlab提交代码申明报错

(1) 报错

(2)原因分析

在创建本地仓库时未定义邮箱

(3)解决方法

查看默认邮箱

申明默认邮箱

成功:

4.linux下安装新JDK

(1)如果本机自带jdk 请先卸载jdk 

rpm -qa|grep java 

rpm -e --nodeps xxxxx

查询

删除

再次查询

5.jenkins插件scale安装失败

(1)报错

(2)原因分析

Jenkins 从2.332.3更新到2.346.3或更高的版本来运行该插件

(3)解决方法

#查看jenkins安装路径
[root@jenkins opt]# ps -aux | grep jenkins
avahi       658  0.0  0.0  30196  1748 ?        Ss   13:01   0:00 avahi-daemon: running [jenkins.local]
jenkins    7441 14.1 17.5 8092236 1400548 ?     Ssl  18:41   2:00 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080
root       8459  0.0  0.0 112680   980 pts/0    S+   18:55   0:00 grep --color=auto jenkins

#所以上述路径为:
/usr/share/java/jenkins.war

#进入jenkins目录,建议此时备份原来的jenkins.war
cd /usr/share/java/

#关闭jenkins服务  
service jenkins stop

#覆盖原因来jenkins
cp -i /opt/jenkins.war ./   

#启动jenkins服务
service jenkins start

#好了,升级ok,可以看到版本已升级到最新了,但是此时管理界面出现了一些提示:
Because of a security vulnerability discovered earlier, we need to change the encryption key used to protect secrets in your configuration files on the disk. This process scans a large portion of your $JENKINS_HOME (/var/lib/jenkins), find encrypted data, re-key them, which will take some time. See this document for more implications about different ways of doing this (or not doing this.) This operation can be safely run in background, but cautious users are recommended to take backups.3 R* }/

#单击 “Re-key in background now”按钮即对整个Jenkins Home进行校验,一般需要1-2天的时间。可以在日志里查看进度。

下载新jenkins版本

关闭服务

覆盖

再次启动

成功,查看版本

提示信息

6.Jenkins中正则表达式未匹配

(1)报错

未发现任何任务

(2)原因分析

Jenkins中使用正则表达式匹配:

1)构建规则:可以使用正则表达式来匹配分支名称、标签或其他构建参数,以决定是否触发构建。
匹配所有分支:.*
匹配指定分支:master|develop

2)文件路径筛选:可以使用正则表达式来匹配特定文件路径,以决定哪些文件需要进行构建或测试。
匹配所有文件:.*
匹配特定文件类型:.*\.java

3)日志分析:可以使用正则表达式来匹配日志输出,从而提取关键信息或触发特定操作。
匹配特定关键字:ERROR|WARNING
提取日志中的变量值:VariableName: (\w+)

Jenkins用户权限管理部分的正则表达式 :

匹配所有用户权限:.*
匹配管理员权限:admin.*
匹配特定用户权限:^username.*

(3)解决方法

修改正在表达式

修改前

修改后

成功

7.Gitlab界面添加SSH key报错ssh key已经存在

(1)  报错

添加SSH key,报错ssh key已经存在。

(2) 原因分析

原先是通过authorized_keys文件添加的ssh key,没有在gitlab界面上添加,所以在gitlab界面上找不到删除的地方。

删除文件/home/git/.ssh/authorized_keys中的自己账号相关ssh key,还是无效。

(3)解决方法

① 第一种方法


>cd ~/.ssh/
>mkdir search_keys  #名字随便定
>cd search_keys
>pwd  (获取当前目录路径,如:/data/duser/.ssh/search_keys)
>ssh-keygen
输入上述路径
Generating public/private rsa key pair.
Enter file in which to save the key (/data/duser/.ssh/id_rsa): /data/duser/.ssh/search_keys/id_rsa
 
>ssh-agent bash
>ssh-add id_rsa
>cat id_rsa.pub  展示的就是新生成的公钥

然后把新生成的公钥放到git的ssh keys里面就可以

② 第二种方法(操作PostgreSQL数据库 )

查看 PostgreSQL 配置信息:

cat /var/opt/gitlab/gitlab-rails/etc/database.yml

查看 /etc/passwd 文件里边 gitlab 对应的系统用户

cat /etc/passwd | grep gitlab

切换到对应用户

su - gitlab-psql

连接数据库,连接到gitlabhq_production库

psql -h /var/opt/gitlab/postgresql -d gitlabhq_production

查看帮助命令

 \h

查看数据库

\l 

找到gitlab数据库:gitlabhq_production

 \c gitlabhq_production

查看多表

\dt

查看索引

\di 

查看所有表空间

 SELECT spcname FROM pg_tablespace; 
 批量替换某个表字段的字符串
update tableA set field=replace(field,'value1','value2')
导入与导出库
1)导出整个库:
pg_dump -h 127.0.0.1 -U testuser test >test.sql

2)导入整个库
psql -U testuser test < test.sql

注意:这里的testuser是postgres用户,test是数据库名称,而且,testuser需要有test的权限

查看单表

\d Keys

打开keys表,删除表中自己账号的key,通过title字段查看是否自己账号的ssh key。

select key from Keys

#指定内容为空
update Keys set fingerprint = NULL;

#下手操作会使gitlab报错500
alter table Keys drop column key;
alter table Keys drop column fingerprint;

然后就可以在gitlab界面添加SSH key了。

退出psql
\q 
退出登录用户
exit 

8.连接 Gitlab的PostgreSql数据库有哪些方式

(1)直连方式

查看PostgreSql通用配置信息

[root@gitlab ~]# cat /var/opt/gitlab/gitlab-rails/etc/database.yml


[root@gitlab ~]# cat /etc/passwd

 登录

#切换用户
[root@gitlab ~]# su - gitlab-psql

#-h 对应PostgreSql安装位置;-d 对应登录用户名;根据上面信息,得知默认没有密码
-sh-4.2$ psql -h /var/opt/gitlab/postgresql -d gitlabhq_production

# \l 查看有哪些库
gitlabhq_production=# \l

#一些其他常用命令,包括
 “\dt” 以列表形式查看所有表
 “\d 表名” 查看单张表信息
 “\di” 列表形式查看所有索引 

(2)Navicat方式连接

修改核心配置文件:

放开注释部分,修改为如下所示。cidr为0.0.0.0 代表不限制来访ip地址

 [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
 postgresql['custom_pg_hba_entries'] = {
   APPLICATION: [ # APPLICATION should identify what the settings are used for
     {
       type: "host",
       database: "all",
       user: "all",
       cidr: "0.0.0.0/0",
       method: "trust",
     }
   ]
 }

###修改完配置文件,刷新使其生效
[root@gitlab ~]# gitlab-ctl  reconfigure
 
###查看是否生效。/var/opt/gitlab/postgresql路径 就是你PostgreSql的安装目录
[root@gitlab ~]# vim /var/opt/gitlab/postgresql/data/pg_hba.conf
 
# 这里是自动新增的部分
host all all 0.0.0.0/0 trust

不安全的修改

这次修改会在刷新配置之后,会有报错

   依然修改/etc/gitlab/gitlab.rb文件,如下所示

 ### 允许从其他地址访问本地PostgreSql数据库
 postgresql['enable'] = true
 
 ### 允许访问的地址  0.0.0.0表示允许所有地址的访问
 postgresql['listen_address'] = '0.0.0.0'
 
 ### 开放的端口
 postgresql['port'] = '5432'
 
 ### 修改PostgreSql数据库的数据存储位置
 postgresql['data_dir'] = "/var/opt/gitlab/postgresql/data"

本次修改后,同样刷新配置,可能会有报错。

      提示‘listen_address’属性不合规什么的,但是不会影响整体功能,请忽略即可。

      确认5432端口是否已放开监听,如果没有,重启gitlab服务即可

[root@gitlab ~]# netstat -antp |grep :5432
 
###如果执行上述命令后,没有反应,重启gitlab
[root@gitlab ~]# gitlab-ctl   restart
 
###再次执行netstat 发现5432已打开
[root@gitlab ~]# netstat -antp |grep :5432

创建连接

  其中,主机就是你的服务器ip,端口、用户名、初始数据库等信息,请参考/var/opt/gitlab/gitlab-rails/etc/database.yml

   正常情况下,测试连接即可正常连接到PostgreSql。

9.Jenkins新建项目中源码管理使用Git时

(1) 报错

Jenkins新建项目中源码管理使用Git时遇到如下问题:

(2)原因分析

Jenkins版本版本升级

(3)解决方法

Gitlab添加令牌

安装GitLab插件

API token:即上面创建的GitLab个人访问令牌

GitLab配置

成功:

10. jenkins登录报错

(1) 报错

主机重启,jenkins网页登录失败

(2)原因分析

jenkins服务未开启

[root@jenkins ~]# netstat -antp | grep 8080

(3)解决方法

启动服务

[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# netstat -antp | grep 8080
[root@jenkins ~]# systemctl start jenkins.service
[root@jenkins ~]# netstat -antp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      2103/java   

成功:

11.tomcat账户密码登录报错

(1)报错

(2)原因分析

配置文件错误

(3)修改配置文件

[root@tomcat opt]# vim /usr/local/tomcat/conf/tomcat-users.xml

 

重启

成功:

12.jenkins添加Git项目时报错

(1)报错

Failed to connect to repository : Error performing git command: git ls-remote -h

(2)原因分析

由于git客户端版本过低造成的或者未安装git。

Jenkins本机默认使用"yum install -y git" 安装的git版本比较低,应该自行安装更高版本的git。

(3)解决方法

查看GI版本

git --version

如果存在,卸载低版本

yum remove -y git

下载高版本

接着进行git版本升级操作:下载并安装高版本的git,下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/

[root@jenkins ~]# yum -y install libcurl-devel expat-devel curl-devel  gettext-devel openssl-devel zlib-devel
 
[root@jenkins ~]# yum -y install  gcc perl-ExtUtils-MakeMaker
 
[root@jenkins ~]# cd /usr/local/src/
 
# 下面的地址就是通过之前的下载地址获取的
[root@jenkins src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
 
[root@jenkins src]# tar -zvxf git-2.9.5.tar.gz
 
[root@jenkins src]# cd git-2.9.5.tar
 
[root@jenkins git-2.9.5]# make prefix=/usr/local/git all
 
[root@jenkins git-2.9.5]# make prefix=/usr/local/git install

添加git到环境变量

[root@jenkins git-2.9.5]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
[root@jenkins git-2.9.5]# source /etc/bashrc

查看更新后的git版本和所在路径

[root@jenkins ~]# git --version
 
[root@jenkins ~]# whereis git

进入jenkins设置

接着登录jenkins界面,依次打开"系统管理" -> "Global Tool Configuration" 全局工具配置-> "Git" -> "Path to Git executable",在此处填入"whereis git"查询出的地址 + "/bin/git" (如上面"whereis git"的地址为"/usr/local/git",则应该填入 "/usr/local/git/bin/git") 并保存。

最后再在Jenkins新建项目中源码管理Repository URL添加git地址,尝试多刷几次就可以了。

13.jenkins 设置Git sshkey 凭证后报错

(1)报错

设置jenkins通过 ssh key 访问git 地址报错

No ECDSA host key is known for

(2)原因分析

配置错误

(3)修改配置

打开 Manage jenkins --> Configure Global Security ,找到 Git Host Key Verification Configuration,按下图修改后保存。警告信息可以忽略

成功:

14.流水线进行编译打包失败

(1) 报错

(2)原因分析

Shell Script编写错误

(3)解决方法

修改Shell Script

修改前:

修改后:

成功

15.流水线报错 mvn: 未找到命令

(1)报错

(2)原因分析

全局配置错误

(3)解决方法

修改全局配置

修改前:

修改后:

如果编译打包时提示:

[WARNING] Failed to create parent directories for tracking file,需要给你的maven本地仓库一个权限

[root@jenkins Pineline script]# chmod 777 /opt/repo

成功:

四、总结

gitlab命令:

gitlab-ctl start                       # 启动所有 gitlab 组件;
gitlab-ctl stop                        # 停止所有 gitlab 组件;
gitlab-ctl restart                     # 重启所有 gitlab 组件;
systemctl enable gitlab-runsvdir.service    #开机自启
gitlab-ctl status                      # 查看服务状态;
gitlab-ctl reconfigure                 # 重新配置更新
vim /etc/gitlab/gitlab.rb              # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
gitlab-ctl tail                         # 查看日志;

 Gitlab用户在组里面有5种不同权限:

1)Guest:可以创建issue、发表评论,不能读写版本库

2)Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

3)Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限

4)Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限

5)Owner:可以设置项目访问权限·Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

Gitlab 组权限等级分三种:

1)Private 私有的,只有你自己或者组内的成员能访问

2)Internal 所有登录的用户

3)Public 公开的,所有人都可以访问

 Maven 项目文件说明:

 pom.xml 文件是 Maven 项目的配置文件,而 README.md 文件则是项目的说明文档。

linux命令行操作jenkins:

#启动jenkins:
service jenkins start

#重启jenkins:
service jenkins restart

#关闭/停止jenkins:
service jenkins stop

浏览器操作jenkins:

#浏览器进入jenkins
http://localhost:8888/

#关闭jenkins
http://localhost:8888/exit 

#重新启动jenkins
http://localhost:8888/restart

#重启并重新加载配置信息jenkins
http://localhost:8080/reload 

#浏览器进入jenkins
http://localhost:8888/

#浏览器进入jenkins
http://localhost:8888/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ常见的交换机类型

RabbitMQ安装 pom.xml里导入相关的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> application.properties配置文件 spring.rabbitmq.hos…

利用SoapUI工具生成Java WebService客户端代码

一. 下载安装软件 安装SoapUI 5.4.0-EB&#xff1b;下载axis-1_4&#xff0c;下载后解压至个人目录下即可。 注&#xff1a;axis-1_4下载地址&#xff08;https://archive.apache.org/dist/ws/axis/1_4/axis-bin-1_4.zip&#xff09; 二. 创建SOAP Project 点击File–>New…

GRU的 电影评论情感分析 - python 深度学习 情感分类 计算机竞赛

1 前言 &#x1f525;学长分享优质竞赛项目&#xff0c;今天要分享的是 &#x1f6a9; GRU的 电影评论情感分析 - python 深度学习 情感分类 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 这…

YOLOv7改进:原创独家首发 | 可变形自注意力Attention | 即插即用系列

💡💡💡本文属于原创独家改进:当你停留在可形变卷积上(DCNV1,DCNV2,DCNV3等),可形变Attention助力检测,创新性十足,不仅增强了 sparse attention 的表征能⼒,同时具有线性空间复杂度。 可形变与attention 的完美融合 | 亲测在多个数据集实现暴力涨点,对遮挡…

数据库Mysql三大引擎(InnoDB、MyISAM、 Memory)与逻辑架构

MySQL数据库及其分支版本主要的存储引擎有InnoDB、MyISAM、 Memory等。简单地理解&#xff0c;存储引擎就是指表的类型以及表在计算机上的存储方式。存储引擎的概念是MySQL的特色&#xff0c;使用的是一个可插拔存储引擎架构&#xff0c;能够在运行的时候动态加载或者卸载这些存…

为什么说CDN是网站速度优化大师

CDN&#xff08;内容分发网络&#xff09;是一个强大的工具&#xff0c;可以帮助您的网站实现飞一般的加载速度。本文将引领您深入了解CDN的奇妙世界&#xff0c;揭示其强大功能&#xff0c;并提供关于如何充分利用CDN服务来提升网站性能的宝贵建议。 探索CDN的世界 CDN&#x…

功率半导体器件静态参数测试都测哪些内容?

功率半导体器件如今已成为不可或缺的元件&#xff0c;在通信、电力电子等领域得到广泛应用。而对其性能参数的测试也是必不可少的&#xff0c;是对半导体性能、质量的保障。半导体测试参数包含静态测试参数和动态测试参数&#xff0c;本文将介绍半导体分立器件静态测试参数的相…

随手拍文明城市美丽乡村监督上报小程序开发

功能介绍&#xff1a; 一款拍照上传系统&#xff0c;ThinkPHP Uniapp开发&#xff0c;代码简洁&#xff0c;UI清爽。 后台功能 1、应用配置&#xff1a;首页轮播图配置&#xff1b;上报事件标签&#xff1b;上报等级&#xff08;可设置积分&#xff09;&#xff1b;小程序配…

gitlab docker部署,备份,恢复。附踩坑记录

本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源&#xff1a; 国外镜像源&#xff1a;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…

【vue富文本插件】tinymce 安装使用及汉化注意项

文章目录 前言一、tinymce 下载安装1.1 npm 安装1.2 提供 CDN 版本免费下载 二、tinymce 本地化三、编写富文本组件四、在其他 .vue 组件中引入上面编写的 myEditor 组件 五、相关问题5.1 汉化5.2 富文本不显示或者黄色文本提示 附&#xff1a;引入第三方拓展啊插件 前言 前端…

HNU-计算机网络-讨论课1

题目&#xff1a; 有关网络系统结构的讨论 一、必选问题&#xff08;每组平均每人1个&#xff09; 1、分层结构其实是世界演进形成的普遍系统结构&#xff0c;不管是自然领域还是社会领域&#xff0c;请举例说说你的理解。 2、有人说通信网络的核心技术在物理层&#xff0c…

Soul CEO张璐团队以用户安全为核心,探索社交平台安全治理新路径

“认同感”,是现代年轻人当下的核心社交需求之一,作为年轻人喜爱的新型开放式社交平台,Soul APP为年轻人们提供了一个自在表达、轻松互动的平台,为用户带来了志趣相投、精神共鸣的高质量网络连接。在Soul日活近千万的用户中,超过七成为Z世代年轻群体,如何能够为Z世代提供更安全…

MySQL增删查改(进阶2)

一、查询 1.聚合查询 1.1聚合函数&#xff1a; &#xff08;1&#xff09;count() 获取整个结果集的行数&#xff08;数据的数量&#xff09; count&#xff08;某个字段&#xff09;count(*)count&#xff08;常量值&#xff09; &#xff08;2&#xff09;sum(某个字段)…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测用例(五)

六、华为云耀云服务器L实例评测用例&#xff1a; “兵马未动&#xff0c;粮草先行”&#xff0c;随着企业业务的快速发展&#xff0c;服务器在数字化建设体系至关重要&#xff0c;为了保证服务器的稳定性、可靠性&#xff0c;需要对服务器进行评测&#xff0c;以确保服务器能够…

用“和美”丈量中国丨走进酒博物馆系列⑨

五粮液酒文化博览馆始建于1988年&#xff0c;是中国酒业最早的酒文化博览馆&#xff0c;于2020年启动升级改造。 现在我们看到的五粮液酒文化博览馆&#xff0c;采用了当今博览馆最前沿的展陈方式&#xff0c;展陈设计与空间布局更具灵动性和多元性&#xff0c;蕴含传统文化氛围…

Python的就业前景及薪资收入

作为近几年来特别受欢迎的编程语言之一&#xff0c;Python一直以来被众多行业内人士寄予厚望&#xff0c;今后有可能替代老牌霸主Java&#xff0c;成为新一代编程语言榜首。 与其他语言相比&#xff0c;Python中的语言语法特别简单&#xff0c;并且代码具有可读性&#xff0c;多…

ip https证书怎么更换ip地址

ip证书是一种基于互联网的数字证书&#xff0c;用于证明持有证书的单位或个人具有合法的身份和授权。它由权威的第三方机构颁发&#xff0c;具有安全、可靠、保密的特点。ip https证书是https证书中比较特殊的一种数字证书&#xff0c;它主要保护的就是只拥有公网ip地址的站点。…

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…

How To Improve Your LISTENING SKILLS( 如何提升你的听力技能) 学习

目录 如何提升你的听力技能 三个大问题 1.你有没有 fake listening 2.selective listening 3.critical listening 六个解决方案 1&#xff0c;awareness 请主动打破这个循环 2.在身体和精神上做好倾听的准备 3.set a goal 4.sit front /center listening is a s…

阶段六-Day03-MyBatis

一、框架介绍 1. 框架的作用 将许多项目封装起来,形成了框架 2. 框架的优缺点 1. 优点 1.1 更好用 框架都是对Java原生内容进行的封装&#xff0c;对于企业级项目开发来说&#xff0c;使用框架比使用原生Java更好用&#xff0c;写起来更简单。 1.2 更强大 框架封装过程…