CICD 持续集成与持续交付——jenkins

部署

软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

[root@cicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[root@cicd2 ~]# yum install -y fontconfig[root@cicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm

启动服务

[root@cicd2 ~]# systemctl enable --now jenkins.service
[root@cicd2 ~]# netstat -antlp|grep :8080

登录

192.168.92.22:8080

初始密码

[root@cicd2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

安装推荐插件

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

配置

修改密码

新建项目

在jenkins主机上安装git工具

[root@cicd2 ~]# yum install -y git

创建密钥并上传gitlab

[root@cicd2 ~]# ssh-keygen[root@cicd2 ~]# cat .ssh/id_rsa.pub

添加gitlab认证凭据

复制私钥

配置ssh

[root@cicd2 ~]# vim  /etc/ssh/ssh_configStrictHostKeyChecking no

构建触发器

构建任务

查看控制台输出

实时触发

安装gitlab插件

配置项目触发器

配置gitlab

再回到demo项目下配置

测试推送

添加jenkins节点

新建虚拟机cicd3

安装jdk和git

[root@cicd3 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[root@cicd3 ~]# yum install -y git

配置解析

[root@cicd3 ~]# cat /etc/hosts

在节点管理中添加节点

配置从节点

cicd3 ssh认证

关闭master节点的构建任务数

关闭git主机校验

最后测试构建,构建任务会在docker1节点上运行

自动化构建docker镜像

在cicd3上安装docker-ce

[root@cicd3 ~]# cd /etc/yum.repos.d/[root@cicd3 yum.repos.d]# cat docker.repo

[root@cicd3 yum.repos.d]# yum install -y docker-ce

修改内核参数

[root@cicd3 ~]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
[root@cicd3 ~]# sysctl --system[root@cicd3 ~]# systemctl  enable --now docker

配置docker默认仓库

[root@cicd3 ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://reg.westos.org"]
}

[root@cicd3 ~]# systemctl  restart docker

拷贝仓库证书

[root@k8s1 ~]# cd /etc/docker/[root@k8s1 docker]# scp -r certs.d/ 192.168.92.23:/etc/docker/
[root@cicd3 ~]# ls /etc/docker/certs.d/reg.westos.org/ca.crt

测试

[root@cicd3 ~]# docker pull nginx

登录私有harbor仓库

[root@cicd3 ~]# docker login reg.westos.org

安装CloudBees Docker Build and Publish插件

配置项目构建

在server1上提交Dockerfile

[root@cicd1 dockerfile]# cat Dockerfile

[root@cicd1 demo]# git status -s[root@cicd1 demo]# git add  Dockerfile[root@cicd1 demo]# git commit -m "add Dockerfile"[root@cicd1 demo]# git push -u origin main

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

通过ssh插件交付任务

jenkins安装ssh插件

进入系统配置,添加ssh主机

新建ssh项目

当docker项目成功运行后触发ssh项目

构建后查看输出

RBAC

安装插件

修改默认授权策略

新建测试用户

新建角色

用户授权

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

pipeline

安装ssh agent 插件

新建流水线项目 docker_image_build

复制一下脚本并做相应修改

pipeline {agent anystages {stage('check out') {steps {git credentialsId: 'e44734dd-bdce-4a18-9722-bc51ca25ddd6', url: 'git@192.168.92.21:root/dockerfile.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 westosdocker push $REPOSITORYdocker push reg.westos.org/library/webserver:latest'''}}stage('docker deploy') {steps {sshagent(credentials: ['044d5700-a59d-4f63-a241-7530117879c3']) {sh '''ssh -o StrictHostKeyChecking=no root@192.168.92.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 """'''}}}}
}

注意:ssh需要使用ssh免密认证

jenkins结合ansible参数化构建

主机环境

主机

IP

角色

cicd2

192.168.92.22

jenkins、ansible

cicd1

192.168.92.21

测试机test、devops sudo

cicd3

192.168.92.23

测试机prod、devops sudo

安装ansible

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

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

[root@cicd1 ~]# useradd devops[root@cicd1 ~]# echo westos | passwd --stdin devops[root@cicd1 ~]# visudo

​cicd3同上配置

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

[root@cicd2 ~]# usermod -s /bin/bash jenkins[root@cicd2 ~]# su - jenkins-bash-4.2$ ssh-keygen-bash-4.2$ ssh-copy-id devops@192.168.92.21-bash-4.2$ ssh-copy-id devops@192.168.92.23

新建gitlab项目

克隆项目

[root@cicd1 ~]# git clone git@192.168.92.21:root/playbook.git

[root@cicd1 ~]# cd playbook/[root@cicd1 playbook]# vim ansible.cfg
[defaults]
command_warnings=False
remote_user=devops[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@cicd1 playbook]# mkdir inventory[root@cicd1 playbook]# cd inventory/
[root@cicd1 inventory]# vim test[test]
192.168.92.21 http_port=8000
[root@cicd1 inventory]# vim prod[prod]
192.168.92.23 http_port=8080
[root@cicd1 inventory]# cd ..[root@cicd1 playbook]# 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: restarted

[root@cicd1 playbook]# yum install -y httpd[root@cicd1 playbook]# cp /etc/httpd/conf/httpd.conf .[root@cicd1 playbook]# mv httpd.conf httpd.conf.j2[root@cicd1 playbook]# vim httpd.conf.j2

推送项目

[root@cicd1 playbook]# git add .[root@cicd1 playbook]# git status -s[root@cicd1 playbook]# git commit -m "add playbook.yaml"[root@cicd1 playbook]# git push -u origin main

jenkins新建项目playbook

选择参数构建

控制台输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149862.shtml

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

相关文章

【JVM】Java虚拟机

本文主要介绍了JVM的内存区域划分,类加载机制以及垃圾回收机制. 其实JVM的初心,就是让java程序员不需要去了解JVM的细节,它把很多工作内部封装好了.但是学习JVM的内部原理有利于我们深入理解学习Java. 1.JVM的内存区域划分 JVM其实是一个java进程 ; 每个java进程,就是一个jvm…

MVSNet论文笔记

MVSNet论文笔记 摘要1 引言2 相关基础2.1 多视图立体视觉重建(MVS Reconstruction)2.2 基于学习的立体视觉(Learned Stereo)2.3 基于学习的多视图的立体视觉(Learned MVS) 3 MVSNet3.1 网络架构3.2 提取图片…

ModStartCMS v7.6.0 CMS备份恢复优化,主题开发文档更新

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

SAP ABAP结构与内表的创建

一、定义一个结构体 DATA:BEGIN OF LS_MATNR,MATNR TYPE MATNR,MAKTX TYPE MAKTX, END OF LS_MATNR. 二、定义一个包含表头的内表 DATA:BEGIN OF LT_MAT OCCURS 0,MATNR TYPE MATNR,MAKTX TYPE MAKTX, END OF LT_MAT. 三、参考数据结构来定义内表 DATA:LT_MAT LIKE TABLE…

OpenAI Assistants-API简明教程

OpenAI在11月6号的开发者大会上,除了公布了gpt4-v、gpt-4-turbo等新模型外,还有一个assistants-api,基于assistants-api开发者可以构建自己的AI助手,目前assistants-api有三类的工具可以用。首先就是之前大火的代码解释器(Code In…

苍穹外卖--菜品分页查询

设计DTO类 Data public class DishPageQueryDTO implements Serializable {private int page;private int pageSize;private String name;private Integer categoryId; //分类idprivate Integer status; //状态 0表示禁用 1表示启用}设计VO类 Data Builder NoArgsConstructor…

奇富科技发布鸿蒙元服务1.0版本,打造鸿蒙生态金融科技全新体验

近日,奇富科技率先发布鸿蒙元服务1.0版本,成为首家融入鸿蒙生态的金融科技公司,为用户带来前所未有的数字生活体验。此次与华为终端云的全面合作,是两大行业领军者的深度融合,不仅实现技术的交融,更彰显两大…

蓝桥杯 map

map 代码示例 #include<iostream> #include<map> using namespace std; int main(){//创建并初始化mapmap<int,string> myMap{{1,"Apple"},{2,"Banana"},{3,"Orange"}} ;//插入元素myMap.insert(make_pair(4,"Grapes&qu…

如何利用1688批发市场价格做跨境代购业务?(API数据接口)

随着互联网的快速发展&#xff0c;电子商务在全球范围内迅速普及。作为全球最大的B2B电子商务平台之一&#xff0c;1688为广大商家提供了一个便捷、高效的在线交易平台。在这个平台上&#xff0c;商家可以展示、售卖自己的产品&#xff0c;而消费者则可以轻松地找到心仪的商品。…

TensorRT基础知识及应用【学习笔记(十)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、准备知识1.1 环境配置A. CUDA DriverB. CUDAC. cuDNND. TensorRT 1.2 编程模型 二、构建阶段2.1 创建网络定义2.2 配置参数2.3 生成Engine2.4 保存为模型文件2.5 释放资源 三、运…

ChatGPT API 学习

参考&#xff1a;从零开始的 ChatGPT API 使用指南&#xff0c;只需三步&#xff01; - 知乎 (zhihu.com) ChatGPT API 是一种由 OpenAI 提供的 API&#xff0c;它可以用最简单的方式把 ChatGPT 的聊天能力接入到各种应用程序或服务中。 自然语言语音识别(Natural Language S…

Kotlin原理+协程基本使用

协程概念 协程是Coroutine的中文简称&#xff0c;co表示协同、协作&#xff0c;routine表示程序。协程可以理解为多个互相协作的程序。协程是轻量级的线程&#xff0c;它的轻量体现在启动和切换&#xff0c;协程的启动不需要申请额外的堆栈空间&#xff1b;协程的切换发生在用…

云计算(一):弹性计算概述

云计算&#xff08;一&#xff09;&#xff1a;弹性计算概述 背景含义原理应用 背景 在实际场景中&#xff0c;经常会出现短时间内资源需求爆发式增长或长时间内资源需求不断增长&#xff0c;这时需要资源供给时刻满足需求的变化&#xff0c;保障业务正常运行。传统的供给方式…

为什么同样是做测试,别人年薪30W+?我10k!!!

作为一名初出茅庐的软件测试员&#xff0c;职业发展的道路的确蜿蜒曲折&#xff0c;面对一次次的岗位竞争&#xff0c;挑战一道道的面试关卡&#xff0c;一边带着疑惑&#xff0c;一边又要做出选择&#xff0c;只能无奈的感叹&#xff1a;比你优秀的人比你还努力&#xff0c;你…

图片降噪软件 Topaz DeNoise AI mac中文版功能

Topaz DeNoise AI for Mac是一款专业的Mac图片降噪软件。如果你有噪点的相片&#xff0c;可以通过AI智能的方式来处理掉噪点&#xff0c;让照片的噪点降到最 低。有了Topaz DeNoise AI mac版处理图片更方便&#xff0c;更简单。 Topaz DeNoise AI mac软件功能 无任何预约即可在…

“腾易视连”构建汽车生态新格局 星选计划赋能创作者价值提升

11月16日&#xff0c;在2023年广州国际车展前夕&#xff0c;以“腾易视连&#xff0c;入局视频号抓住增长新机会”为主题的腾易创作者大会在广州隆重举办。此次大会&#xff0c;邀请行业嘉宾、媒体伙伴、生态伙伴、视频号汽车领域原生达人等共济一堂&#xff0c;结合汽车行业数…

快速入门ESP32——开发环境配置PlatformIO IDE

相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 一、下载安装二、验证 一、下载安装 下载安装 vscode 安装PlatformIO插件 创建工程 二、验证 写一个简单的函数来验证一下功能 void setup() {// put your setup cod…

用css实现原生form中radio单选框和input的hover已经focus的样式

一.问题描述&#xff1a;用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中&#xff0c;一般公司ui都会给效果图&#xff0c;比如单选按钮radio样式&#xff0c;input输入框hover的时候样式&#xff0c;以及focus的时候样式&#xff0c;等等&#…

ZYNQ_project:uart(odd,even)

概念&#xff1a; UART&#xff08;Universal Asynchronous Receiver-Transmitter&#xff09;&#xff1a;即通用异步收发器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。一般UART接口常指串口。 UART在发送数据时将并行数据转换成串行数据来传输&#xff…

设计模式(二)-创建者模式(2-0)-简单工厂模式

一、简单工厂模式定义 客户端不需要关注创建实例的过程。于是需要通过工厂模式&#xff0c;要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可&#xff0c;而创建对象过程由一种类来负责&#xff0c;该类称为工厂类。 由于创建实例的方式是在静态方法里实现的…