jenkins+docker+node+nestjs 自动化部署

4 篇文章 0 订阅
2 篇文章 0 订阅

在这里插入图片描述
本文章内容版本信息

  • jenkins: 2.289.3
  • java: 1.8
  • node: 12
  • node框架: nestjs 7.4
  • npm: 6
  • 系统: ubuntu18
  • 版本管理工具: gitee
  • docker: 20.10.8
  • pm2: 5.1.0

Jenkins

https://www.jenkins.io/

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

安装Java8

下载链接

## 解压缩
tar -zxvf jdk1.8.tar.gz
### 配置环境变量
sudo vim /etc/profile
### 将以下配置加入
export JAVA_HOME=jdk目录
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
### 生效环境变量
source /etc/profile

安装Docker

传送门

编写Dockerfile
# 获取node镜像
FROM node:12

# 创建工作目录
RUN mkdir app

# 设置工作目录
WORKDIR /app

# 拷贝目录
COPY . /app

# 镜像的维护者
MAINTAINER zhangzw

# 安装npm包
RUN npm --registry https://registry.npm.taobao.org i

# 安装全局pm2
RUN npm --registry https://registry.npm.taobao.org i -g pm2

# 编译
RUN npm run build

# 容器端口
EXPOSE 3000

# 启动命令
CMD ["pm2-runtime", "start", "dist/src/main.js", "-i", "2"]

安装jenkins

传送门

在这里我选择ubuntu系统的安装包

在这里插入图片描述
按照官方给的教程进行安装
在这里插入图片描述

Jenkins命令

在这里插入图片描述

启动Jenkins后
  1. 按照首页提示 找到服务器上的jenkins密钥 输入 下一步
  2. 直接选择官方推荐插件
  3. 等待安装完毕
  4. 进入页面
安装插件

在这里插入图片描述

  1. gitee
  2. nodejs
Jenkins配置
  • 系统配置

1.设置jenkins主目录
2. 设置jenkins访问的url
3. gitee配置域名和访问的账号密码

创建和配置任务

在这里插入图片描述
在这里插入图片描述

选择参数化构建项目

在这里插入图片描述

配置参数 选择文本类型

其中${BUILD_ID}是jenkins全局变量 在这里我们当作镜像id和容器名称进行运行

  • GITREMOTE git仓储
  • BRANCH 分支
  • SERVERDIR 服务文件夹路径
  • SERVICENAME 服务名称
  • BUILDID ${BUILD_ID}
配置webhook

什么是webhooks?

在gitee仓储>管理>WebHooks

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编写构建脚本
sudo su -

sudo docker images

sudo docker ps -a

containerId=`sudo docker ps -a | grep -w $SERVICENAME  | awk '{print $1}'`

if [ "$containerId" !=  "" ] ; then	
	sudo docker stop $containerId
    sudo docker rm $containerId
	echo "成功停止并删除容器 $containerId"
fi

imageId=`sudo docker images | grep -w $SERVICENAME  | awk '{print $3}'`

if [ "$imageId" !=  "" ] ; then
	sudo docker rmi $imageId
	echo "成功删除镜像 $imageId"
fi

cd $SERVERDIR

sudo rm -rf $SERVERDIR/$SERVICENAME

sudo git clone $GITREMOTE

sudo chmod -R 777 $SERVICENAME

cd $SERVERDIR/$SERVICENAME

git checkout $BRANCH

sudo docker build -t $SERVICENAME .

sudo docker run -d -p 3000:3000 --name=$SERVICENAME $SERVICENAME

noneId=`sudo docker images -f "dangling=true" -q`

if [ "$noneId" !=  "" ] ; then	
	sudo docker rmi --force `sudo docker images -f "dangling=true" -q`
	echo "成功删除空镜像"
fi

sudo docker images

sudo docker ps -a

构建结果

在这里插入图片描述

  • 8
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Jenkins是一个持续集成工具,用于自动化构建、测试和部署软件。Docker是一个开源的容器化平台,可以帮助开发人员打包应用程序和其依赖项成为一个容器。Harbor是一个企业级的Docker镜像注册表,可以帮助组织管理和存储Docker镜像。 在自动化部署流程中,Jenkins可以与Docker和Harbor结合使用,实现自动化构建、打包和部署应用程序的流程。具体步骤如下: 首先,开发人员在代码仓库中提交新的代码。Jenkins会定期检测代码仓库的变化,一旦检测到新的代码提交,Jenkins就会触发自动化构建流程。 在构建过程中,Jenkins会使用Docker来创建应用程序的镜像,将应用程序和其依赖项打包成一个可移植的容器。然后,Jenkins会将构建的镜像推送到Harbor中进行存储与管理。 接下来,Jenkins会触发自动化部署流程。在部署过程中,Jenkins会从Harbor中拉取最新的镜像,并将其部署到目标环境中。这可以是测试环境、预发布环境或生产环境,具体取决于组织的部署策略。 在部署完成后,Jenkins可以执行自动化测试流程,验证应用程序在目标环境中的运行情况。如果测试通过,部署流程就会顺利完成。如果测试失败,Jenkins会通知相关人员,并触发回滚流程。 通过整合JenkinsDocker和Harbor,可以实现一个端到端的自动化部署流程,帮助组织提高软件交付的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值