Jenkins学习笔记

news2024/11/17 23:49:05

Jenkins学习笔记

1、基本概念

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

2、安装

文件包:https://pan.baidu.com/s/1uhSpic2bZVBDE-jynycdpg?pwd=lggi

本来打算使用jenkinsci/blueocean,后来在使用过程中发现这个镜像坑比较多,还是决定自己用Dockerfile做一个

# Build: docker build --no-cache --force-rm -t jenkinsci ./
# Run: docker run -d -u root -p 80:8080 --name jenkinsci -v jenkins_home:/root/.jenkins -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkinsci
# Into: docker exec -it jenkinsci /bin/bash
FROM centos:centos7
COPY ./ /dest
WORKDIR /dest

RUN rpm -ivh jdk-11.0.16_linux-x64_bin.rpm && \
    rpm -ivh jenkins-2.362-1.1.noarch.rpm && \
    \cp jenkins /etc/sysconfig/jenkins &&  \
    chmod 777 -R /var/lib/jenkins &&  \
    yum -y install fontconfig && \
    yum -y install git && \
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && \
    yum -y install docker-ce-cli-20.10.5-3.el7

VOLUME ["/root/.jenkins"]
EXPOSE 8080

WORKDIR /

ENTRYPOINT ["jenkins"]

构建镜像

docker build --no-cache -t jenkinsci .

启动镜像

docker run -d -u root -p 80:8080 --name jenkinsci -v jenkins_home:/root/.jenkins -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkinsci

进入容器

docker exec -it jenkinsci /bin/bash

3、配置

http://150.158.24.200/
在这里插入图片描述

获取解锁密码

[root@cicd ~]# docker logs jenkinsci
*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

7aa5995e44fb4c47b20a1da291ed3d00

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

自定义插件
在这里插入图片描述
在这里插入图片描述

创建用户
在这里插入图片描述

实例配置
在这里插入图片描述

配置完成
在这里插入图片描述
在这里插入图片描述

4、插件

Jenkins->Manage Jenkins->Manage Plugins->Available

Credentials Binding Plugin
Gitee
Pipeline
Email Extension Template

5、凭证

Jenkins->Manage Jenkins->Manage Credentials->global

5.1、username-password

在这里插入图片描述
在这里插入图片描述

5.2、ssh-key

在这里插入图片描述
在这里插入图片描述

6、Git hook

jenkins配置gitee webhook
在这里插入图片描述gitee配置推送hook
在这里插入图片描述

7、全局工具配置

Jenkins->Manage Jenkins->Global Tool Configuration

7.1、JDK

JDK8:https://pan.baidu.com/s/1JcpZtQYNDrFLUl00CdhNNw?pwd=bweh
在这里插入图片描述

7.2、Maven

Maven3.6:https://pan.baidu.com/s/1rEQOUN2BdAP0cpoifRnLqQ?pwd=k9g3
在这里插入图片描述

7.3、全局工具配置测试

pipeline {
    agent any
    tools {
       jdk "JDK8u221"
       maven "Maven3.6.3"
    }
    stages {
        stage('Environment Check') {
            steps {
                sh 'java -version'
                sh 'mvn -v'
            }
        }
    }
}

8、Pipeline

8.0、生成器

在这里插入图片描述

8.1、存放位置

jenkins中维护
在这里插入图片描述

项目中维护
在这里插入图片描述

pipeline {
    agent any
    stages {
        stage('Pull') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '6a6543d1-3262-4f96-a4b5-4259a9a5c038', url: 'https://gitee.com/lianxing2233/springcloud-demo.git']])
            }
        }
        stage('Build') {
            steps {
                sh 'docker build --no-cache --force-rm -t springcloud-demo:latest ./'
                sh 'docker images'
            }
        }
    }
    post {
      always {
        emailext(
            to: "2750955630@qq.com",
            subject: 'CICD:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
            body: '${FILE,path="email.html"}'
        )
      }
    }
}

8.2、下载代码

pipeline {
    agent any
    stages {
        stage('Pull') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '6a6543d1-3262-4f96-a4b5-4259a9a5c038', url: 'https://gitee.com/lianxing2233/vue-demo.git']])
            }
        }
    }
}

8.3、构建镜像

pipeline {
    agent any
    stages {
        stage('Pull') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '6a6543d1-3262-4f96-a4b5-4259a9a5c038', url: 'https://gitee.com/lianxing2233/vue-demo.git']])
            }
        }
        stage('Build') {
            steps {
                sh 'docker build --no-cache -t vue-demo ./'
                sh 'docker images'
            }
        }
    }
}

9、推送镜像

阿里云->容器镜像服务->个人实例

9.1、创建命名空间

在这里插入图片描述

9.2、创建镜像仓库

在这里插入图片描述

9.3、登录到阿里云镜像仓库

docker login -u USERNAME -p PASSWORD  registry.cn-hangzhou.aliyuncs.com

9.4、推送镜像

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/ialso/jenkinsci:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/ialso/jenkinsci:[镜像版本号]

9.5、整合到Pipeline

生成密钥引用片段
在这里插入图片描述

pipeline {
    agent any
    stages {
        stage('Pull') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '6a6543d1-3262-4f96-a4b5-4259a9a5c038', url: 'https://gitee.com/lianxing2233/vue-demo.git']])
            }
        }
        stage('Build') {
            steps {
                sh 'docker build --no-cache --force-rm -t vue-demo:latest ./'
                sh 'docker images'
            }
        }
        stage('Push') {
            steps {
                withCredentials([usernamePassword(credentialsId: 'ed4d4a17-85bb-4395-a6a6-abb439c2301a', passwordVariable: 'AliyuPassword', usernameVariable: 'AliyuUsername')]) {
                    sh 'docker login -u ${AliyuUsername} -p ${AliyuPassword}  registry.cn-hangzhou.aliyuncs.com'
                }
                sh 'docker tag vue-demo:latest registry.cn-hangzhou.aliyuncs.com/ialso/vue-demo:latest'
                sh 'docker push registry.cn-hangzhou.aliyuncs.com/ialso/vue-demo:latest'
            }
        }
    }
    post {
      always {
        emailext(
            to: "2750955630@qq.com",
            subject: 'CICD:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
            body: '${FILE,path="email.html"}'
        )
      }
    }
}

在这里插入图片描述

10、邮件配置

10.1、获取邮箱授权码

QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->管理服务->生成授权码

xkdqwhuiwjoxdcia

在这里插入图片描述

10.2、配置jenkins管理员邮箱

Jenkins->Manage Jenkins->Configure System-> Jenkins Location
在这里插入图片描述

10.3、配置

Jenkins->Manage Jenkins->Configure System->Extended E-mail Notification
在这里插入图片描述
在这里插入图片描述

10.4、测试邮件功能

Jenkins->Manage Jenkins->Configure System->E-mail Notification
在这里插入图片描述

10.5、整合至Freestyle

在这里插入图片描述
在这里插入图片描述

10.6、整合至Pipeline

email.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>${ENV,var="JOB_NAME"}-${BUILD_NUMBER}</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
       style="font-size: 11pt; font-family: Tahoma,Arial,Helvetica,sans-serif">
    <tr>
        <td>THIS EMAIL IS SENT BY JENKINS AUTOMATICALLY, PLEASE DON'T REPLY!</td>
    </tr>
    <tr>
        <td>
            <h2>
                <font color="#0000FF">BUILD RESULT - ${BUILD_STATUS}</font>
            </h2>
        </td>
    </tr>
    <tr>
        <td><br />
            <b>
                <font color="#0B610B">DETAILS:</font>
            </b>
            <ht size="2" width="100%" byte="center" />
        </td>
    </tr>
    <tr>
        <td>

            <ul>
                <li>PROJECT NAME&nbsp;:&nbsp;${PROJECT_NAME}</li>
                <li>PROJECT URL&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                <li>BUILD NUMBER&nbsp;:&nbsp;${BUILD_NUMBER}</li>
                <li>STARTED BY&nbsp;:&nbsp;${CAUSE}</li>
                <li>BUILD URL&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                <li>BUILD LOG&nbsp;:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                <li>BUILD WORKFLOW&nbsp;:&nbsp;<a
                        href="${PROJECT_URL}workflow-stage">${PROJECT_URL}workflow-stage</a></li>
            </ul>
        </td>
    </tr>
    <tr>
        <td>
            <font color="#0B610B">BUILD LOG (LAST 200 ROWS):</font></b>
            <hr size="2" width="100%" byte="center" />
        </td>
    </tr>
    <tr>
        <td><textarea cols="80" rows="30" readonly="readonly"
                      style="font-family: Courier New">${BUILD_LOG,maxLines=200,escapeHtml=true}</textarea>
        </td>
    </tr>
</table>
</body>

</html>

pipeline

pipeline {
    agent any
    stages {
        stage('Pull') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '6a6543d1-3262-4f96-a4b5-4259a9a5c038', url: 'https://gitee.com/lianxing2233/vue-demo.git']])
            }
        }
        stage('Build') {
            steps {
                sh 'docker build --no-cache --force-rm -t vue-demo:latest ./'
                sh 'docker images'
            }
        }
    }
    post {
      always {
        emailext(
            to: "2750955630@qq.com",
            subject: 'CICD:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
            body: '${FILE,path="email.html"}'
        )
      }
    }
}

11、常见问题

安装后有时候还会出现jenkins与linux时间不一致,可以在Manage Jenkins->Script Console,执行下面命令

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

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

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

相关文章

半监督目标检测

有监督目标检测&#xff1a; 拥有大规模带标签的数据&#xff0c;包括完整的实例级别的标注&#xff0c;即包含坐标和类别信息&#xff1b;弱监督目标检测&#xff1a; 数据集中的标注仅包含类别信息&#xff0c;不包含坐标信息&#xff0c;如图一 b 所示&#xff1b;弱半监督目…

RHCE-防火墙

目录 一、防火墙介绍 1.1、什么是防火墙 1.2、防火墙的功能&#xff1a; 1.3、linux防火墙的架构 二、iptables 2.1iptables介绍 2.2名词术语&#xff1a; 什么是容器&#xff1f; 什么是Netfilter/Iptables&#xff1f; 什么是表&#xff08;tables&#xff09;&#x…

学历到底是敲门砖还是枷锁?—探讨“孔乙己文学”热搜背后的教育话题

序言 最近&#xff0c;“孔乙己文学”一度成为网络热门话题&#xff0c;引起了不少人的讨论。其中&#xff0c;一句“学历不仅是敲门砖&#xff0c;也是我下不来的高台&#xff0c;更是孔乙己脱不下的长衫”引发了广泛共鸣&#xff0c;让人深思。 敲门砖 or 枷锁&#xff1f; 对…

黑盒测试过程中【测试方法】详解4-因果图

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 黑盒测试过程中【测试方法】讲解1-等价类&#xff0c;边界值&#xff0c;判定表_朝一…

大模型竞争加剧,国内外 AI 监管进一步升级

随着人工智能技术的不断发展&#xff0c;大模型已成为当下最热门的话题之一。不仅国内外的科技公司都在积极投入研发&#xff0c;各国政府也在加大监管力度&#xff0c;以确保人工智能技术的安全和可持续发展。本文将从三个层次分别探讨大模型的定义和热度、国内外AI监管的现状…

【STM32】基础知识 第八课 MDK 工程

【STM32】基础知识 第八课 MDK 工程 准备工作新建寄存器版本 MDK 工程步骤新建工程文件夹添加文件魔术棒设置绝对路径和相对路径对比测试程序 新建 HAL 库版本 MDK 工程CMSISHAL 库简介DriversMiddlewaresDevice 和 Include HAL 库文件介绍HAL 库 API 函数和比那辆命名规则HAL …

Fedora 38 正式发布

Fedora Linux 38 正式发布&#xff0c;用户可以访问官网下载安装最新版本。 新网站 如果你点击了上面的官网链接&#xff0c;你应该会注意到 Fedora 的官网看起来与之前有了很大不同。这是 Fedora Websites & Apps 团队与 Design & Infrastructure 团队以及广大社区合作…

HCIA-RS实验-ENSP搭建一个基础的IP网络

HCIA-RS是华为认证网络工程师&#xff08;Routing & Switching&#xff09;的缩写。通过考取HCIA-RS证书&#xff0c;可以证明自己有能力设计、实现和维护小型网络。而HCIA-RS实验则是考试的一部分&#xff0c;是考生必须要完成的实践环节。这将是第一篇文章&#xff0c;后…

Qt连接MySQL数据库最详细的教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.直接通过MySQL的驱动加载数据库1&#xff09;所需代码2&#xff09;解决QMYSQL driver not loaded 2.通过ODBC连接MySQL数据库&#xff11;&#xff09;官方解释2…

如何react中使用redux和react-redux

Redux Redux 是 JavaScript 状态容器&#xff0c;提供可预测化的状态管理。 可以让你构建一致化的应用&#xff0c;运行于不同的环境&#xff08;客户端、服务器、原生应用&#xff09;&#xff0c;并且易于测试。 不仅于此&#xff0c;它还提供 超爽的开发体验&#xff0c;比…

指针可以这样认知

注&#xff1a;此篇文章仅限初步了解&#xff0c;本小白后续会持续进行详解指针的相关操作。 目录&#xff1a; 认知内存一个内存单元的大小地址的产生 理解指针用途 指针变量的大小&#x1f49e;结尾 了解指针为什么需要了解内存呢&#xff1f; 因为指针是用来管理内存&#x…

【k8s】ruoyi微服务迁移到k8s

书接上回【传统方式部署Ruoyi微服务】&#xff0c;此刻要迁移至k8s。 环境说明 31 master &#xff0c; 32 node1 &#xff0c; 33 node2迁移思路 交付思路: 其实和交付到Linux主机上是一样的&#xff0c;无外乎将这些微服务都做成了Docker镜像; 1、微服务数据层: MySQL、 R…

聊聊 IP packet 的 TTL 与 tcp segment 的 MSL

聊聊 IP packet 的 TTL 与 tcp segment 的 MSL 1 前言 - 网络知识的重要性 近几年在排查解决应用系统在客户现场遇到的复杂问题时&#xff0c;越来越觉得除了扎实的LINUX操作系统知识&#xff0c;对TCP/IP网络知识的深入理解也是至关重要的。 有鉴于此&#xff0c;后续笔者会…

排序算法---插入排序

插入排序是一种简单的排序算法&#xff0c;一般又称为直接插入排序。插入排序的思想与选择排序有些相似&#xff0c;即在原数组上将数组分为两个部分&#xff1a;已排列好的有序数组和待排列数组&#xff0c;选择排序强调的是“选择”&#xff0c;而插入排序强调的是”插入“&a…

【Excel统计分析插件】上海道宁为您提供统计分析、数据可视化和建模软件——Analyse-it

Analyse-it是Microsoft Excel中的 统计分析插件 它为Microsoft Excel带来了 易于使用的统计软件 Analyse-it在软件中 引入了一些新的创新统计分析 Analyse-it与 许多Excel加载项开发人员不同 使用完善的软件开发和QA实践 包括单元/集成/系统测试 敏捷开发、代码审查 …

【JavaScript面向对象】

JavaScript面向对象 1 本节目标2 面向对象编程介绍2.1 两大编程思想2.2 面向过程编程POP2.3 面向对象编程OOP2.4 面向过程和面向对象的对比 3 ES6中的类和对象3.1 对象3.2 类class3.3 创建类3.4 类constructor构造函数3.5 类添加方法3.6 三个注意点 4 类的继承4.1 继承4.2 supe…

matlab 点云采样相关操作-源码复制粘贴即可

1.随机采样一个百分点的随机抽样 clc; clear; close all; % clear everything% Import point cloud pc pointCloud(Lion.xyz);% Plot all points pc.plot; % points are colored by z coordinate title(All Points, Color, w); view(0,0); snapnow;% Select randomly 5 perce…

FL Studio21免费吗?怎么下载最新中文版本?

FL Studio中文版已上线&#xff0c;自20.8版起已支持简体中文。推荐使用Windows 10系统安装&#xff0c; Windows 7系统设置FL Studio语言为中文时若出现乱码&#xff0c;可以将Win10系统中的“微软雅黑”字体复制并安装进Win7系统电脑中&#xff01;FL Studio支持什么格式的插…

【软考数据库】第四章 操作系统知识

目录 4.1 进程管理 4.1.1 操作系统概述 4.1.2 进程组成和状态 4.1.3 前趋图 4.1.4 进程同步与互斥 4.1.5 进程调度 4.1.6 死锁 4.1.7 线程 4.2 存储管理 4.2.1 分区存储管理 4.2.3 分页存储管理 4.2.…

进程与线程:同步和互斥

进程与线程&#xff1a;同步&互斥 同步&互斥的概念 ​ 进程具有异步性的特征。异步性是指各并发进程执行的进程的以各自独立的&#xff0c;不可预知的速度向前推进 同步 ​ 同步 亦称为直接制约关系&#xff0c;它是指为完成某种任务而建立的两个或多个进程&#xf…