jenkins中部署nodejs应用 jenkins node版本_devops


本文章内容版本信息

  • 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中部署nodejs应用 jenkins node版本_ubuntu_02


按照官方给的教程进行安装

jenkins中部署nodejs应用 jenkins node版本_devops_03

Jenkins命令

jenkins中部署nodejs应用 jenkins node版本_linux_04

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

jenkins中部署nodejs应用 jenkins node版本_ubuntu_05

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

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

创建和配置任务

jenkins中部署nodejs应用 jenkins node版本_ubuntu_06


jenkins中部署nodejs应用 jenkins node版本_ubuntu_07

选择参数化构建项目

jenkins中部署nodejs应用 jenkins node版本_jenkins中部署nodejs应用_08

配置参数 选择文本类型

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

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

什么是webhooks?

在gitee仓储>管理>WebHooks

jenkins中部署nodejs应用 jenkins node版本_jenkins中部署nodejs应用_09


jenkins中部署nodejs应用 jenkins node版本_linux_10


jenkins中部署nodejs应用 jenkins node版本_devops_11


jenkins中部署nodejs应用 jenkins node版本_ubuntu_12

编写构建脚本
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
构建结果

jenkins中部署nodejs应用 jenkins node版本_jenkins中部署nodejs应用_13