docker方式 部署jenkins服务,实现持续集成(CI/CD)功能

embedded/2024/9/19 0:38:35/ 标签: docker, jenkins, ci/cd

一、背景:

因公司需求,需要部署一套jenkins自动化部署服务,并且是通过docker容器的方式部署的。

二、jenkins简介:

什么是Jenkins ?

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

三:CICD流程简介: 

持续集成( CI/CD)是什么?

CI(Continuous Integration)始终指持续集成 ,CD(Continuous Delivery/Continuous Deployment)是持续交付和/或持续部署,总结为如下三点。

  • 持续集成
  • 持续交付
  • 持续部署

cicd基本流程:

四、docker部署jenkins服务:

1、拉取jenkins镜像:

docker search jenkinsci/blueocean

docker pull jenkinsci/blueocean

[root@iZwz9ippftvoxv000lpl0tZ ~]# docker search jenkinsci/blueocean
NAME                  DESCRIPTION                             STARS     OFFICIAL
jenkinsci/blueocean   https://jenkins.io/projects/blueocean   732       
[root@iZwz9ippftvoxv000lpl0tZ ~]# docker pull jenkinsci/blueocean
Using default tag: latest
latest: Pulling from jenkinsci/blueocean
97518928ae5f: Already exists 
f4d84728e541: Already exists 
419d112ff4fa: Already exists 
ecf8c1881f75: Already exists 
78b59c3bfdb7: Already exists 
2ff43df4e763: Already exists 
aac7818be7cc: Already exists 
2913a3e94ae4: Already exists 
f75b1dac4ec0: Already exists 
3d3fbe6f1850: Already exists 
07ef919d711b: Already exists 
5b96e9c30f6a: Already exists 
83dcd37be04b: Already exists 
6beb8929489c: Already exists 
476e95021232: Already exists 
9add339bd1dd: Already exists 
ecb71d48971e: Already exists 
384cd4783059: Already exists 
latest: Pulling from jenkinsci/blueocean
Digest: sha256:f27933313986f7fb0b5784aa6520ebddc455ce258cbf4d13a3e3cf9d4c94d992
Status: Image is up to date for jenkinsci/blueocean:latest
docker.io/jenkinsci/blueocean:latest

 2、部署jenkins服务:

执行部署jenkins容器服务命令:

docker run -p 8080:8080 -p 8081:8081 -p 50000:50000 --name jenkins -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

[root@iZwz9ippftvoxv000lpl0tZ ~]# docker run -p 8080:8080 -p 8081:8081 -p 50000:50000 --name jenkins -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2024-04-17 08:01:21.037+0000 [id=1]     INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @675ms to org.eclipse.jetty.util.log.JavaUtilLog
2024-04-17 08:01:21.151+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2024-04-17 08:01:21.183+0000 [id=1]     WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2024-04-17 08:01:21.277+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.45.v20220203; built: 2022-02-03T09:14:34.105Z; git: 4a0c91c0be53805e3fcffdcdcc9587d5301863db; jvm 11.0.16.1+1
2024-04-17 08:01:21.620+0000 [id=1]     INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2024-04-17 08:01:21.675+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2024-04-17 08:01:21.675+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2024-04-17 08:01:21.680+0000 [id=1]     INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms
2024-04-17 08:01:22.278+0000 [id=1]     INFO    hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2024-04-17 08:01:22.595+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@1b1637e1{Jenkins v2.346.3,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
2024-04-17 08:01:22.638+0000 [id=1]     INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@5b12b668{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2024-04-17 08:01:22.638+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: Started @2278ms
2024-04-17 08:01:22.646+0000 [id=23]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2024-04-17 08:01:22.937+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2024-04-17 08:01:23.318+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2024-04-17 08:01:28.570+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2024-04-17 08:01:28.630+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2024-04-17 08:01:28.718+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2024-04-17 08:01:30.446+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: System config loaded
2024-04-17 08:01:30.447+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: System config adapted
2024-04-17 08:01:30.448+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2024-04-17 08:01:30.453+0000 [id=29]    INFO    jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2024-04-17 08:01:30.496+0000 [id=45]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata
2024-04-17 08:01:30.506+0000 [id=45]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 8 ms
2024-04-17 08:01:30.601+0000 [id=30]    INFO    jenkins.install.SetupWizard#init: *************************************************************
*************************************************************
*************************************************************Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:436c75eef44d4db1a72f47da0300f659This may also be found at: /var/jenkins_home/secrets/initialAdminPassword*************************************************************
*************************************************************
*************************************************************2024-04-17 08:01:46.417+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2024-04-17 08:01:46.532+0000 [id=22]    INFO    hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running

注意这里可以获取Jenkins控制台登陆密码,后面会需要用到。

3、登入jenkins服务:

这样利用你访问机器的IP地址+8080 即可出现jinkens的界面

 会显示如下的内容

这里需要输入上面的获取到密码:436c75eef44d4db1a72f47da0300f659 

4、初始化jenkins服务: 

上面输入密码之后就会跳转到如下界面
注:这里选择推荐的插件

选择之后弹出如下:

创建一个管理员用户: 

 

保存之后,需要重启一下jenkins服务。然后登入一下jenkins

到此,jenkins服务的部署就完成了。


http://www.ppmy.cn/embedded/6184.html

相关文章

HarmonyOS开发实例:【分布式数据服务】

介绍 分布式数据服务(Distributed Data Service,DDS)为应用程序提供不同设备间数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和分布式数据服务对属于不同的应用的数据进行隔离,保证不同…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)

引言 在 iOS 开发中,将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下,我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而,如果你没有 Mac 电脑,也没有关系,本文将介绍一…

桌面软件使用到的开源库

想了解一下桌面软件开发中可能使用到的dll库 联想锁屏 libcef-常用概念-框架特点-CSDN博客 libcurl库使用详情、libcurl库的制作-CSDN博客 使用Cef和Qt做一个跨平台的多标签多窗口浏览器_cef3 多个标签-CSDN博客 cef 依赖的文件 libcef - Bigben - 博客园 (cnblogs.com) Q…

js 函数节流和函数防抖及区别详解

文章目录 1. 前言2. 函数节流3. 函数防抖4. 总结 1. 前言 浏览器中总是有一些操作非常耗费性能。所以就有了函数节流和函数防抖来提高浏览器性能。 函数节流:频繁触发一个事件时候,每隔一段时间,函数只会执行一次。 函数防抖:当触…

【Arduino IDE 环境配置】

目录 Arduino IDE 环境配置 1. 安装方式2. 操作方法(Arduino中文社区) 2.1. 安装Arduino IDE2.2. 下载固件2.3. 修改Arduino IDE语言2.4. 添加开发板管理网址2.5. 运行离线包2.6. 检查安装是否成功 下载Arduino IDE: 如果你还没有安装Arduin…

C:Jump and Treasure(单调队列优化DP+调和级数)

题意:给你一个0到n的柱子,一开始在0,需要跳到大于n的地方,每个柱子上有个得分, 且限制了最大跳跃步数; 思路:一般很容易想到一个 n*p 时间复杂度的DP , 表示以 i 为结尾的最大得分然后枚举前p…

为什么Socks5代理IP比HTTP代理IP更快?

一、Socks5代理IP和HTTP代理IP的概念 在了解Socks5代理IP和HTTP代理IP之间的速度差异之前,我们首先需要了解什么是Socks5代理IP和HTTP代理IP。 Socks5代理IP是一种通过Socks5协议进行网络连接的代理服务器。Socks5代理服务器将客户端的请求转发到目标服务器&#…

小记一篇 vuecli4项目 打包内存溢出问题

目录 背景先解决内存溢出问题 让项目能够打包打包优化公共第三方模块 提取出来 不走webpack 打包 , 改成 cdn 引入项目中使用 图片等 静态资源 全部走cdn使用thread-loader 开启多线程打包 后序 背景 其他项目组有个项目迭代了3年,突然有一天 vuecli-4 webpack打包…

数据赋能(58)——要求:数据赋能实施部门能力

“要求:数据赋能实施部门能力”是作为标准的参考内容编写的。 在实施数据赋能中,数据赋能实施部门的能力体现在多个方面,关键能力如下图所示。 在实施数据赋能的过程中,数据赋能实施部门应具备的关键能力如下。 理性思维与逻辑分…

自动驾驶数据集汇总

文章目录 2020An Open-Sourcing Localization Dataset Collected in Asian Urban Canyons, including Tokyo and Hong Kong 2020 An Open-Sourcing Localization Dataset Collected in Asian Urban Canyons, including Tokyo and Hong Kong link: https://github.com/weisong…

.net9 AOT编绎生成标准DLL,输出API函数教程-中国首创

1,安装VS2022预览版(Visual Studio Preview) https://visualstudio.microsoft.com/zh-hans/vs/preview/#download-preview 2,选择安装组件:使用C的桌面开发 和 .NET桌面开发 ------------------------------------- …

CSS transition和animation的用法和区别

Transition和Animation在CSS中都是用于实现元素状态变化的效果,但它们在用法和特性上存在明显的区别。 Transition transition是过度属性,主要强调的是元素状态的过渡效果。 它通常用于在元素的状态发生变化时,平滑地过渡到一个新的状态。…

全国产化无风扇嵌入式车载电脑农耕车辆/钢厂天车行业应用

农耕车辆行业应用 背景介绍 当前农耕车车载电脑主要的功能,是要实现农耕车的精确的定位和导航,更加先进的系统则要实现农耕车自动驾驶,与农耕车上相关传感器的通讯(例如耕土深度的传感器, 油量存量传感器…)来实现更多的自动化、信息化的功能…

Python数据可视化库—Bokeh与Altair指南

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在数据科学和数据分析领域,数据可视化是一种强大的工具,可以帮助我们…

STM32总结

1. Keil5 下载代码和编译代码需要注意的事项 下载代码: 安装包版本:确保选择与目标硬件兼容的Keil版本。工程设置:在下载代码前,检查工程的设置,确认芯片型号、晶振频率等信息是否正确配置。依赖库:确保所…

解释器模式:构建领域特定语言的强有力工具

在软件开发中,我们经常需要处理表达式或语言的解析。解释器模式(Interpreter Pattern)是一种行为型设计模式,用于设计一个能够解释特定语言中语句的语法的框架。这种模式特别适合于构建领域特定语言(DSL)&a…

【状态压缩 并集查找 图论】2157. 字符串分组

本文涉及知识点 状态压缩 并集查找 图论 LeetCode2157. 字符串分组 给你一个下标从 0 开始的字符串数组 words 。每个字符串都只包含 小写英文字母 。words 中任意一个子串中,每个字母都至多只出现一次。 如果通过以下操作之一,我们可以从 s1 的字母集…

双臂复合机器人平台叠方块例程使用与自启设置

睿尔曼双臂升降复合机器人平台,旨在为机器人教育提供强大的实训平台,该平台全自主研发,实现机器人建图导航、路径规划,机械臂运动学、动力学、轨迹规划、视觉识别等算法和应用,提供开放式的软件框架,为教学…

OpenCV从入门到精通实战(八)——基于dlib的人脸关键点定位

本文使用Python库dlib和OpenCV来实现面部特征点的检测和标注。 下面是代码的主要步骤和相关的代码片段: 步骤一:导入必要的库和设置参数 首先,代码导入了必要的Python库,并通过argparse设置了输入图像和面部标记预测器的参数。…

Nature 哈佛新型超材料Metafluid粘度、透明度、弹性可变,可用于编程液压机器人

液体都有“智能”、可编程了? 最近,一种被称为“智能"液体的多功能可编程的新型超材料——Metafluid,登上了Nature。 它由哈佛大学SEAS的研究团队研发,据说可自由调节弹性、光学特性、粘度。 甚至能够在牛顿流体和非牛顿流…