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

编程入门 行业动态 更新时间:2024-10-10 08:21:46

jenkins+<a href=https://www.elefans.com/category/jswz/34/1771431.html style=docker+node+nestjs 自动化部署"/>

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


本文章内容版本信息

  • 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

/

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  i# 安装全局pm2
RUN npm --registry  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 imagessudo docker ps -acontainerId=`sudo docker ps -a | grep -w $SERVICENAME  | awk '{print $1}'`if [ "$containerId" !=  "" ] ; then	sudo docker stop $containerIdsudo docker rm $containerIdecho "成功停止并删除容器 $containerId"
fiimageId=`sudo docker images | grep -w $SERVICENAME  | awk '{print $3}'`if [ "$imageId" !=  "" ] ; thensudo docker rmi $imageIdecho "成功删除镜像 $imageId"
ficd $SERVERDIRsudo rm -rf $SERVERDIR/$SERVICENAMEsudo git clone $GITREMOTEsudo chmod -R 777 $SERVICENAMEcd $SERVERDIR/$SERVICENAMEgit checkout $BRANCHsudo docker build -t $SERVICENAME .sudo docker run -d -p 3000:3000 --name=$SERVICENAME $SERVICENAMEnoneId=`sudo docker images -f "dangling=true" -q`if [ "$noneId" !=  "" ] ; then	sudo docker rmi --force `sudo docker images -f "dangling=true" -q`echo "成功删除空镜像"
fisudo docker imagessudo docker ps -a
构建结果

更多推荐

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

本文发布于:2024-03-23 21:23:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742985.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:docker   jenkins   nestjs   node

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!