【Jenkins+Blue Ocean】docker部署Jenkins,编写Jenkinsfile创建流水线,一篇解决“贼带劲”

简介: Jenkins 是一个持续集成工具,可用于自动化与构建、测试、交付或部署软件相关的各种任务。Jenkins 可以通过本机系统包、Docker 安装,甚至可以由任何安装了 Java 运行时环境 (JRE) 的机器独立运行。持续集成工具还有Drone、Gitlab-CICD(gitlab内置cicd)还要kubesphere容器云平台也能做持续集成(CICD)kubesphere是借助于Jenkins来实现CICD,本身没有该功能。本章就带各位简单搭建Jenkins和使用Jenkins+Blue Ocean及编写Jenkinsfile流程。

@[toc]

前言

作者主页https://blog.csdn.net/qq_48450494?type=blog
个人博客http://ygcloud.work/

Jenkins 是一个持续集成工具,可用于自动化与构建、测试、交付或部署软件相关的各种任务。
Jenkins 可以通过本机系统包、Docker 安装,甚至可以由任何安装了 Java 运行时环境 (JRE) 的机器独立运行。

持续集成工具还有Drone、Gitlab-CICD(gitlab内置cicd)还要kubesphere容器云平台也能做持续集成(CICD)kubesphere是借助于Jenkins来实现CICD,本身没有该功能。
本章就带各位简单搭建Jenkins和使用Jenkins+Blue Ocean及编写Jenkinsfile流程。

Drone使用,请点击这里【Drone+Gitlab】一条龙服务,直接起飞 — 从介绍->部署->配置->写.drone.yml流水线+常见的报错解决

学习kubesphere前,强烈建议阅读【排坑指南之kubeSphere】2022年最新版-”kubeSphere3.2.1 Paas容器云平台“使用DevOps-CICD之”排坑指南“

准备篇

硬件要求

  • 最小256MB内存, 推荐512MB以上
  • 10GB硬盘空间

环境要求

  • Linux系统
  • docker
  • docker-compose

安装使用docker-compsoe点这里

操作篇

部署

这里介绍了三种方式部署,其他方式部署( WAR包部署、yum部署);
下面我们使用 jenkinsci/blueoceanDocker镜像运行,因为 jenkinsci/blueocean集成了blueocean,省去Jenkins内部安装blueocean插件的步骤(方便快捷)。
  1. 使用docker部署
docker run \
  -u root \
  -dit \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /var/jenkins-data:/var/jenkins_home \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

参数解释:

run: 启动运行一个容器;
-u:root身份启动容器,具有root权限;
dit:后台交互式方式运行容器(常用);
--name:指定容器名称为jenkins;
-p:8080是Jenkins web访问界面(容器的端口8080映射到主机上的端口8080);
       基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信(容器的端口50000 映射到主机上的端口50000);
-v: /var/jenkins_home Jenkins主目录,每次重新启动Jenkins,会保持Jenkins当前状态(存放Jenkins服务器数据);
        /usr/bin/docker 宿主机docker命令挂载给容器内使用(我们称为:docker in docker方式);
        /var/run/docker.sock Docker守护程序监听通过基于Unix的套接字文件,这里用于与Dcoker守护进程通信(不添加的话容器内docker命令,不能与守护进程通信);
  1. 使用docker-comopse部署

不会docker-compsoe点这里

在宿主机编写docker-compose.yaml文件,文件内容如下;
下列参数具体意思和上述类似,这里不过多赘诉;
version: '3'  #定义版本
services:  
  jenkins:
    container_name: jenkins
    image: jenkinsci/blueocean:latest
    user: root
    priveleged: true  #开启特权
    ports:  #定义映射端口
    - 8080:8080
    - 50000:50000
    volumes:  #定义挂载卷
    - /var/jenkins-data:/var/jenkins_home
    - /usr/bin/docker:/usr/bin/docker
    - /var/run/docker.sock:/var/run/docker.sock

启动docker-compose对应的文件内容定义的services服务:

$ docker-compose up -d  #后台启动
[+] Running 2/2
 ⠿ Network test_default  Created                                                                                                                     0.1s
 ⠿ Container jenkins     Started                                                                                                                     1.3s

docker-compose常用指令:

$ docker-compose ps  #查看状态信息
NAME                COMMAND                  SERVICE             STATUS              PORTS
jenkins             "/sbin/tini -- /usr/…"   jenkins             running             0.0.0.0:8081->8080/tcp, 0.0.0.0:50001->50000/tcp, :::8081->8080/tcp, :::50001->50000/tcp
$ docker-compose down #停止后移除
[+] Running 2/2
 ⠿ Container jenkins     Removed                                                                                                                     0.8s
 ⠿ Network test_default  Removed  
  1. kubernetes方式部署

参考地址:https://www.jenkins.io/doc/book/installing/kubernetes/

使用

  1. 浏览器访问 宿主机ip+8080端口:
出现如下页面我们可以使用两种方式查看密码:

在这里插入图片描述

  • 查看宿主机上的密码文件(图片上是容器内的密码文件路径)
$ cat /var/jenkins-data/secrets/initialAdminPassword
3b1050b5ebbb4539a14588f0601e163b
  • 使用查看jenkins启动日志方式,查看密码,如下图(两个星号中间)
$ docker logs jenkins

在这里插入图片描述

  1. 选择安装推荐的插件

在这里插入图片描述
这里需要等待几分钟(这里如果出现错误,检查一下网络是否可以上网):
在这里插入图片描述

  1. 创建管理员用户后,实例配置保持默认

在这里插入图片描述

流水线

创建多分支流水线

下面我们会使用多分支流水线、Jenkinsfile、Blue Ocean;

  • 多分支流水线创建时会检查代码仓库所有分支的流水线任务(Jenkinsfile);
  • 在创建流水线之前还需要明白一个概率叫Jenkinsfile,因为接下来的步骤在它基础之上(核心);
  • Blue Ocean是Jenkins Pipeline可视化界面,提高Jenkins用户体验;
官方定义:Jenkins Pipeline 用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件中(称为 Jenkinsfile ),该文件可以被放入项目的源代码控制库中;
总结一句话:Jenkinsfile是一个文本文件记录Pipeline (流水线)的执行Job(任务)的步骤;
  • 创建多分支流水线:点击新建Item-->输入任务名称-->选择多分支流水线-->点击确定,如下图所示;

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

  • 分支源:添加git仓库地址-->创建jenkins凭证-->点击保存;
这里仓库地址使用的是国内gitee(码云)仓库(拉取代码比较快),当然也可以使用github、gitlab、gogs等仓库服务器;
学习搭建gitlab个人仓库服务器,点击这里

本案例使用的gitee代码仓库地址(包含Jenkinsfile文件内容)各位自行获取吧!!!
在这里插入图片描述
点击保存后,Jenins会自动扫描运行Jenkinsfile文件任务;检查输出Log最后的状态是否出现 Finished: SUCCESS 字段(表示完成);
在这里插入图片描述
点击状态查看
在这里插入图片描述
打开Blue Ocean查看
在这里插入图片描述
Blue Ocean显示所有Jenkinsfile的阶段都成功完成(使用Blue Ocean创建流水线也是可以的)
在这里插入图片描述

总结

这里的演示的Jenkinsfile很基础,想深入学习Jenkinsfile请参考官方文档;
使用Jenkinsfile创建流水线的流程介绍完毕,各位快去试着学习部署自己的项目吧!!!

推荐阅读

参考资料

https://www.jenkins.io/zh/doc/

目录
相关文章
|
27天前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
40 5
|
2月前
|
jenkins 测试技术 持续交付
Docker最佳实践:构建高效的CI/CD流水线
【10月更文挑战第17天】在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)已成为提高开发效率和软件质量的重要手段。Docker作为一种容器技术,为构建一致且隔离的开发环境提供了强有力的支撑。本文将探讨如何利用Docker来优化CI/CD流程,包括构建环境的标准化、镜像管理以及与CI/CD工具(如Jenkins、GitLab CI)的集成。
87 5
|
2月前
|
监控 jenkins 持续交付
Docker和Jenkins有什么不同
【10月更文挑战第18天】Docker和Jenkins有什么不同
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
225 0
Docker搭建jenkins环境
|
2月前
|
jenkins Java 持续交付
Jenkins打包,发布,部署
Jenkins打包,发布,部署
264 0
|
2月前
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
4月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
4月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。

热门文章

最新文章