上一篇博客中我们讲到了如何使用 jenkins 去同步代码,但是这是有局限性的,我们自己可以玩儿一玩儿,但是是无法用在实际工作中。大家都知道,在工作中开发的时候一般不只有一个环境,一般是有三个环境(开发、测试、生产),如果把三个环境分成三个任务去部署就显得很多余,重复了很多操作,现在我们就可以使用多环境部署去解决这个问题,我们这里用了两个服务器,服务器可以是多个的。这一次我从部署jenkins开始(默认已经安装docker了)。
一、安装jenkins、启动jenkins
docker search jenkins //查看jenkins版本
docker pull jenkins/jenkins:latest //选择这个版本的jenkins安装
安装成功后使用 docker images 查看,出现下图即成功
启动jenkins:(一定要记得开放端口)
docker run -d -uroot -p 8080:8080 -p 50000:50000 --privileged=true --restart=always --name jenkins -v /var/jenkins_mount:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --user="root" jenkins/jenkins:latest
--name jenkins
:为容器指定一个名称-d
:以守护进程模式运行容器,即容器会在后台运行,不会自动退出-u root
:以root用户运行容器-p 8080:8080
:将容器内的端口8080映射到宿主机的端口8080,这样可以在浏览器中访问Jenkins的Web界面。-p 50000:50000
:将容器内的端口50000映射到宿主机的端口50000,这是Jenkins与Docker交互的端口。--privileged=true
:给予容器特权,即允许容器访问所有网络和文件系统。--restart=always
:容器总是重启,即使它终止 normally-v /var/jenkins_mount:/var/jenkins_home
:将宿主机的/var/jenkins_mount
目录映射到容器内的/var/jenkins_home
目录,用于存储Jenkins的数据。/var/run/docker.sock:/var/run/docker.sock
:将宿主机的/var/run/docker.sock
文件映射到容器内的/var/run/docker.sock
文件,以便Jenkins可以与Docker交互。-v /usr/bin/docker:/usr/bin/docker
:将宿主机的/usr/bin/docker
文件映射到容器内的/usr/bin/docker
文件,以便Jenkins可以使用Docker命令。jenkins/jenkins:latest
:使用Jenkins的官方Docker镜像,版本为latest。
执行完成后还需要授权一下 :
chown -R 1000:1000 /var/run/docker.sock
请记住,标红的指令很重要,这些决定了 jenkins 能否执行 docker 指令。
二、安装插件、配置
初始化步骤跳过,选择安装系统推荐的插件,剩下的插件进入后安装
需要手动安装的插件:
- SSH server
- Publish Over SSH
- NodeJS Plugin
- Gitee Plugin(因为我这里用的是gitee,其他平台请自行下载对应插件,步骤都是一样的)
配置SSH :系统管理 ——> 全局系统配置 ——> SSH (...此处省略1w字,详情请看Jenkins配置远程服务器SSH Server流程)(对了在填写 Remote Directory 的时候不要写"/" ,要写 "." 要不然在构建的时候连接不上第二台服务器)
配置 node:系统管理 ——> 全局工具配置 ——> NodeJS 安装
选一个版本安装,我安装的是 18.17
三、新建任务
选择第一个
描述随便写写
选择参数化构建过程(选 选项参数)
源码管理选git
分支选择看你们想构建的是哪一个分支就填那个
构建触发器 选定时构建(每天的 0、9、12、18点自动构建)
构建环境选择你配置好的node(如果不选择的话,在执行脚本的时候是没有node和npm的)
Build Steps 选择
执行shell
Send files or execute commands over SSH(将打包好的文件通过ssh发向指定服务器)
node -v
npm -v
docker -v
docker run --rm -v /var/jenkins_mount/workspace/multi-environment/:/home/frontend/ -w /home/frontend/ node:18.17 sh -c "npm config set registry https://registry.npmmirror.com && npm install && npm run build"
这里的 multi-environment 就是你创建的任务的名称。
这是开发环境的,下面是测试环境的配置(只有一点小改动)
然后点击高级选择
最后应用保存,准备构建
四、构建
构建成功
我只构建了两个环境(开发,测试)
如果想构建生产环境且生产环境在另一台服务器上(jenkins所在服务器1,开发、测试环境所在服务器2,生产环境所在服务器3)所需步骤和上面是一样的操作。