jenkins集成实现CI/CD

网友投稿 264 2022-10-21

jenkins集成实现CI/CD

jenkins集成实现CI/CD

环境

主机名称

ip地址

jenkins+gitlab

192.168.10.33

1. gitlab服务

1. 安装11.9.11版本

GitLab是一个利用 ​​Ruby on Rails​​ 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

1.1 安装

wget localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y

1.2 配置gitlab文件

vim /etc/gitlab/gitlab.rbexternal_url '= false

1.3 应用并启动服务

[root@linux-node1 ~]# gitlab-ctl reconfigure#时间可能比较长,耐心你等待即可!----gitlab常用命令:关闭gitlab:# gitlab-ctl stop启动gitlab:# gitlab-ctl start重启gitlab:# gitlab-ctl restart重载配置文件: gitlab-ctl reconfigure

可以使用​​gitlab-ctl​​管理gitlab,例如查看gitlab状态:

gitlab-ctl status

#使用浏览器访问删除project示例

​1、首先进入到项目中 找到settings>general>exoand>remove projects​

3.上传代码到git仓库示例

# 1:上传源码cd /srv/rz -Eunzip xiaoniaofeifei.zip rm -fr xiaoniaofeifei.zip # 2:git全局设置git config --global user.name "Administrator"git config --global user.email "admin@example.com"# 3:上传代码到gitlab初始化gitgit init添加一下项目地址git remote add origin add . #增加文件描述信息git commit -m "Initial commit" #备注信息上传代码git push -u origin master #上传到master

​填写用户名密码​

​查看gitlab文件是否存在​

完成

2. jenkins服务

​​Jenkins​​只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有

​​Hudson​​​是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个​​jenkins​​,jenkins在功能上远远超过hudson

Jenkins官网:安装

1.1 安装JDK

Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK。

yum install -y java-1.8.0

1.2 安装jenkins.noarch.0.2.251-1.1

cd /etc/yum.repos.d/ wget rpm --import yum install -y jenkins systemctl start jenkins systemctl enable jenkins 还是在服务器目录下进行上传插件目录路径= /var/lib/jenkins/plugins/这个目录下是我们安装所有的插件

​友情提示:jenkins如果跟gitlab在一台服务器需要将jenkins的端口进行修改,需要将jenkins的​​**8080**​​​修改为​​**8081**​​

vim /etc/sysconfig/jenkins ## 启动配置文件JENKINS_PORT="8081" systemctl restart jenkins

新版本的jenkins为了保证安全,在安装之后有一个锁,需要设置密码后才可以解锁

​jenkins web访问地址: 192.168.10.33:8080​

​使用简单安装即可​

3. jenkins添加gitlab密钥

​在jenkins主机中创建ssh免密钥​

ssh-keygen

​1、 将创建好的ssh公钥导入到gitlab中 复制.ssh/id_rsa.pub公钥​

​进入设置​

​添加jenkins公钥​

​2、将私钥导入到jenkins服务中 复制.ssh/id_rsa文件私钥​

​进入jenkins web管理平台导入私钥​

实例: i4t web网站持续集成部署

1. 前提环境

角色

ip

k8s-master

192.168.10.31

k8s-node

192.168.10.32

jenkins+gitlab+nfs+harbor

192.168.10.33

私有仓库

192.168.10.33:5000

​1、在jenkins系统中 安装 docker​

用户构建dockerfile镜像使用

# 安装dockercurl -o /etc/yum.repos.d/epel.repo -o /etc/yum.repos.d/CentOS-Base.repo -y install docker# 设置 daemon.json镜像加速器vim /etc/docker/jaemon.json{"registry-mirrors": ["["192.168.10.31"], ## 注意:此处填写私有仓库地址 "live-restore": true }systemctl enable dockersystemctl start docker

​2、kubectl工具 用于构建下发k8s命令​

# 安装kubectl工具#kubectl-cli 安装客户端kubectlcat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=install -y kubectl#添加hosts解析echo '192.168.10.31 apiserver.demo' >> /etc/hosts#复制k8s-master主机kubectl认证配置文件copy到/root/.kube/scp -r 192.168.10.31:/root/.kube /root

​验证​

在终端输入kubectl get node -n kube-system

2. 在gitlab 部署一个i4t项目

3. 进入gitlab linux系统终端上传代码。

# 创建一个项目目录mkdir i4t && i4t # 上传代码到i4t目录中

编​写dockerfile​

FROM nginx:1.13COPY it4.com /usr/share/nginx/html/

​测试dockerfile是否可用​

docker build -t test-i4t:v2 .docker run -d -p 9998:80 test-i4t:v2docker ps

通过浏览器访问 config --global user.name "Administrator"git config --global user.email "admin@example.com"git init git remote add origin add .git commit -m "Initial commit"git push -u origin master

4. 通过jenkins构建i4t项目

​构建一个item项目​

添加源码管理地址,此地址去gitlab i4t项目中查看

​向下拉通过构建shell来上线容器​

​编写 shell脚本​

NAME=i4tIMAGES=172.16.20.100/library/${NAME}:v${BUILD_ID}if [ -e /tmp/$NAME.lock ];then## 更新 docker build -t $IMAGES . docker push $IMAGEScat > i4t.deployment.yaml <<-EOFapiVersion: apps/v1 kind: Deploymentmetadata: labels: k8s.kuboard.cn/name: $NAME name: $NAME namespace: $NAMEspec: replicas: 4 selector: matchLabels: k8s.kuboard.cn/name: $NAME template: metadata: labels: k8s.kuboard.cn/name: $NAME spec: containers: - name: $NAME image: $IMAGES imagePullPolicy: Always ports: - name: containerPort: 80 protocol: TCP restartPolicy: AlwaysEOF kubectl apply -f i4t.deployment.yaml --record echo "更新完成" else## 创建 docker build -t $IMAGES . docker push $IMAGES kubectl create namespace $NAMEcat > i4t.deployment.yaml <<-EOFapiVersion: apps/v1 kind: Deploymentmetadata: labels: k8s.kuboard.cn/name: $NAME name: $NAME namespace: $NAMEspec: replicas: 3 selector: matchLabels: k8s.kuboard.cn/name: $NAME template: metadata: labels: k8s.kuboard.cn/name: $NAME spec: containers: - name: $NAME image: $IMAGES imagePullPolicy: Always ports: - name: containerPort: 80 protocol: TCP restartPolicy: AlwaysEOFcat > i4t.svc.yaml <<-EOFapiVersion: v1kind: Servicemetadata: labels: k8s.kuboard.cn/name: $NAME name: $NAME namespace: $NAMEspec: type: NodePort ports: - name: mn port: 80 protocol: TCP targetPort: 80 selector: k8s.kuboard.cn/name: $NAME sessionAffinity: NoneEOF kubectl create -f i4t.deployment.yaml --record kubectl create -f i4t.svc.yaml port=`kubectl get svc -n $NAME|grep -oP '(?<=80:)\d+'` echo "你的项目地址访问是 touch /tmp/$NAME.lockfi

​显示蓝色球表示构建成功​

​查看控制台输出日志​

​测试​

使用浏览器访问 web界面修改i4t首页表头 找到index.html​

​随意修改表头信息 并保存​

​回到jenkins i4t项目再次进行更新构建​

​测试是否成功​

浏览器刷新i4t网站 此处表头已更改。 完成

5. 自动回滚

​通过jenkins创建回退项目 i4t-rollback​

​构建shell脚本​

# 回滚代码NAME=i4t-akubectl rollout undo deployment $NAME -n $NAMEecho "完成"

​进行构建​

​验证 回退成功​

表头已更改

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kubernetes高可用集群V1.19.2安装 (一)
下一篇:Java 精炼解读方法的定义与使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~