容器化部署 Jenkins,并配置SSH远程操作服务器
哆啦田田田 2024-06-16 17:07:10 阅读 52
一、Jenkins是什么
二、常见的部署Jenkins的方法
三、为什么选择容器化部署
四、容器化部署Jenkins步骤
1、安装 Docker
2、获取 Jenkins 镜像
3、创建并运行容器
4、访问 Jenkins
4.1 查看初始密码问题
5、配置 Jenkins
5.1 安装插件
5.2 创建管理员用户
5.3 实例配置
五、简单使用Jenkins配置SSH远程操作服务器
1、安装SSH Plugin
2、配置凭据
3、SSH相关配置
4、新建任务
5、构建任务
6、查看构建结果
一、Jenkins是什么
Jenkins可以简单理解为一个自动化工具,它帮助软件开发团队实现了持续集成和持续交付的过程。持续集成是指将不同开发者的代码合并到主干之前,自动进行构建、测试等操作,以确保代码质量和稳定性。持续交付则是指在每次代码变更后,自动进行打包和部署,以便快速将新功能或修复发布给用户。
使用Jenkins,你可以设置一个任务或流水线,在其中定义一系列需要执行的步骤。比如,当有新的代码提交到版本控制系统(如Git)时,Jenkins会检测到变更,并触发相应的构建任务。它会自动下载最新的代码、编译项目、运行各种测试(单元测试、集成测试等),甚至还能进行静态代码分析来找出潜在问题。
如果构建和测试成功,Jenkins可以进一步将生成的软件包部署到目标服务器上,使其能够被用户访问到。这样做的好处是节省了手动操作的时间和错误风险,并确保了每次更新都经过验证并可靠地发布。
总之,Jenkins是一个强大且灵活的工具,通过自动化执行构建、测试和部署等任务,提高了开发团队的效率和代码质量,同时降低了出错的可能性。
二、常见的部署Jenkins的方法
最常见的部署 Jenkins 的方法有以下几种:
独立安装:可以从 Jenkins 官网上下载适合你操作系统的安装包,然后按照官方文档的步骤进行安装。这种方式比较灵活,可以在本地服务器或云服务器上进行安装。
容器化部署:Jenkins 提供了官方的 Docker 镜像,可以通过 Docker 来运行 Jenkins。只需安装好 Docker 环境,在命令行中执行相应指令即可拉取镜像并运行 Jenkins 容器。
三、为什么选择容器化部署
容器化部署通常使用 Docker 镜像来实现。Docker 是一种流行的容器化平台,它提供了一种打包应用程序及其依赖项的方法,并将其封装在一个可移植和隔离的环境中,即容器。这个容器可以在任何支持 Docker 的主机上运行,而不需要额外的配置或依赖项。
在容器化部署 Jenkins 中,可以使用 Docker 镜像来创建一个独立的 Jenkins 容器,该容器包含了所有所需的软件、库和配置文件。这样就可以轻松地在各个环境中部署 Jenkins,保证环境一致性,并且能够快速进行部署和升级操作。
选择容器化部署 Jenkins 的好处主要有以下几点:
灵活性:容器化部署可以将 Jenkins 及其依赖项打包到一个独立的容器中,使其更加独立、可移植和易于管理。您可以轻松地在不同的环境中进行部署,例如开发环境、测试环境或生产环境。
隔离性:每个 Jenkins 容器都是相互隔离的,这意味着它们之间的运行不会相互干扰。这种隔离性能够提供更高的安全性和稳定性,确保一个容器中出现问题不会影响到其他容器。
快速部署和升级:由于容器镜像具备轻量级和可复制的特点,因此可以快速地进行部署和升级。只需创建新的容器实例,并替换旧版本即可完成升级过程,而无需手动配置。
环境一致性:通过容器化部署,您可以确保在不同的环境中(开发、测试、生产)运行的 Jenkins 实例是一致的。这有助于减少因环境差异引起的问题,并提供更可靠的构建和部署过程。
容器化部署能够提供更灵活、隔离和快速部署的 Jenkins 环境,更加便捷地管理和使用 Jenkins。
四、容器化部署Jenkins步骤
1、安装 Docker
首先,需要在目标服务器上安装 Docker。
安装步骤见:linux环境安装docker-CSDN博客
2、获取 Jenkins 镜像
从 Docker Hub 上获取 Jenkins 的官方镜像。可以使用以下命令拉取最新版本的 Jenkins 镜像:
docker pull jenkins/jenkins
3、创建并运行容器
创建一个基于 Jenkins 镜像的容器实例,并将其运行起来。
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /home/test:/var/jenkins_home --name my_jenkins jenkins/jenkins
这个命令是用来在 Docker 中运行 Jenkins 镜像,并将容器的端口映射到主机的 8080 和 50000 端口,同时将主机的 /home/test 目录挂载到容器内部的 /var/jenkins_home 目录。容器名称被指定为 my_jenkins。
解释每个选项的含义:
-d
:以后台模式运行容器。-u root
:以 root 用户身份运行容器。-p 8080:8080 -p 50000:50000
:将容器内部的 8080 和 50000 端口映射到主机上相同的端口。-v /home/test:/var/jenkins_home
:将主机上的 /home/test 目录挂载到容器内部的 /var/jenkins_home 目录。--name my_jenkins
:给容器设置一个名称为 my_jenkins。
通过运行该命令,您可以在本地访问 Jenkins Web UI,使用 localhost:8080 访问 Jenkins 主界面,并使用 Docker 容器中 /var/jenkins_home 存储数据。
注:为啥要进行主机目录挂载到容器
假设我们正在使用一个容器来运行 Jenkins 服务器,而在主机上,我们希望将 Jenkins 的数据目录存储在 /home/test
目录下。为了实现这一目的,我们可以将主机上的 /home/test
目录挂载到容器内部的 /var/jenkins_home
目录。
通俗地讲,挂载的作用是将主机上的某个目录与容器内部的某个目录建立连接,以实现数据共享和持久化。在这种情况下,我们选择将 Jenkins 数据目录挂载到主机上的 /home/test
目录,并映射到容器内部的 /var/jenkins_home
目录。
4、访问 Jenkins
在浏览器中访问 http://<服务器IP地址>:8080
来打开 Jenkins Web UI。按照提示完成初始化设置,获取管理员密码并创建管理员账号。
4.1 查看初始密码问题
直接cat 给出的路径 提示找不到文件
因为我们是在docker里部署的,所以需要进到容器中才能访问这个文件,使用如下命令进入容器
docker exec -it my_jenkins /bin/bash
这个命令是使用Docker来在正在运行的名为"my_jenkins"的Jenkins容器中执行一个交互式的bash终端会话。解释如下:
docker exec
: 用于在正在运行的容器中执行命令。-it
: 表示以交互式方式运行命令,并分配一个伪终端(TTY)。my_jenkins
: 指定要执行命令的容器名称或ID。/bin/bash
: 指定要在容器中执行的bash shell。
通过这个命令,您可以进入正在运行的Jenkins容器内部,以便进行一些特定操作或调试。这将打开一个与Jenkins容器关联的bash终端,允许您在容器内部进行命令行操作。
进入到容器内部后再查看初始密码,就可以正常查看到了
密码复制过来
5、配置 Jenkins
5.1 安装插件
点击安装推荐的插件即可,然后等待安装完成
5.2 创建管理员用户
一定牢记账号密码
5.3 实例配置
默认即可
这样就可以使用Jenkins了
五、简单使用Jenkins配置SSH远程操作服务器
进入Jenkins主页面
linux服务器上我们有一个shell文件,文件和内容如下:
我们通过Jenkins的构建任务的方式去执行这个文件
在Jenkins中进行构建时,需要首先SSH登录到一个远程服务器以执行必要的脚本,然后再执行构建。这时,需要安装SSH Plugin,并进行如下配置。
1、安装SSH Plugin
在Jenkins界面,系统管理->管理插件->安装SSH Plugin
说明,SSH Plugin的目的就是支持SSH到远程服务器,然后执行Shell命令。
可以先去已安装里搜索看有没有已经安装SSH Plugin,没有的话去未安装里去搜索安装
2、配置凭据
凭据管理中添加配置凭据
3、SSH相关配置
SSH remote hosts 配置SSH服务器站点,ip,账号,密码以及刚刚创建的凭证,保存
Hostname: SSH服务器的地址Port: 22Credentials:选择刚才添加的凭据
4、新建任务
输入任务名称,选择第一个自由风格的项目,确定
构建环境 选择 Execute shell script on remote host using ssh
SSH站点配置默认就是刚刚配置的凭证
然后填写执行前和执行后的Shell脚本
5、构建任务
点击立即构建
6、查看构建结果
点击查看构建历史,点击控制台输出,就可以看到执行结果 SUCCESS
与直接在linux服务器上执行结果一致
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。