linux cpu占用率如何看
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 <
验证
在终端输入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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~