CI/CD - jenkins

news2024/12/27 13:49:49

目录

一、部署

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=0

yum install -y docker-ce

 修改内核参数

配置docker默认仓库

拷贝仓库证书

添加解析

测试拉取

安装CloudBees Docker Build and Publish插件

配置项目构建

高级里边

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

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

docker login reg.westos.org

cp -r /root/.docker/ /var/lib/jenkins/
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker/

在cicd1上提交Dockerfile

vim Dockerfile

FROM nginx
COPY index.html /usr/share/nginx/html

echo www.yyl.org >> index.html


git 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 any

    stages {
        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 $WORKSPACE
                docker 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:latest
                docker login reg.westos.org -u admin -p 123456
                docker push $REPOSITORY
                docker 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 myapp
                    docker rmi reg.westos.org/library/webserver:latest
                    docker 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=0
 
yum install -y ansible

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

useradd devops
echo westos | passwd --stdin devops
visudo

devops  ALL=(ALL)       NOPASSWD: ALL

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

usermod -s /bin/bash jenkins
su - jenkins

ssh-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=False

mkdir inventory
cd inventory/

vim test

[test]
192.168.67.21 http_port=8000

vim prod

[prod]
192.168.67.23 http_port=8080

cd ..

vim playbook.yaml

---
- hosts: all
  tasks:
  - name: install the latest version of Apache
    yum:
      name: httpd
      state: latest

  - name: configure apache
    template:
      src: httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify: restart apache

  - name: Start service httpd, if not started
    service:
      name: httpd
      state: started
      enabled: yes

  handlers:
  - name: restart apache
    service:
      name: httpd
      state: restarted

yum 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.coloradmin.cn/o/1224373.html

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

相关文章

linux进程之进程的优先级➕环境变量

文章目录 1.优先级的认识1.1优先级的介绍1.2初识优先级1.3ps指令1.4查看/修改进程的优先级1.5对优先级的认识1.6对进程的深一步理解 2.环境变量2.0环境变量相关的命令2.1环境变量的概念2.2常见/查看环境变量2.3环境变量的作用2.4修改环境变量1.将zombie可执行程序放到PATH现有的…

IOS object-c大屏图表 PNChart 折线图 曲线图

折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。在折线图中,类别数据沿水平轴均匀分布,所有值数…

​软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】 课本里章节里所有蓝色字体的思维导图

AI Navigation导航系统_unity基础开发教程

AI Navigation导航系统 安装插件烘焙导航系统障碍物创建人物的AI导航动态障碍物 在unity编辑器中,有一个灰常好用的插件:Navigation。有了它1,你就可以实现人物自动走到你鼠标点击的位置,而且还会自动避开障碍物,下面就…

7、传统CV之高斯滤波

这一节在上一节均值滤波的基础上,再进阶一下,了解一下什么是高斯滤波。 首先,如上一节所说,均值滤波是利用一个窗口在图片上滑动,每次都计算窗口内能看到的像素的平均值,然后将平均值作为滤波的输出,从而可以起到平滑图像、去噪点的作用。 有没有发现,此时并没有特别…

SARAS-Net: Scale and Relation Aware Siamese Network for Change Detection

SARAS-Net:用于变化检测的尺度和关系感知的孪生网络 AAAI Chao-Peng Chen, Jun-Wei Hsieh, Ping-Yang Chen, Yi-Kuan Hsieh, Bor-Shiun Wang 2023 摘要:变化检测(CD)旨在找出不同时间两幅图像之间的差异,并输出变化图来表示该区域是否发生了…

C++17中std::variant的使用

可变参数模板类std::variant表示类型安全联合体(type-safe union)。std::variant的实例在任何给定时间要么保存其替代类型之一的值,要么在错误的情况下无值。 与union一样,如果std::variant保存某个对象类型T的值,则T的对象表示形式将直…

heatmap | cell cycle genes in Seurat

目的:使用bulk 数据,查看HeLa 双胸苷阻断法 细胞同步化 释放 [0, 3, 4.5, 6, 9, 10.5, 12, 15, 18, 19.5, 21, 22.5, 25.5, 30] 小时后 cell cycle 基因的表达情况。 1.结果 S phase G2M phase S G2M phase 不方便看,横过来看:…

Windows上搭建一个网站(基本生产环境)

前言 本博客记录的是Windows上一次网站搭建的过程,主要是在前端采用的是React,后端采用的是Flask,记录一下生产版本搭建流程和坑点,供有缘人一起进步,当然本博客还存在很多不足。 前端项目构建生产版本 以React为例…

【C++】容器string的常用成员函数接口

目录 string - C Reference 1 容量相关 1.1 size/length 1.2 capacity 1.3 resize 1.4 reserve 1.5 empty 2 运算符重载 2.1 operator 2.2 operator[] 2.3 operator&#xff08;非成员函数&#xff09; 2.4 operator 2.5 operator>> && operator<…

​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第20章 系统架构设计师论文写作要点&#xff08;P717~728&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

人工智能-循环神经网络通过时间反向传播

到目前为止&#xff0c;我们已经反复提到像梯度爆炸或梯度消失&#xff0c; 以及需要对循环神经网络分离梯度。 例如&#xff0c;我们在序列上调用了detach函数。 为了能够快速构建模型并了解其工作原理&#xff0c; 上面所说的这些概念都没有得到充分的解释。 本节将更深入地探…

SpringSecurity6 | 自动配置(下)

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

CCF CSP认证 历年题目自练Day47

题目 试题编号&#xff1a; 201712-3 试题名称&#xff1a; Crontab 时间限制&#xff1a; 10.0s 内存限制&#xff1a; 256.0MB 样例输入 3 201711170032 201711222352 0 7 * * 1,3-5 get_up 30 23 * * Sat,Sun go_to_bed 15 12,18 * * * have_dinner 样例输出 201711170…

51.Sentinel微服务保护

目录 &#xff08;1&#xff09;初识Sentinel。 &#xff08;1.1&#xff09;雪崩问题及解决方案。 &#xff08;1.1.1&#xff09;雪崩问题。 &#xff08;1.1.2&#xff09;解决雪崩问题的四种方式。 &#xff08;1.1.3&#xff09;总结。 &#xff08;1.2&#xff09;…

【LeetCode刷题-滑动窗口】--345.反转字符串中的元音字母

345.反转字符串中的元音字母 class Solution {public String reverseVowels(String s) {int len s.length();if(len < 2){return s;}char[] charArray s.toCharArray();int left 0,right len - 1;while(true){while(left < len && checkVowels(charArray[lef…

C语言实现冒泡排序(超详细)

排序算法 - 冒泡排序 什么是冒泡排序&#xff1f;冒泡排序有啥用呢&#xff1f;冒泡排序的实现代码讲解冒泡排序的总结 什么是冒泡排序&#xff1f; 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的列表&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序…

【Linux】第十七站:进程创建与进程终止

文章目录 一、进程创建1.fork函数2.写时拷贝3.批量化创建多个进程 二、进程终止1.进程退出场景2.进程退出的方法&#xff08;1&#xff09;exit和return&#xff08;2&#xff09;_exit和exit 一、进程创建 1.fork函数 在linux中fork函数时非常重要的函数&#xff0c;它从已存…

【总结】坐标变换和过渡矩阵(易忘记)

xCy&#xff0c;此为x到y的坐标变换。 [β1,β2,…,βn] [α1,α2,…αn]C&#xff0c;此为基α到基β的过渡矩阵。 这个概念经常忘记。。。alpha到beta看来就是alpha后面加一个过渡矩阵了&#xff0c;很直观。坐标变换就是根据过渡矩阵和基本形式推一推得到吧&#xff0c;记…

若依前后端分离版,快速上手

哈喽~大家好&#xff0c;这篇来看看若依前后端分离版&#xff0c;快速上手&#xff08;肝了挺久的&#xff09;。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【Springboot和Vue全栈开发】…