Docker快速部署Jenkins并创建流水线

本文介绍如何使用Docker快速部署一个Jenkins服务,以及如何使用Jenkins创建一个CI&CD流水线,附一些踩坑提示

下载镜像

打开终端,输入指令docker search jenkins可以看到docker hub上可用的镜像

image

jenkins官方推荐使用jenkinsci/blueocean镜像,但在使用过程中发现这个镜像是基于alpine构建的,jenkins本地打包过程中出现过很多问题,所以这里推荐使用jenkins/jenkins:lts版本的镜像,这个版本的镜像是基于debian构建的

输入指令docker pull jenkins/jenkins:lts下载镜像

image

如果使用的是podman,则输入指令podman pull docker.io/jenkins/jenkins:lts下载镜像

输入指令docker images查看本地镜像,看到镜像已下载到本地

image

运行容器

输入以下指令运行容器

docker run -d -u root --name jenkins -p 8080:8080 -p 50000:50000 -v /root/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
  • -d 后台运行容器
  • -u 以root用户运行容器
  • --name 容器名称
  • -p 端口映射,宿主机端口:容器端口
  • -v 目录映射,宿主机目录:容器目录,容器中jenkins工作目录和宿主机中的目录保持同步,方便查看,方便备份

这里如果不以root用户运行容器,会遇到映射在宿主机上文件夹权限的问题,需要修改文件夹权限,这里以root用户运行容器,一劳永逸

输入指令docker ps可以查看正在运行的容器

image

启动后也可以更新部分配置,示例:

docker update —restart always jenkins
docker update —restart no jenkins

—restart在没有守护进程的podman不适用

关于停止容器和重启容器

docker stop jenkins # 停止容器
docker start jenkins # 启动容器
docker restart jenkins # 重启容器
docker ps -a # 查看本地所有容器(包括停止运行的容器)
docker rm jenkins # 删除容器

配置Jenkins

访问jenkins的Web界面,ip就是宿主机的ip,端口号就是jenkins容器映射到宿主机上面的端口号,接下来开始解锁jenkins

image

在对应位置找到initialAdminPassword填入并继续

image

管理员的初始密码在/var/jenkins_home/secrets/initialAdminPassword文件中,输入指令进入容器docker exec -it jenkins bash,然后输入指令查看密码cat /var/jenkins_home/secrets/initialAdminPassword,如果已经将jenkins_home目录映射到本地,就可以不用进入容器中查找,

安装插件,这里我们点击安装推荐的插件并继续

image

创建管理员用户并继续

image

看一下自动生成的Jenkins访问地址有没有错,没有问题保存并完成就可以了

image

到这里就完成了Jenkins的初始化配置

image

创建流水线

新建任务的时候,我们可以选择构建一个自由风格的软件项目,或者创建一个流水线任务。前者需要在jenkins上面配置流程和代码,后者通过Jenkinsfile文件来配置,使用体验下来个人觉得后者的Pipline风格更优雅一些。具体Pipline语法请参考官网或者个人项目

以GitHub项目为例,首先新建流水线,输入项目名称并继续

然后勾选GitHub项目,输入项目url,构建触发器中选择GitHub hook trigger for GITScm polling

image

GitHub hook trigger for GITScm polling表示每次提交代码的时候都会触发构建任务,这里我们需要GitHub项目的设置中添加Webhooks

image

接下来流水线的定义选择Pipline script from SCM,表示从源码管理中获取我的流水线,然后SCM选择Git,Repository URL输入Git仓库,然后添加git凭据(这里选择使用ssh拉取代码,因为使用https出现过各种失败),这里如何添加凭据就不详细讲了哈

image

如果凭据不正确则会报错

image

接下来指定分支,脚本路径默认是Jenkinsfile,然后就可以保存了,流水线的配置至此完成

image

自动化构建和部署

运行本次演示的项目还需要额外安装几个插件

  • Blue Ocean
  • SSH Pipline Steps
  • NodeJS

安装好插件后重启一下Jenkins,在全局工具配置中安装NodeJS

image

别名和Jenkinsfile中tools引用的别名要保持一致

image

由于本项目是远程部署,用到了SSH Pipline Steps,所以还需要在凭据中添加登录远程服务器的账号和密码(为了防止明文密码在Jenkinsfile中出现)

image

注意凭据id和Jenkinsfile中的凭据id要保持一致

image

另外需要注意的是Jenkins节点名称要和Jenkinsfile中保持一致,本项目以master节点为例

image

image

这样一个基本的CI&CD流水线就完成了

image

posted @ 2022-06-24 18:07  chdxia  阅读(1312)  评论(0)    收藏  举报