主页 > 软件开发  > 

1、CI/CD平台安装部署(Gitlab+Jenkins)

1、CI/CD平台安装部署(Gitlab+Jenkins)

CI/CD 平台安装部署 安装部署Gitlab安装Gitlab添加组、创建用户、创建项目 Jenkins 安装Maven 安装和配置Tomcat 安装和配置Jenkins 构建 Maven 项目自由风格项目构建 什么是CI/CD? 通俗来说就是启动一个服务,能够监听代码变化,然后自动执行构建、测试、打包、发布等流程;

CICD 是持续集成和持续交付/部署简称。 指在研发过程中自动执行一系列脚本来降低开发引入bug的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。这一策略加快了代码提交到功能上线的速度,保证新的功能能够第一时间部署到生产环境并被使用。

CI 持续集成 指在开发人员频繁地提交新代码,都会自动执行构建、测试。根据测试结果,我们可以确定新代码能否合并到主分支。

假设现在有个应用的代码存储在仓库上,每天开发人员都会提交很多次新代码,针对每次提交,我们可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。

持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,如果构建或测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。

CD 持续交付 指将完成CI的最新代码部署到类生产环境进行功能验证,以确保新增的代码在生产环境中是可用的。

CD 持续部署 指在持续交付的基础上,通过自动化部署的手段将软件功能频繁的部署到生产环境中。

安装部署 Gitlab安装

192.168.110.10 关闭防火墙核心防护

systemctl disable --now firewalld setenforce 0

安装相关依赖

yum install -y curl policycoreutils-python openssh-server perl postfix systemctl enable --now sshd postfix #启动失败则修改 /etc/postfix/main.cf inet_interfaces = 127.0.0.1,[ip]

安装Gitlab 软件包下载 下载地址: mirrors.tuna.tsinghua.edu /gitlab-ce/yum/el7/gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm

rpm -ivh gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm

修改gitlab配置,修改gitlab访问地址和端口,默认为80,我们改为82

vim /etc/gitlab/gitlab.rb external_url 'http://192.168.110.10:82' nginx['listen_port'] = 82

重载配置及启动gitlab

gitlab-ctl reconfigure gitlab-ctl restart

浏览器访问:http://192.168.110.10:82 ,如果显示 502,稍等片刻再刷新 1、设置管理员 root 用户的新密码,注意有格式要求,这里设置成 root@123 2、使用管理员 root 用户登录(root/root@123) 3、登录后点击页面右上方的用户选项下拉选择【Settings】,点击左边菜单【Preferences】,在【Localization】的【Language】中选择【简体中文】,点击【Save changes】按钮,再刷新页面使用中文显示。

Gitlab添加组、创建用户、创建项目

Gitlab添加组、创建用户、创建项目 #创建群组 点击页面左上方的【GitLab】图标,点击 【新建群组】 【群组名称】、【群组URL】、【群组描述】都设置成 sunny_group 【可见性级别】设置成 私有 其他都保持默认值,点击 【创建群组】

#创建项目 点击 【新建项目】 【项目URL】群组选项下拉选择 sunny_group 【项目名称】设置成 sunny_demo 【项目描述】设置成 sunny_demo 【可见等级】设置成 私有 点击 【创建项目】

#创建用户 点击页面上方的【扳手】图标进入“管理区域” 点击 【新建用户】 【姓名】设置成 sunny 【用户名】设置成 sunny 【电子邮箱】设置成 sunny@sl 这里密码暂不设置,其他都保持默认值,先点击 【创建用户】 注:Access level:Regular(表示的是普通用户,只能访问属于他的组和项目);Admin(表示的是管理员,可以访问所有组和项目)

创建好用户后再点击右上角的【Edit】,可在这里设置密码,如 sunny@123

#将用户添加到组中 点击页面上方的【群组】下拉选择 sunny_group 点击左边菜单【成员】 【添加成员到 sunny_group】选择 sunny,角色权限选择 Owner 点击 【添加到群组】 注:角色权限: ●Guest:可以创建issue、发表评论,不能读写版本库 ●Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限 ●Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限 ●Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限 ●Owner:可以设置项目访问权限(Visibility Level)、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

使用自己创建的账户进行管理 退出当前账户,使用自己创建的账户 sunny 登录(sunny/zhangsan@123) 第一次登录会被强制要求修改密码(sunny/sunny@123),可与旧密码相同,再重新登录

源码上传到Gitlab仓库

git config --global user.name "sunny" git config --global user.email "sunny@sl " cd ~ git clone http://192.168.110.10:82/sunny_group/sunny_demo.git #账号/密码:sunny/sunny@123 ls -A sunny_demo [root@master01 ~]# ls -A sunny_demo .git

上传 web_demo.zip 文件

unzip web_demo.zip mv web_demo/* /root/sunny_demo/ cd /root/sunny_demo git add . git commit -m "init web_demo" git push -u origin master #账号/密码:sunny/sunny@123 [root@master01 sunny_demo]# git push -u origin master Username for 'http://192.168.110.10:82': sunny Password for 'http://sunny@192.168.110.10:82': Counting objects: 10, done. Delta compression using up to 4 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (10/10), 1.65 KiB | 0 bytes/s, done. Total 10 (delta 0), reused 0 (delta 0) To http://192.168.110.10:82/sunny_group/sunny_demo.git * [new branch] master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。

点击页面上方的【项目】下拉选择 web_demo,即可看到上传的代码

Jenkins 安装

192.168.110.20 安装JDK 下载网址: download.oracle /java/17/archive/jdk-17.0.10_linux-x64_bin.tar.gz

tar zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local/ vim /etc/profile export JAVA_HOME=/usr/local/jdk-17.0.10 export CLASSPATH=.:${JAVA_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH source /etc/profile java -version [root@node01 ~]# java -version java version "17.0.10" 2024-01-16 LTS Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240) Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)

安装jenkins

wget -O /etc/yum.repos.d/jenkins.repo pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate rpm --import pkg.jenkins.io/redhat-stable/jenkins.io-2023.key yum install epel-release -y yum install jenkins -y

修改jenkins的启动参数

vim /usr/lib/systemd/system/jenkins.service User=root Group=root Environment="JAVA_HOME=/usr/local/jdk-17.0.10" Environment="JENKINS_PORT=8080" systemctl daemon-reload systemctl start jenkins systemctl enable jenkins

替换插件更新源

sed -i 's# updates.jenkins.io/update-center.json# mirrors.tuna.tsinghua.edu /jenkins/updates/update-center.json#g' /root/.jenkins/hudson.model.UpdateCenter.xml mirrors.aliyun /jenkins/updates/update-center.json sed -i 's# updates.jenkins.io/download# mirrors.tuna.tsinghua.edu /jenkins#g' /root/.jenkins/updates/default.json sed -i 's# .google # .baidu #g' /root/.jenkins/updates/default.json systemctl restart jenkins

浏览器访问:http://192.168.110.20:8080 ,获取并输入 admin 账户密码

创建第一个管理员用户,如 sunny/sunny@123

Manage Jenkins -> Manage Plugins -> 点击 Availale -> 安装以下几个插件 Localization: Chinese Git

点击用户名下拉选择凭据(Credentials) -> Jenkins 全局 -> 添加凭据 类型选择 “Username with password” ,输入 Gitlab 的用户名和密码(sunny/sunny@123),描述输入 gitlab-auth-password 点击 “确定”。

创建一个FreeStyle项目:新建Item -> 任务名称(test01) FreeStyle Project -> 确定 源码管理:选择 Git,Repository URL:http://192.168.110.10:82/sunny_group/sunny_demo.git(可从 Gitlab 使用 HTTP 克隆), Credentials 下拉选择 gitlab-auth-password,点击 保存。

点击 Bulid Now 开始构建,查看控制台输出可以看到构建成功,构建后的包会生成在服务器的 /root/.jenkins/workspace/test01 目录中。

[root@node01 ~]# cd /root/.jenkins/workspace/test01 [root@node01 test01]# ls pom.xml src web_demo.iml Maven 安装和配置

Maven 是一个主要用于 Java 项目的自动化构建工具。Maven 还可以用来构建和管理用 C#、Ruby、Scala 和其他语言开发的项目。

在 Jenkins 服务器上安装 Maven 来编译和打包项目

#上传 apache-maven-3.6.2-bin.tar.gz 软件包 tar -zxvf apache-maven-3.6.2-bin.tar.gz mv apache-maven-3.6.2 /usr/local/maven #设置环境变量 vim /etc/profile ...... export MAVEN_HOME=/usr/local/maven export PATH=${MAVEN_HOME}/bin:${JAVA_HOME}/bin:$PATH source /etc/profile mvn -v [root@node01 ~]# mvn -v Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00) Maven home: /usr/local/maven Java version: 17.0.10, vendor: Oracle Corporation, runtime: /usr/local/jdk-17.0.10 Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

修改 Maven 的 settings.xml

#创建本地仓库目录 mkdir /usr/local/maven/repo vim /usr/local/maven/conf/settings.xml 54行--> #本地仓库改为 /usr/local/maven/repo <localRepository>/usr/local/maven/repo</localRepository> 153行 --> #添加阿里云私服地址 <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun /nexus/content/groups/public/</url> </mirror> </mirrors>

添加 Jenkins 全局工具配置,关联 JDK 和 Maven

tar xf jdk-8u391-linux-x64.tar.gz -C /usr/local/

Manage Jenkins -> Global Tool Configuration -> JDK 点击 新增JDK,别名输入 jdk17,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk-17.0.10 点击 新增JDK,别名输入 jdk1.8,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk1.8.0_391 -> Maven 点击 新增Maven,Name输入 maven3,取消勾选 Install automatically,MAVEN_HOME驶入 /usr/local/maven 点击 “应用"和"保存”。

添加 Jenkins 全局变量,让 Jenkins 能够识别 JDK 和 Maven 环境的命令 Manage Jenkins -> Configure System -> 全局属性,勾选 Environment variables 键值对列表添加:键 JAVA_HOME ,值 /usr/local/jdk1.8.0_391 键 MAVEN_HOME ,值 /usr/local/maven 键 PATH+EXTRA ,值 $MAVEN_HOME/bin

测试 Maven 是否配置成功 点击项目 test01 -> 设置 -> 构建 -> 增加构建步骤 -> Execute Shell 输入 mvn clean package #清空原有的构建元素(插件、依赖包等target文件),再进行打包 点击 保存 再次构建,如果可以把项目打成 war 包,代表 maven 环境配置成功。

[root@node01 target]# ls /root/.jenkins/workspace/test01/target maven-archiver web_demo-1.0-SNAPSHOT web_demo-1.0-SNAPSHOT.war

Tomcat 安装和配置

192.168.110.30

安装 Tomcat

tar zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local/ vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_391 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH source /etc/profile tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16/ /usr/local/tomcat /usr/local/tomcat/bin/startup.sh

配置 Tomcat 用户角色权限 默认情况下 Tomcat 是没有配置用户角色权限的 验证方法:可浏览器访问 http://192.168.110.30:8080 ,点击 Managing Tomcat 下的 manager webapp ,发现返回 403 页面。

但是后续 Jenkins 部署项目到 Tomcat 服务器,需要用到 Tomcat 的用户进行远程部署,所以修改 tomcat 以下配置,添加用户及权限

vim /usr/local/tomcat/conf/tomcat-users.xml 43 --> #添加 tomcat 用户角色权限,指定用户和密码都是 tomcat ,并授予权限 <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="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/> </tomcat-users> vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <!-- #注释掉 Valve 配置 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh

再次访问:http://192.168.110.30:8080/manager/html ,输入账号/密码 tomcat/tomcat,即可成功登录

Jenkins 构建 Maven 项目 自由风格项目构建

项目的集成过程:拉取代码 -> 编译 -> 打包 -> 部署

拉取代码 新建item -> 任务名称(sunny_demo_freestyle) FreeStyle Project -> 确定 源码管理:选择 Git,Repository URL:http://192.168.110.10:82/sunny_group/sunny_demo.git Credentials 下拉选择 gitlab-auth-password,点击 保存 点击 Build Now,尝试构建项目

编译打包 配置 —> 构建 -> 添加构建步骤 -> Execute Shell,输入以下命令 echo “开始编译和打包” mvn clean package echo “编译和打包结束” 点击 Build Now,尝试构建项目

把项目部署到远程的 Tomcat 里面 1)安装 Deploy to container 插件 Jenkins 本身无法实现远程部署到 Tomcat 的功能,需要安装 Deploy to container 插件实现: Manage Jenkins -> 管理插件-可选插件 -> 搜索 Deploy to container 插件选中直接安装即可

2)添加构建后操作 配置 —> 构建后操作 -> 增加构建后操作步骤 -> Deploy war/ear to a container WAR/EAR files 输入 target/*.war Containers —> Add Container —> Tomcat 9.x Remote -> Credentials,点击添加 -> Jenkins 用户名 输入 tomcat,密码 输入 tomcat,描述 输入 tomcat-auth,点击添加 Credentials 下拉选择 tomcat-auth Tomcat URL 输入 http://192.168.110.30:8080 点击保存 点击 Build Now,尝试构建项目

3)部署成功后,刷新 http://192.168.110.30:8080/manager/html 页面,可以发现应用程序中多出一个项目,点击新项目进去访问

标签:

1、CI/CD平台安装部署(Gitlab+Jenkins)由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“1、CI/CD平台安装部署(Gitlab+Jenkins)