当前位置: 首页 > news >正文

CI/CD - jenkins

目录

一、部署

1、简介

2、部署

二、配置

三、实时触发

四、自动化构建docker镜像

五、通过ssh插件交付任务

六、添加jenkins节点

七、RBAC

八、pipeline

九、jenkins结合ansible参数化构建

1、安装ansible

2、新建gitlab项目

3、jenkins新建项目playbook


一、部署

1、简介

  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
  • CI(Continuous integration持续集成持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试

  • CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中

2、部署

软件下载:Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

rpm -ivh jdk-11.0.15_linux-x64_bin.rpm
yum install -y fontconfig
rpm -ivh jenkins-2.395-1.1.noarch.rpm

启动服务:

systemctl enable --now jenkins.service
netstat -antlp|grep :8080

登录:

http://192.168.67.22:8080/

初始密码:

cat /var/lib/ienkins/secrets/initialAdminPassword

安装推荐插件

无需新建用户,直接使用admin账户

二、配置

修改密码:

新建项目:

当是这个错误时:

在jenkins主机上安装git工具:

yum install -y git

当是这个错误时:

 创建密钥并上传gitlab:

ssh-keygen

添加gitlab认证凭据:

复制私钥:

当是这个错误时:

配置ssh

构建触发器

构建任务

指定分支

查看控制台输出

测试:

上传

三、实时触发

安装gitlab插件

配置项目触发器:

配置gitlab:

再回到demo项目下配置

将前面生成的token输入

测试推送:

四、自动化构建docker镜像

安装docker-ce

cd /etc/yum.repos.d/
vim docker.repo[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0[update]
name=centos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/
gpgcheck=0yum install -y docker-ce

 修改内核参数

配置docker默认仓库

拷贝仓库证书

添加解析

测试拉取

安装CloudBees Docker Build and Publish插件

配置项目构建

高级里边

修改docker.sock权限,不然jenkins无法直接执行docker命令

把主机上的docker login信息拷贝到Jenkins上

docker login reg.westos.orgcp -r /root/.docker/ /var/lib/jenkins/
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker/

在cicd1上提交Dockerfile

vim DockerfileFROM nginx
COPY index.html /usr/share/nginx/htmlecho www.yyl.org >> index.htmlgit add .
git commit -m "add Dockerfile"
git push -u origin main

此时gitlab会主动触发jenkins构建任务,观察jenkins的任务输出

五、通过ssh插件交付任务

新建测试虚拟机cicd3 上安装docker-ce

同上

安装

修改内核参数

拷贝仓库证书

jenkins安装ssh插件

进入系统配置,添加ssh主机  添加新的凭据

新建docker_test项目

当project项目成功运行后触发docker_test项目

构建后查看输出

测试

触发

六、添加jenkins节点

安装jdk和git

rpm -ivh jdk-11.0.15_linux-x64_bin.rpm
yum install -y git
配置解析
安装ssh agent
在节点管理中添加节点
关闭master节点的构建任务数
关闭git主机校验
登录
最后测试构建,构建任务会在cicd3节点上运行
在cicd3节点上

七、RBAC

安装插件

修改默认授权策略

新建测试用户

 新建角色

用户授权

 使用不同的用户登录,测试权限是否正确

八、pipeline

添加ssh

新建流水线项目 docker_image_build

配置

pipeline {agent anystages {stage('check out') {steps {git credentialsId: 'f3a3dc6f-e7d6-45ae-9336-43dca000fcee', url: 'git@192.168.67.21:gitlab-instance-ae16f24d/demo.git', branch: 'main'}}stage('docker build') {steps {sh '''cd $WORKSPACEdocker build -t reg.westos.org/library/webserver:${BUILD_NUMBER} .'''}}stage('docker push') {steps {sh '''REPOSITORY=reg.westos.org/library/webserver:${BUILD_NUMBER}docker tag $REPOSITORY reg.westos.org/library/webserver:latestdocker login reg.westos.org -u admin -p 123456docker push $REPOSITORYdocker push reg.westos.org/library/webserver:latest'''}}stage('docker deploy') {steps {sshagent(credentials: ['74dcb735-12f0-419f-aa0c-880ce3a763e9']) {sh '''ssh -o StrictHostKeyChecking=no root@192.168.67.23 """docker ps -a |grep myapp && docker rm -f myappdocker rmi reg.westos.org/library/webserver:latestdocker run -d --name myapp -p 80:80 reg.westos.org/library/webserver:latest """'''}}}}
}

九、jenkins结合ansible参数化构建

主机环境

主机

IP

角色

cicd1

192.168.67.21

测试机test、devops sudo

cicd2192.168.67.22

jenkins、ansible

cicd3

192.168.67.23

测试机prod、devops sudo

1、安装ansible

vim /etc/yum.repos.d/ansible.repo[ansible]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
gpgcheck=0yum install -y ansible

devops是测试机的ssh免密用户,并且配置sudo

useradd devops
echo westos | passwd --stdin devops
visudodevops  ALL=(ALL)       NOPASSWD: ALL

在ansible主机上以jenkins身份配置ssh免密到所有测试机

usermod -s /bin/bash jenkins
su - jenkinsssh-copy-id devops@192.168.67.21
ssh-copy-id devops@192.168.67.23

2、新建gitlab项目

克隆项目

git clone git@192.168.67.21:root/playbook.git
cd playbook/vim ansible.cfg[defaults]
command_warnings=False
remote_user=devops[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=Falsemkdir inventory
cd inventory/vim test[test]
192.168.67.21 http_port=8000vim prod[prod]
192.168.67.23 http_port=8080cd ..vim playbook.yaml---
- hosts: alltasks:- name: install the latest version of Apacheyum:name: httpdstate: latest- name: configure apachetemplate:src: httpd.conf.j2dest: /etc/httpd/conf/httpd.confnotify: restart apache- name: Start service httpd, if not startedservice:name: httpdstate: startedenabled: yeshandlers:- name: restart apacheservice:name: httpdstate: restartedyum install -y httpd
cp /etc/httpd/conf/httpd.conf .
mv httpd.conf httpd.conf.j2
vim httpd.conf.j2修改端口
Listen {{ http_port }}

推送项目

git add .
git commit -m "add playbook"
git push -u origin main

3、jenkins新建项目playbook

新建:

选择参数构建:

 

 

添加首页:

echo cicd1 > /var/www/html/index.html
echo cicd3 > /var/www/html/index.html

 

测试:

http://www.lryc.cn/news/234538.html

相关文章:

  • 【【萌新的SOC学习之 VDMA 彩条显示实验之一】】
  • 相机通用类之海康相机,软触发硬触发(飞拍),并输出halcon格式对象
  • linux时间调整
  • C++模版初阶
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • Go 语言结构体验证详解:validate 标签与自定义规则
  • ​软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】​
  • 深度学习YOLOv5车辆颜色识别检测 - python opencv 计算机竞赛
  • c语言-浅谈指针(3)
  • 从服务器端获取人脸数据,在本地检测特征,并将特征发送给服务器
  • ARDUINO UNO 12颗LED超酷流水灯效果
  • Linux下查看pytorch运行时真正调用的cuda版本
  • ​分享mfc140u.dll丢失的解决方法,针对原因解决mfc140u.dll丢失的问题
  • torch_cluster、torch_scatter、torch_sparse三个包的安装
  • 软件安利——火绒安全
  • Induced AI:一个专门为自动化任务而设计的AI原生浏览器RPA平台
  • vue3中使用reactive定义的变量响应式丢失问题(大坑!!!)
  • Windows Server 2012 R2系统服务器远程桌面服务多用户登录配置分享
  • mysql之搭建MHA架构实现高可用
  • Databend 与海外某电信签约:共创海外电信数据仓库新纪元
  • scala解析命令行参数
  • 盘点60个Python各行各业管理系统源码Python爱好者不容错过
  • SpringSecurity6 | 自动配置(下)
  • 6、传统CV之均值滤波
  • 快速搭建本地的chatgpt
  • 分布式下多节点WebSocket消息收发
  • LeetCode算法题解(动态规划)|LeetCode509. 斐波那契数、LeetCode70. 爬楼梯、LeetCode746. 使用最小花费爬楼梯
  • 【图像处理】:Otsu算法最大类间方差法(大津算法:附源码)
  • 【uni-app】设置背景颜色相关
  • 工厂模式-C++实现