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.rhkb.cn/news/200824.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang起步篇(Windows、Linux、mac三种系统安装配置go环境以及IDE推荐以及入门语法详细释义)

Golang起步篇 Golang起步篇一. 安装Go语言开发环境1. Wondows下搭建Go开发环境(1). 下载SDK工具包(2). 解压下载的压缩包,放到特定的目录下,我一般放在d:/programs下(路径不能有中文或者特殊符号如空格等)(3). 配置环境变量步骤1:先打开环境变…

2023年国自然植物科学相关面上项目信息公布(小麦、大麦、棉花、大豆、玉米)

2024年申报国自然项目基金撰写及技巧http://mp.weixin.qq.com/s?__bizMzA4NTAwMTY1NA&mid2247575761&idx1&sn32dbacd3393f3b76a1e0668e4b8b3c89&chksm9fdd7c08a8aaf51ec31d4790067bb57751a09947eeb7e728b8c008d26b89adba37e0cab32a62&scene21#wechat_redi…

HandBrake :MacOS专业视频转码工具

handbrake 俗称大菠萝,是一款免费开源的视频转换、压缩软件,它几乎支持目前市面上所能见到的所有视频格式,并且支持电脑硬件压缩,是一款不可多得的优秀软件 优点 ∙Windows, Linux, Mac 三平台支持 ∙开源、免费、无广告 ∙支…

开发上门送桶装水小程序要考虑哪些业务场景

上门送水业务已经有很长一段时间了,但是最开始都是给用户发名片、贴小广告,然后客户电话订水,水站工作人员再上门去送,这种人工记单和派单效率并不高,并且电话沟通中也比较容易出现偏差,那么根据这个情况就…

Java线程的学习

本来我以为这可能只是Java里的一小块知识点,但当我搜索自己关注的Up主的网课时,觉得还是开一个系列来记录好了。我的记录绝不仅仅是照搬课程中的内容,我会带上自己的理解以及示例代码、并且是按照本人的专业课老师上课的节奏来记录&#xff0…

算法---腐烂的橘子

题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

详解Python Tornado框架写一个Web应用全过程

Tornado是什么 之前在看Jupyter组件的源码的时候,发现了tornado这个web框架。 不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。 这样非常适合 long polling , WebSockets 以及其他需要与每个用户…

2019ICPC南京站

A A Hard Problem 题意&#xff1a;给定一个正整数 n &#xff0c;你需要找出最小整数 k&#xff0c;满足&#xff1a;从{1,2,⋯,n}中任意选择长度为k的子集&#xff0c;存在两个不同的整数 u,v∈T, 且 u 是 v 的因数。 思路&#xff1a;打表找规律 #include <bits/std…

深入解析数据结构与算法之堆

文章目录 &#x1f966;引言&#xff1a;&#x1f966;什么是堆&#x1f966;大顶堆与小顶堆&#x1f9c4;大顶堆&#xff08;Max Heap&#xff09;&#x1f9c4;小顶堆&#xff08;Min Heap&#xff09; &#x1f966;堆的表示&#x1f9c4;数组表示&#xff1a;&#x1f9c4;…

ROS2串口通讯serial库(适用于humble版本)

要的串口操作的API介绍在这里&#xff1a;serial: serial::Serial Class Reference (wjwwood.io) 但是我们不是直接利用上面这个东西&#xff0c;而是使用的是根据这个改写的一个针对ros2的一个serial库&#xff0c;这个serial库是根据上面这个库改写来的&#xff0c;ros2的库在…

渗透测试高级技巧(一):分析验签与前端加密

“开局一个登录框” 在黑盒的安全测试的工作开始的时候&#xff0c;打开网站一般来说可能仅仅是一个登录框&#xff1b;很多时候这种系统往往都是自研或者一些业务公司专门研发。最基础的情况下&#xff0c;我们会尝试使用 SQL 注入绕过或者爆破之类的常规手段&#xff0c;如果…

【STM32】TF卡FTA32文件系统

一、SD卡介绍 1.SD简介 本质&#xff1a;NandFlash控制芯片 2.SD卡存储容量等级 3.FAT文件系统的使用 4.SD卡速度等级 5.SD卡驱动方式 1.SDIO&&SD 1&#xff09;SDIO接口通信线&#xff1a;CLK/CMD/DAT0-3&#xff08;数据传输线4根&#xff09; 2&#xff09;SPI接口…

CodeWhisperer 一款好玩的 AI 插件

忙里抽闲&#xff0c;今天试了试 CodeWhisperer 这款插件&#xff0c;我是在 IDEA 中做的测试&#xff0c;下面是我的一些使用感想&#xff1a; 安装 CodeWhisperer 插件&#xff1a;在 IntelliJ IDEA 中&#xff0c;可以通过插件管理器安装 CodeWhisperer 插件&#xff0c;然…

基于Cortex®-M4F的TM4C123GH6NMRT7R 32位MCU,LM74900QRGERQ1、LM74930QRGERQ1汽车类理想二极管

一、TM4C123GH6NMRT7R IC MCU 32BIT 256KB FLASH 157BGA Tiva™C系列微控制器为设计人员提供了基于ARMCortex™-M的高性能架构&#xff0c;该架构具有广泛的集成功能以及强大的软件和开发工具生态系统。以性能和灵活性为目标&#xff0c;Tiva™C系列架构提供了一个具有FPU的80…

汽车托运汽车会产生公里数吗?

汽车托运&#xff0c;顾名思义就是把汽车放在板车上进行托运&#xff0c;既然是被托运&#xff0c;那为什么还会产生公里数呢?是被司机私用了吗?还是被当成租赁工具租借出去了呢? 其实不然&#xff0c;回到托运流程里&#xff0c;特别是大板车&#xff0c;我们的线路有很多需…

Redis(事务和持久化)(很重要!)

事务的定义&#xff1a; Redis中的事务是指一组命令的集合&#xff0c;这些命令可以在一个原子操作中执行。在Redis中&#xff0c;可以使用MULTI命令开始一个事务&#xff0c;然后使用EXEC命令来执行事务中的所有命令&#xff0c;或者使用DISCARD命令来取消事务。事务可以确保…

ERP对接淘宝/天猫/京东/拼多多商品详情数据API接口

引言 今天&#xff0c;我们时代变化非常快&#xff0c;传统行业做法&#xff0c;已经无法完全适应时代的发展。互联网的发展&#xff0c;造成了一股网购热。京东&#xff0c;天猫&#xff0c;淘宝&#xff0c;易购……网购&#xff0c;给我们生活带来了方便&#xff0c;消费者…

亚马逊第二个大语言模型 Olympus 即将上线

据外媒爆料&#xff0c;亚马逊正在训练他的第二个大语言模型——Olympus&#xff0c;很有可能在今年12月份上线。亚马逊计划将Olympus接入在线零售商店、Echo等设备上的Alexa语音助手&#xff0c;并为AWS平台提供新的功能。据说这个大语言模型规模达到2万亿&#xff08;2000B&a…

排序算法--冒泡排序

实现逻辑 ① 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 ②对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。 ③针对所有的元素重复以上的步骤&#xff0c;除了最后一个。 ④…

java+springboot+bootstrap校园闲置物品拍卖交易平台_ngad7-

根据日常实际需要&#xff0c;一方面需要在系统中实现基础信息的管理&#xff0c;同时还需要结合实际情况的需要&#xff0c;提供校园闲置物品交易管理功能&#xff0c;方便校园闲置物品交易管理工作的展开&#xff0c;综合考虑&#xff0c;本套系统应该满足如下要求&#xff1…