docker部署,基于Nodejs项目的CI/CD(docker+gitlab+verdaccio+jenkins)

1 篇文章 0 订阅
1 篇文章 0 订阅

基于Nodejs项目的CI/CD(gitlab+verdaccio+jenkins)

CI/CD场景

所有软件都用docker部署,jenkins在测试服务器上,developer 上传分支代码提交合并,code-manager审核代码并同意合并到master分支,触发gitlab的webhook,代码推送到jenkins,开始自动构建image,并替换部署原container

jenkins搭建

由于jenkins本来就在测试服务器上,那我们就没必要传送打包文件到测试服务器上再替换容器,直接把测试服务器上docker的入口文件和执行文件挂载到jenkins的容器中,这样我们就可以直接在jenkins容器内对测试服务器上的docker环境进行操作。
注意
1、确保保证jenkins用户可以使用docker执行文件(粗暴的做法:chmod 777 /var/run/docker.sock)
2、有些环境挂载之后还需要拷贝一些必要的文件到容器中,才能保证docker命令能被识别(
docker cp libltdl.so.7 jenkins:/usr/lib/x86_64-linux-gnu
docker cp libltdl.so.7.3.1 jenkins:/usr/lib/x86_64-linux-gnu)

docker run -d --name jenkins \
-v jenkins_home:/var/jenkins_home \
-e JENKINS_OPTS="--httpPort=8083 --httpsPort=-1" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
--restart always \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock  \
-v /usr/bin/docker:/usr/bin/docker  \
jenkins/jenkins:lts

参数说明:
httpPort : 自定义端口,默认的8080端口,大概率会有冲突
httpsPort: 不使用ssl
Duser.timezone: 定义容器中的时区,默认的不是中国时区,这个不改后面job跑起来可能会导致报错

在浏览器输入 ip:8083,访问jenkins 的web ui,第一次进入的时候需要输入password,根据提示,直接到容器中cat出文件的内容,复制转贴过来即可。
在这里插入图片描述
下一步,进入插件安装界面,一般选择安装建议的插件
在这里插入图片描述
在这里插入图片描述
下一步设置第一个用户
在这里插入图片描述
最后点击完成,就可以进入到jenkins的dashboard
在这里插入图片描述

Jenkins配置

  1. 安装配置插件

    Jenkins丰富的功能都是通过插件去实现的,所以,我们接下来要配置jenkins的插件。Jenkins的插件有很多,针对于各种不同的项目与功能。我们是部署gitlab+nodejs的项目,而且是在本机部署就可以了(所以不需要ssh类插件),需要的插件有:gitlab、nodejs,在插件管理中下载插件(系统管理→插件管理),然后下载完之后需要重启生效。手动重启jenkins的方法是:jenkins’url/restart 。

    在这里插入图片描述
    接下来就要配置插件了。
    配置nodejs插件,在系统管理→全局工具配
    在这里插入图片描述
    这边需要注意的是,你这边配置好之后,只是会生成一个配置文件而已,node的环境并还没有安装,只有但有job启动的时候,第一次调用nodejs环境的时候,jenkins会把nodejs的安装包下载到jenkins_home目录下的tools目录下,然后系统会自动给你安装上nodejs环境。

  2. 配置凭据
    我们的代码仓库是gitlab,所以要配置gitlab的凭据,就是访问gitlab的账密(必须有管理员权限的,所以一般可以为gitlab建立一个jenkins的账户,专门用来打包构建),范围一般选择全局
    在这里插入图片描述

  3. 新建job
    在这里插入图片描述
    在这里插入图片描述
    配置gitlab项目地址,选择对于凭据
    在这里插入图片描述
    配置触发器,记住框出来的URL,这个需要填写到gitlab的webhook中(我的需求是只有master变更才触发构建,所以注意填写红框部分)
    在这里插入图片描述
    配置构建环境,我们的当然是NodeJS环境,这边就上面配置全局工具的NodeJS选项
    在这里插入图片描述
    最后就是在自定义构建了,我是直接执行shell,把我要构建的流程写下来。
    这边特别需要说的是,由于是需要上传到verdaccio,那就一定设置到npm 的登陆,这个时候你就需要安装一个npm-cli-adduser的插件来辅助你了,因为npm login 是需要你手动输入账密的,而npm-cli-adduser可以在你登陆的时候直接把信息传递过去。npm的包下载,直接在jenkins 容器里面install即可,当然你还需要配置好node、npm的PATH

在这里插入图片描述
这样,我的job就配置好了,下面就是去配置gitlab

gitlab webhook配置

填写之前jenkins中提供的URL,其实这个URL地址就是:$jenkins_url/project/$jobname
在这里插入图片描述

保存后可以测试你的webhook是否可以链接到jenkins对应的项目,触发构建。你可能测试的时候会遇到一些报错,这个直接百度错误代码就能找到解决方案,基本是涉及权限配置的一些问题
在这里插入图片描述

检查Jenkins构建

点击相应job,在Build History可以看到构建记录,点击构建记录,选择“Console Output” 可以查看追踪构建过程
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这样一个简单的CI/CD就完成了,有什么问题或者补充的欢迎提出,大家一起学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值