一、安装
1、编写docker-compose部署Postgres、SonarQube、Jenkins的yml文件jenkins-compose.yml
- Postgres:作为SonarQube的数据库存储
- SonarQube:代码质量检查
- Jenkins:jenkins/jenkins:lts镜像,jenkinsci/blueocean镜像缺少node运行时环境,导致node无法运行。
关键配置说明( 宿主机 : Docker容器):
- /data/docker/ci/postgresql/data:/var/lib/postgresql/data # Postgres数据存储映射到宿主机目录
- /etc/localtime:/etc/localtime:ro # docker容器取宿主机的日期,:ro(read-only)表示只读,即docker容器只能读取宿主机的/etc/localtime文件,不能修改。
- /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 # 在docker容器中运行宿主机docker命令,如果宿主机没有这个文件,可以使用以下命令进行安装。
- 这里将Docker容器的内存设置为10G,因为我们NodeJS打包需要设置的内存为8G。
jenkins-compose.yml完整内容如下:
因并不是每个项目都需要自己的Maven私服,所以这里去除了Maven私服Nexus的部署,如果需要,直接在jenkins-compose.yml文件中添加即可:
在Jenkins的depends_on:添加。
2、创建宿主机挂载目录并赋权
3、在 jenkins-compose.yml 文件所在目录下执行安装启动命令
- 启动命令
- 停止命令
- 重新创建某一个容器命令
- 查看容器运行情况
- 查看某一容器的运行日志 docker logs -f 容器id
- 重启某一容器 docker restart 容器id
4、通过界面访问Jenkins,通过提示的路径找到初始密码并输入,然后进行下一步
5、选择安装推荐插件即可
6、插件安装中
7、部分插件安装失败,根据后台日志可知,部分插件因为jenkins版本太低,所以不能安装,这里先进行下一步,在系统中升级jenkins版本之后,再继续安装插件。(jenkins/jenkins:lts镜像里面集成的不是最新的jenkins,但在下载插件时,是下载的最新的插件,导致不兼容,所以无法下载)
报错日志:
二、配置
1、登录到Jenkins之后,首先进入系统管理然后升级Jenkins版本
2、然后安装所需插件,系统管理 > 插件管理
- Blue Ocean :Jenkins Pipeline设计的一个聚合工具,图形化Pipeline的流程,使流水线更加直观。
- SonarQube Scanner for Jenkins:代码质量扫描工具,Jenkins扫描代码后将结果发送到SonarQube Server。
- NodeJS Plugin :打包NodeJs项目时,需要的插件,用于运行NodeJs环境。
- Maven Integration plugin:Maven工程打包插件。
- Publish Over SSH:将打包后的文件,发送到远程服务器。
3、系统管理 > 系统配置
- Maven参数配置,此处根据自己服务器的配置情况配置。
- SonarQube servers配置,此处配置我们使用docker-compose部署的SonarQube,Server authentication token必填,这个在后续步骤会说明如何从SonarQube获取生成token。
- Publish over SSH配置,这里配置我们需要部署到的服务器,可以部署多个。点击下侧的“高级”,填写服务器密码和端口。
4、系统管理 > 全局工具配置,这里主要安装一些所需插件需要的软件环境,jenkins/jenkins:lts镜像默认装有openjdk和git,如果没有特殊要求,我们可以不安装,我们在这里安装SonarQube Scanner、Maven、NodeJS。
- SonarQube Scanner安装
- Maven安装,最好自己下载后上传到服务器,因为使用服务器下载安装很慢。
- Maven全局配置,配置Maven的配置文件
- 修改Maven全局配置中配置文件里面的jar包存储路径,否则不同任务构建都会重新下载jar包。
- NodeJS安装,选择自己所需要的版本,同时如果有其他工具包可以在下方填写,比如我们使用的是pnpm,使用的镜像源是https://registry.npm.taobao.org ,可以在下方填写: