Jenkins基础学习

Jenkins基础学习

1.环境准备

1.搭建gitlab平台(docker)

gitLab安装官网:GitLab最新版下载安装_GitLab中文免费版-极狐GitLab中文官方网站

gitlab官网:The DevSecOps Platform | GitLab

docker安装官网:Install Docker Engine on CentOS | Docker Documentation

1.安装环境

  • 使用 VMware虚拟机
  • 虚拟机安装Centos7的系统
  • 虚拟机内存7.6G(gitLab需要安装的东西比较多,运行时需要占用比较大的内存)
  • 硬盘50G
  • 虚拟机内安装Docker Engine

2.安装步骤

1.配置网络ip
# 编辑网络文件ifcfg-ens33
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="11c21173-4fe9-49ee-a695-d640d6cde130"
DEVICE="ens33"
ONBOOT="yes"
#IP地址
IPADDR=192.168.0.140
#网关
GATEWAY=192.168.0.2
#域名解析
DNS1=8.8.8.8
NETMASK=255.255.255.0
# 保存后重启网络服务
service network restart
# 检验是否与外界连通
ping www.baidu.com
2.检查docker是否安装,开启
# docker已经安装
systemctl status docker #查看docker状态
#如果没有开启则启动docker
systemctl start docker
3.安装运行gitlab

官方文档命令

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest

改成我们的命令

docker run --detach \
--hostname 192.168.0.140 \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest

⚠gitLab镜像比较大,可以喝杯咖啡再来。😁

常用基本docker命令

#查看 docker 镜像
docker images
#查看所有容器
docker ps -a
#删除容器
docker rm -f 容器

查看容器运行情况

4.访问gitlab

在浏览器输入服务器地址

192.168.0.140

⚠如果出现无法访问时

查看防火墙的状态,将防火墙关闭(为了方便,同样可以开放端口)

#查看firewalld 状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld

关闭防火墙后再次使用浏览器访问,就会出现登录界面

5.登录gitlab

gitlab会默认生成一个root用户

查看root用户的密码

#进入容器
docker exec -it gitlab /bin/bash
#查看密码
cat /etc/gitlab/initial_root_password

⚠密码文件过了24小时候将会被删除,所以要么将密码记住,要么修改用户密码

6.修改用户密码
1.修改为中文

1.点击用户头像->点击Preferences

2.找到Localization->Language设置为简体中文

保存后刷新一下就会变成中文。

2.修改root用户密码

1.进入用户编辑页面

2.修改密码->保存

3.重新用新密码登录

7.新建项目

1.创建项目

2.创建空白项目

3.创建项目

3.创建项目

1.创建一个SpringBoot Demo
@RestController
public class Hello {
@GetMapping("/hello")
public String hello(){
return "hello world!";
}
}
2.关联远程地址

使用http第一次关联要输入用户名和密码

3.本地启动运行访问

在浏览器输入

localhost:8080/hello

页面显示hello world!说明可以成功访问

4.将项目推送到远程合并到主分支main

将本地代码push到远程中

合并分支

查看main分支

已将代码合并到了主分支上。现在远程仓库中已经有了代码,下一步将会构建Jenkins服务。

🍵喝口咖啡!!先放松一会儿吧!!!

2.搭建Jenkins平台

Jenkins安装官网:安装Jenkins

maven官网:https://maven.apache.org

Jenkins安装不使用docker,因为Jenkins本身就是个java项目,我们通过运行java程序来启动Jenkins。

1.安装环境

  • 使用 VMware虚拟机
  • 虚拟机安装Centos7的系统
  • 虚拟机内存2G
  • 硬盘50G
  • 安装JDK,maven,git

2.安装步骤

配置ip

1.安装JDK

1.查找JDK版本

yum search java|grep jdk

2.安装JDK-11

yum install -y java-11-openjdk

linux安装多个版本的JDK并且切换版本

1.查看当前服务器的JDK版本库

alternatives --config java

2.配置java全局环境,编辑profile文件

vim /etc/profile
#修改文件
#JAVA_HOME 为上面查看到的java版本的地址
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

这样就可以切换java的版本了。


无法使用jps命令

注:jps是用来查看java项目进程的。

#要安装后缀带devel的JDK
yum install java-11-openjdk-devel.x86_64
2.安装maven

1.进入官网下载maven二进制包,上传到服务器

2.将tar包解压缩

tar -zxvf apache-maven-3.8.7-bin.tar.gz

3.将解压缩后的文件夹移动到/usr/local/maven

mv apache-maven-3.8.7 /usr/local/maven

4.在根路径检查是否可以执行mvn命令

mv apache-maven-3.8.7 /usr/local/maven
3.安装git
yum install git
4.安装Jenkins

1.下载Jenkins.war包

选择合适的版本,因为安装的是JDK-11我选择

2.将下载好的war包上传到服务器中

3.使用java命令启动Jenkins

java -jar jenkins.war

4.访问服务器地址

浏览器输入:http://192.168.0.141:8080/

无法访问时,查看防火墙的状态。

⚠没有出现时,请耐心的等一会

下一步选择推荐插件

等待....

按要求创建完用户后一路下一步

说明Jenkins平台搭建好了,我们先休息一下!!!

下一步搭建测试服务器,就是用来跑项目的服务。

搭建项目测试平台(test-service)

1.安装环境

  • 使用 VMware虚拟机
  • 虚拟机安装Centos7的系统
  • 虚拟机内存2G
  • 硬盘50G
  • 安装JDK

2.安装步骤

配置ip

1.安装JDK

1.查找JDK版本

yum search java|grep jdk

2.安装JDK-8

yum install -y java-1.8.0-openjdk

注意事项和Jenkins里面一样。

2.使用Jenkins构建项目

1.使用Jenkins配置maven+Git自动构建jar包

1.安装maven插件

配置maven

2.构建项目

3.配置构建的项目
  • 配置git
Repository URL --git地址
http://192.168.0.140/root/my-first-demo.git
Credentials -- 凭证
gitlab 登录用户
Branches to build --构建的分支
我们选择主分支-main

配置git用户

类型:我们使用的是http所以选择 `Username with password`选项
用户名:root
密码:gitlab登录的密码

build操作

4.配置完后可以构建一次

第一次构建的时间比较长,因为要拉依赖。

查看项目信息

点击控制台输出->可以查看构建的命令。

查看控制台信息为build success就说明构建成功了。

可以在控制台看到jar包的所在位置

进入服务器查看。确实可以看到构建好的jar包了

我们使用java命令运行看看行不行

#因为Jenkins使用了8080端口,我们改成8081端口
java -jar my-first-demo-0.0.1-SNAPSHOT.jar --server.port=8081

项目正常启动,使用浏览器访问192.168.0.141:8081/hello显示正常效果。

说明构建成功。

5.出现的问题

⚠如果出现构建错误,依赖包下载慢,或者下载不下来,可以配置国内的阿里仓库

cd /usr/local/maven/conf
#编辑settings.xml文件,将里面的镜像设置为阿里仓库

2.将构建的jar发送到测试服务器并启动项目

1.安装ssh插件

2.配置ssh服务

在System Configuration里面。

配置完可以点击测试是否成功。

3.配置demo项目的构建后的操作

选择:send build artifacts over ssh

修改好后保存再次构建。看看效果

构建成功:

查看test-service是否有jar包

cd /test
ls

说明成功的将jar传送到test-service服务器上

4.配置构建执行的命令

nohup java -jar /root/test/my-first-demo*.jar >mylog.log 2>&1 &
#nohup 就是不挂断
#最后面的& 表示在后台运行
#>mylog.log 2>&1 表示将日志输出到mylog.log文件中。
# java -jar /root/test/my-first-demo*.jar 启动java程序

数据流重定向

标准输入:代码为0,使用<或<<

标准输出:代码为1,使用>或>>

标准错误输出:代码为2,使用2>或2>>

其中:>表示覆盖写,>>表示追加写。

再次构建就会自动的将我们的jar包运行,但是第一次可以再次构建时,就会发现项目无法启动,因为之前的项目还在运行,服务的端口会被占用。

接下来我们就要实现在构建之前将之前的启动的项目停下来并把jar删除调。

5.构建前将原来的项目停止

1.配置 Pre Steps

2.编写run.sh脚本

vim run.sh
-- 脚本
#!/bin/bash
#删除目标的目录
rm -rf test
#获取传入的参数
echo "args: $1"
appname=$1
#获得运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`
echo $pid
#判断pid是否存在
if [ -z $pid ];
then
echo$appname no started...”
else
kill -9 $pid
echo "$appname stoping..."
#判断是否删除进程
check=`ps -ef | grep -w $pid | grep 'java -jar'`
if [ -z $ckeck ];
then
echo "$appname pid:$pid si top"
else
echo "$appname stop failed"
fi
fi

更改run.sh的权限

chmod 777 run.sh

在服务器上执行run.sh试试

#参数为项目的名称
./run.sh my-first-demo

再次使用Jenkins构建项目则会使用到最新的程序。

使用浏览器访问:192.168.0.142:8080/hello

获取到最新的代码

⚠构建之前,提交代码记得要将提交的代码合并到主分支上。

3.提交代码自动构建项目(不是很实用)

上面测试都是需要手动构建项目。接下来在这里实现提交代码后Jenkins自动构建。

1.触发远程构建

1.配置触发器

2.测试触发器

当访问http://192.168.0.141:8080/job/demo/build?token=123123则会触发构建任务

⚠因为使用的是Jenkins登录了的浏览器访问的,如果浏览器没有登录,则会跳转到登录界面,如果直接配置到gitlab中将不会生效。

解决:安装插件 Build Authentication token root

访问这个地址http://192.168.0.141:8080/buildByToken/build?job=demo&token=123123

将不需要登录,具体写法的可以查看插件里面的介绍。

3.配置gitlab

无法添加webhooks时,先配置这个,再去配置webhooks

添加成功时:出现

2.常见的构建方式

  • 快照依赖构建/Build whenever a SNAPSHOT dependency is built

    • 当依赖的快照被构建时执行job
  • 触发远程构建(例如,使用脚本)

    • 远程调用本job的restapi时执行job
  • job依赖构建/Build after other projects are built

    • 当依赖的job被构建后再执行本job
  • 定时构建/Build periodically

    • 使用cron表达式定时构建job
  • 向github提交代码是触发Jenkins自动构建/GitHub hook trigger for GITScm polling

    • github-webhooks触发时构建job
  • 定期检查代码变更/Poll SCM

    • 使用cron表达式定期检查代码变更,变更后构建job

4.配置邮箱接收通知

1.配置发送邮件服务器

​ 使用163的邮箱

​ 1. 开启smtp服务

2.配置Jenkins systemConfig

用户配置

3.配置job的构建后操作

选择:Editable Email Notification

4.测试

在任务控制台查看输出

同时目标邮箱收到邮件。说明成功了!!!

5.容器化构建

  1. 外挂目录
  2. jar直接打包到镜像中
  3. 生成镜像,推送到docker私服中,再通过k8s拉取,运行。

1.外挂目录

1.本地测试

1.将jar包放在/root/jarfile文件夹中

2.docker 运行容器

docker run -d -p 8080:8080 --name demo-out -v /root/jarfile/my-first-demo-0.0.1-SNAPSHOT.jar:/app.jar openjdk:11 java -jar app.jar

用浏览器访问:192.168.0.142:8080/hello

显示正常。说明成功

2.上面是测试,下面使用Jenkins来构建

1.配置 pre steps

2.配置构建后操作

这样做,第一次必须要自己先把demo-out容器构建起来才行。没有每次构建前删除镜像,然后构建玩后生成新的镜像,只是使用了之前的容器,把挂载的jar包更换了

3.提交代码后测试

提交新的代码到gitlab上,浏览器访问:192.168.0.142:8080/hello

访问到新提交的代码,说明没有问题。

2.将jar打包到容器中,构建镜像。

1.本地测试

1.环境

  • 具有docker
  • 支持JDK镜像
FROM openjdk:11
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
CMD ["java", "Main"]

2.编写dockerfile文件

vim dockerfile
FROM openjdk:11
EXPOSE 8080
WORKDIR /root
ADD jarfile/my-first-demo*.jar /root/app.jar
ENTRYPOINT ["java","-jar","/root/app.jar"]

3.构建我们自己的docker镜像

docker build -t demo .
docker images 查看构建的镜像

2.使用Jenkins来构建

1.配置 pre steps

2.配置构建后的操作

  • 将jar包上传到jarfile文件夹中

  • 将dockerfile文件放在项目中,并将其传到测试服务器中

3.提交代码测试

提交新的代码到gitlab上,浏览器访问:192.168.0.142:8080/hello

构建成功。。

posted @   浪上了天  阅读(169)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示