Jenkins

安装方式为Docker或war包。

Publish Over SSH 插件下架后,Docker部署加ssh远程执行目前没找到合适的替代方案。

我选择的方案为:jenkins和应用服务器安装在同一台机器上,jenkins以war包部署,构建完项目后执行shell脚本运行项目。

war包安装

Jenkins官网下载地址

两种运行方式

  1. 打开终端命令行,找到war所在的路径运行 java -jar jenkins.war --httpPort=9080
  2. 将war包拷贝到Apache Tomcat的webapps文件下,运行bin目录下的startup.sh

Docker安装

最新版

docker pull jenkins/jenkins:lts

查看Jenkins镜像

docker images

安装启动Jenkins容器

-v 宿主机目录:docker内目录  

docker run -d -p 9988:8080 -p 50000:50000 \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/mv:/usr/bin/mv \
-v /asoft/java/jdk1.8.0_161:/asoft/java/jdk1.8.0_161 \
-v /asoft/maven/apache-maven-3.8.4:/asoft/maven/apache-maven-3.8.4 \
-v /asoft/maven/mvn_repository:/asoft/maven/mvn_repository \
-v jenkins:/export/service/jenkins_home \
-v /etc/localtime:/etc/localtime \
--name jenkins jenkins/jenkins:lts #参数简介
-v /usr/bin/docker:/usr/bin/docker 有了这个配置在docker容器内部可以使用docker命令
-v /usr/bin/mv:/usr/bin/mv 有了这个配置在docker容器内部可以使用mv命令
-v /usr/java/jdk1.8.0_131/bin/java:/usr/java/jdk1.8.0_131/bin/java,这个配置可以再在docker容器内部使用java命令(直接使用宿主机的java)
-v /usr/java/jdk1.8.0_131:/usr/java/jdk1.8.0_131 这个配置会在docker容器创建/usr/java/jdk1.8.0_131目录,并映射到宿主机的java_home目录
-v /export/service/apache-maven-3.3.9:/export/service/apache-maven-3.3.9这个配置会在docker容器创建/export/service/apache-maven-3.3.9目录,并映射到宿主机的maven_home目录
/export/service/repository:/export/service/repository这个配置会在docker容器创建/export/service/repository目录,并映射到宿主机的/export/service/repository目录
-v /etc/localtime:/etc/localtime 使用宿主机的时间(宿主机和容器时间同步)
-d 后台运行镜像
-p 9988:8080 将镜像的8080端口映射到服务器的9988端口
-p 50000:50000 将镜像的50000端口映射到服务器的50000端口
--name jenkins 给容器起一个别名 为什么要挂载(映射)目录:docker通过镜像创建并启动容器,一个容器就是一个独立隔离的沙箱,所以并不能识别服务器上的环境配置,需要我们在启动容器时通过-v参数命令将服务器目录挂载到docker容器指定目录!拿jenkins举例来说,如果你是用docker运行的jenkins,那么是不识别你服务器上配置的jdk环境和maven环境的,你在jenkins里系统配置中去填写你服务器上的jdk目录和maven目录以及配置文件目录,后面项目构建是肯定会报错不识别的。jenkins所在的容器是docker某个具体容器,它只能识别出这个容器里的东东,容器自己有一套独立完整的目录,可以通过命令 docker exec -it containerID /bin/bash 进入指定的容器id查看(containerID换成你的docker容器id)。 #如果目录挂载完成,启动了容器,又想修改挂载怎么办?
参考:https://blog.csdn.net/zedelei/article/details/90208183

查看Jenkins启动情况

docker ps | grep jenkins

配置 Jenkins

注意:因为我们是docker版的jenkins,所以这个路径不是服务器的路径,而是容器内的路径。我们可以通过如下命令从容器中获取到初始化密码。

docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

在页面输入密码,点击Continue,进入插件安装页面。安装推荐插件就好。

安装插件

gitee或svn

maven

nodejs

创建task

  1. General选择丢弃旧的构建或根据实际情况自行选择
  2. 源码管理选择svn或git,输入地址,选择/创建Credentials,使用版本管理工具的用户和密码
  3. 构建触发器根据实际情况自行选择,远程构建等
  4. Build -> Root POM -> pom.xml
  5. Build -> clean install -> clean install
  6. Post Step参考以下脚本

后台启动脚本

jenkins execute shell

#jenkins执行完脚本后,会kill掉进程,导致项目启动又被kill,在脚本前添加`BUILD_ID=dontKillMe`
BUILD_ID=dontKillMe
/asoft/springboottest/shfile/downloadjar.sh #或直接再此运行脚本内的脚本,需要加上set +e以忽略 Shell 步骤中的故障

在本机位置新建.sh脚本

#!/bin/bash  

#获得当前的时间
ctime=$(date +%Y%m%d%H%M%S) #确保/backup目录存在
mkdir -p /asoft/springboottest/backup #备份/var/log目录
cp /asoft/springboottest/download-1.0-SNAPSHOT.jar /asoft/springboottest/backup/${ctime}_download-1.0-SNAPSHOT.jar #删除7天前的备份文件
find /asoft/springboottest/backup -mtime +7 -type f -name "*.jar" -exec rm -rf {} \; # kill目标进程
ps -aux | grep download-1.0-SNAPSHOT.jar | awk '{print $2}' | xargs kill rm -rf /asoft/springboottest/download-1.0-SNAPSHOT.jar #把构建后的文件copy至目标
cp /root/.jenkins/workspace/task001/target/download-1.0-SNAPSHOT.jar /asoft/springboottest/download-1.0-SNAPSHOT.jar #启动jar
nohup java -jar /asoft/springboottest/download-1.0-SNAPSHOT.jar > /asoft/springboottest/download-log.file 2>&1 &

前台启动脚本

直接写在jenkins任务的execute shell 里即可

# 进入Jenkins工作空间下hxkj项目目录
cd /root/.jenkins/workspace/test003 npm -v # 下面的命令只需要执行一次,后续可以删除
##
# npm切换为淘宝源
npm config set registry http://registry.npm.taobao.org/ #安装依赖
npm install # 打包
npm run build #获得当前的时间
ctime=$(date +%Y%m%d%H%M%S) #备份
cp -r /usr/share/nginx/html /usr/share/nginx/back/${ctime}_html # 删除html,复制到相应路径
rm -rf /usr/share/nginx/html
cp -r /root/.jenkins/workspace/test003/dist/ /usr/share/nginx/html # 删除html,复制到相应路径
rm -rf /usr/share/nginx/html
cp -r /root/.jenkins/workspace/test003/dist/ /usr/share/nginx/html

扩展 scp 上传文件命令

#scp 上传命令
scp cd /var/jenkins_home/workspace/task001/target/download-1.0-SNAPSHOT.jar root@192.168.48.130:/asoft/springboottest

安装Jenkins,并部署vue前端,java后台的更多相关文章

  1. jenkins 自动化部署vue前端+java后端项目 进阶一

    今天又不想写了,那么我来将我参考的文章直接分享给大家好了,大家也可以直接进行参考: 这里以centos7为例搭建自动化部署项目: 1.搭建部署前端服务代理nginx: 借鉴于:https://blog ...

  2. 基于vue+springboot+docker网站搭建【五】部署vue前端项目

    部署vue前端项目  一.下载项目到本地   https://github.com/macrozheng/mall-admin-web 二.npm install 三.修改api配置,改为你接下来要部 ...

  3. vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发

    vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...

  4. CentOS下安装Jenkins(Docker/war/tomcat/java -jar)

    参考官方提供的安装教程:https://jenkins.io/doc/book/installing/,可以发现官方推荐使用Docker进行安装.虽然用Docker有很多好处,但也有缺点. 下面是各种 ...

  5. CentOS7安装Jenkins自动化部署maven项目

    前言: 最近要弄一个jenkins工具,已经安装好了并且jenkins使用部署项目的流程已经基本走通,上图: 话不多说,开始 第一步:安装jenkins: [ 准备环境: 在centOS7环境上:安装 ...

  6. docker安装jenkins自动化部署

    Docker之Jenkins自动化部署 1.拉取jenkins镜像images(类比:java中的类) docker pull jenkinsci/jenkins:lts 或 docker pull ...

  7. Linux安装Jenkins并部署springboot项目

    安装步骤: 1.跳转连接https://pkg.jenkins.io/redhat-stable/下载安装包 2.安装命令: sudo rpm -ih jenkins-2.73.2-1.1.noarc ...

  8. Mac上安装Jenkins持续部署初体验

    1.首先去官网下载安装包 https://jenkins.io/doc/book/installing/ 安装完成后,很不幸,无法访问他的默认站点 查了一堆资料,有的说环境变量没有配置,有的说没有执行 ...

  9. an安装jenkins时遇到ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin的问题

    # sudo /etc/init.d/jenkins restartERROR: No Java executable found in current PATH: /bin:/usr/bin:/sb ...

  10. docker部署vue前端

    1.下载安装nginx image docker pull nginx:latest 2.准备将编译后的代码上传到主机上 3.编写dockerfile, nginx conf,并创建镜像 Docker ...

随机推荐

  1. 深度解读GaussDB逻辑解码技术原理

    本文分享自华为云社区<[GaussTech技术专栏]GaussDB逻辑解码技术原理>,作者:GaussDB 数据库. 1.背景 随着国内各大行业数字化改造步伐的加快,异构数据库数据同步的需 ...

  2. Java EasyExcel 导出报内存溢出如何解决

    大家好,我是 V 哥.使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时.你有遇到过这种情况吗,以下是V 哥整理的解决该问题的一些常见方法,分享给大家,欢迎一起讨论 ...

  3. Flink window

    窗口计算 我们经常需要在一个时间窗口维度上对数据进行聚合,窗口是流处理应用中经常需要解决的问题.Flink的窗口算子为我们提供了方便易用的API,我们可以将数据流切分成一个个窗口,对窗口内的数据进行处 ...

  4. 3.19 Linux命令的执行过程是怎样的?(新手必读)

    前面讲过,在 Linux 系统中"一切皆文件",Linux 命令也不例外.那么,当编辑完成 Linux 命令并回车后,系统底层到底发生了什么事情呢? 简单来说,Linux 命令的执 ...

  5. c++设计模式:设计原则

    c++设计八大原则(降低改变带来的代码修改) 一.依赖倒置原则(DIP) 1.高层模块(稳定)不应该依赖于低层模块(变化),二者应该依赖于抽象(更稳定) <高层模块 包括 低层模块所依赖的抽象, ...

  6. .NET 9使用Scalar替代Swagger

    背景 .NET 9刚刚正式发布了,如果你创建一个空的Asp.Net Core 9.0的Web API项目,启动之后,你会惊讶地发现陪伴你多年的Swagger没有了!--这是因为ASP.NET Core ...

  7. ibatis源码分析

    背景:调试模式下,单步运行一个查询订单协议操作,记录了ibatis框架的执行动作,侧面剖析其原理. 一.简介: 1. dal 层的dao接口实现类通常会继承SqlMapClientDaoSupport ...

  8. vue2-路由Router

    ​ Vue 中的路由用于实现单页应用(SPA)中的页面导航.它允许你在不刷新整个页面的情况下,根据不同的 URL 路径显示不同的组件,提供了类似于多页面应用的用户体验.例如,在一个电商应用中,可以通过 ...

  9. Limit线段树题单题解(更新中)

    P3373 线段树模板 2 \(1 \leq n \leq 10^5\) 题解:考查标记与标记的合并 我们考虑打两个懒惰标记实现区间乘和区间加 线段树维护区间和 对于信息与信息的合并:左儿子加上右儿子 ...

  10. 使用LOGSTASH 将数据导入到ES

    logstash 执行过程 input -->filter -->output filter 可以对数据进行处理 输出插件 codec plugin 使用脚本将数据导入到ES input ...