序言:

在软件开发过程中,我们通常需要使用多个环境来进行开发、测试、预发布和生产。而软件部署时,如果采用纯人工的方式逐个通过jar的方式进行部署,会出现以下问题:服务器过多容易出错;修改配置可能存在未修改到位的情况;服务器部署权限一般只有开发服务器人员才有权限,涉及到服务器的安全。为了解决这些问题,我们可以借助持续构建工具Jenkins来实现自动化部署。本文将介绍如何使用Jenkins进行软件安装和配置。

一、软件安装

在使用Jenkins之前,我们需要先安装一些必要的软件,例如JDK。可以通过以下命令查看是否已经安装了Java:

```bash

rpm -qa | grep java

```

如果已经安装了Java,可以通过以下命令卸载:

```bash

rpm -qa | grep java | xargs rpm -e --nodeps

```

如果没有安装Java,可以通过以下命令安装JDK 1.8:

```bash

sudo yum install java-11-openjdk -y

sudo yum install java-1.8.0-openjdk* -y

```

接下来我们可以通过以下命令查看JDK的版本:

```bash

java -version

```

最后我们可以通过以下命令查看JDK的配置信息:

```bash

alternatives --config java

```

需要注意的是,新手不建议使用这种方式来配置环境变量,建议自己手动配置环境变量。

请根据提供的内容完成内容重构,并保持段落结构:

1. 切换到maven目录下的conf文件夹,打开文件vim settings.xml。

2. 配置本地卡路径:`/root/project/maven-local`。

3. 配置阿里云镜像:

```xml

alimaven

central

aliyun maven

http://maven.aliyun.com/nexus/content/repositories/central/

```

将以上内容放入到mirrors标签里面。

4. 安装git,用于jenkins拉取代码。执行以下命令:

```bash

yum install git git --version

```

5. 安装jenkins,使用离线安装。首先下载jenkins,选择一个较新的版本。由于之前的版本有漏洞,所以升级了一下版本。这里提供了两个地址,可以根据实际情况选择一个访问正常的地址进行下载。

```bash

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.401.1/jenkins.war

wget https://mirrors.aliyun.com/jenkins/war-stable/2.332.3/jenkins.war

```

6. 启动jenkins,指定端口号为9090。执行以下命令:

```bash

nohup java -jar /usr/local/jenkins/jenkins.war --httpPort=9090 > /var/log/jenkins.log 2>&1 &

```

7. 开通防火墙9090端口。执行以下命令:

```bash

firewall-cmd --zone=public --add-port=9090/tcp --permanent

```

8. 更新防火墙配置。执行以下命令:

```bash

firewall-cmd --reload

```

在上图中放置密码,下载插件大约需要40分钟。安装新版本后,您需要安装gitee、maven、ssh等插件。在安装过程中,请记得勾选jenkins重启。这是一个已安装列表,其中aviable表示安装成功。

### Maven Integration plugin ###

### SSH version Publish Over SSH ###

### Deploy to container Plugin ###

在这里安装插件时,请确保勾选了Jenkins重启。以下是一些关键配置:

1. 使用maven_home设置maven的安装路径。

2. 创建项目时,请确保名字以实际项目名为准。

3. 在构建保存天数处填写代码构建版本保留的天数。

4. 构建最大个数为3,即构建的历史记录最大为多少,如下图所示。

5. 在配置gitee时,输入gitee地址,并指定分支dev(可以根据实际情况更改)。

6. 在Credentials中输入对应的用户名。

7. 生成gitee WebHook,具体操作方法如下:找到gitee的项目路径,点击管理,找到webHook密码并复制到下面的空白处。

8. 使用maven打包时,执行以下命令:clean package -U -Dmaven.test.skip=true。在maven版本文件中,您可以随意填写任何内容。

9. 执行shell命令echo hello来检查是否打包成功。如果显示success,说明打包成功。

10. 在/root/.jenkins/workspace/test/target路径下可以看到生成的jar包。至此,万里长征已经完成,只需将生成的jar包发送到远程服务器进行备份和启动即可。

连接远程服务器并重启服务(远程服务器指jenkins):首先远程连接服务器,然后将打包的应用发布到相应的服务器(测试或生产环境)。如果远程服务器和部署服务器不在同一个服务器上,您需要生成ssh秘钥。执行以下命令:

```bash

ssh-keygen -t rsa -C "xxx@163.com"

```

按照提示继续操作。注意将xxx@163.com替换为您的实际邮箱地址。最后,将生成的秘钥复制下来,去掉第一行和最后一行后进行复制。接下来,配置ssh:进入系统设置 -> 系统配置 -> 一直向下拉 -> 将远程服务器的私钥粘贴到这里。

请根据提供的内容完成内容重构,并保持段落结构:

```

name: 随便输入

Hostname: 服务器的ip

Username: 服务器的账号

Remote Directory: ssh的根目录(操作命令,都是基于该目录来的)

点击test,返回success说明ssh免登录成功

项目配置ssh

点击项目,修改ssh配置

source file: 是jenkins的jar位置

Remove prefix: 是去掉前缀

Remote Direcotory: 这里写的/,表示以配置的ssh根目录为准,之前社长配置的是/root/downlod

exec command: 是重启脚本,这里暂时只打印echo hello这一句话

到这里gitee上的代码,已通过jenkins下载到jenkins的workspaces上编程成一个jar(maven打包)

通过ssh,把对应jar,传输到远程服务器上

编写重启的脚本(1 kill进程,把之前的文件备份,再把该文件移动过来,再java -jar启动)

脚本:

vim test.sh

编写test脚本

```

以下是重构后的脚本内容:

```bash

#!/bin/sh

# 这里可替换为你自己的执行程序,其他代码无需更改

APP_NAME=iopace.jar

SSH_PATH=/root/download

PROJECT_PATH=/root/download/bak

echo " ==备份项目,并移动项目---"

# 备份jar按bak存放

cp -R $PROJECT_PATH/$APP_NAME $PROJECT_PATH/"$APP_NAME".bak

rm -rf $PROJECT_PATH/$APP_NAME

cp -R $SSH_PATH/$APP_NAME $PROJECT_PATH/$APP_NAME

echo " =====关闭Java应用======"

PROCESS=`ps -ef |grep $APP_NAME |grep -v grep|grep hg-learn.jar|awk '{print $2}'`

for i in $PROCESS do

echo "Kill the $1 process [ $i ]"

kill -9 $i

done

echo " =====启动Java应用======"

nohup java -jar \n -Xdebug \n -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9091 \n -Duser.timezone=GMT+08 \n $PROJECT_PATH/$APP_NAME \n --spring.profiles.active=dev \n -Xdebug > /dev/null 2>&1 &

chmod +x test.sh

```

在Jenkins服务器上操作Vue项目打包,首先需要安装Node.js。可以通过以下步骤进行安装:

1. 下载Node.js安装包:

```bash

wget https://nodejs.org/dist/v16.6.0/node-v16.6.0-linux-x64.tar.gz

```

2. 解压安装包:

```bash

tar zxvf node-v16.6.0-linux-x64.tar.gz

```

3. 改名并赋权:

```bash

mv node-v16.6.0-linux-x64 node16

chmod 777 node16

```

接下来,需要配置环境变量。打开`/etc/profile`文件,添加以下内容:

```bash

export NODE_HOME=/usr/local/software/nodeJs/node16

export PATH=$NODE_HOME/bin:$PATH

source /etc/profile

```

验证Node.js和npm是否安装成功:

```bash

node -v

npm -v

```

为了加速Node.js的下载速度,可以使用国内镜像源。例如,使用阿里云镜像源,可以执行以下命令:

```bash

npm install -g cnpm --registry=https://registry.npmmirror.com #校验是否成功 cnpm -v

```

然后,安装NodeJS插件,配置NodeJS环境变量,创建Vue项目,构建的版本保留2天,最多存在3个构建版本。输入项目的git地址,指定分支master可以动态修改成其他的分支。

请根据以下步骤操作:

1. 点击生成webHook密码,记住框起来的两个地址,需要在gitee上配置。

2. 填入上面记住的两个信息。

3. 点击测试,没有报错,说明连接成功。

4. 添加nodeJS信息。如果nodeJS配置没有问题,下拉可以选择到我们配置好的nodeJS环境变量。

5. 设置shell脚本:

```bash

echo $PATH node -v npm -v source /etc/profile ###--legacy-peer-deps npm install ###测试环境 npm run build:stage # 删除dist压缩包 rm -rf ./dist.tar.gz; # 压缩dist文件 tar -zcvf dist.tar.gz ./dist

```

6. 打印当前地址,输入node的版本信息。

7. `npm run build --dev`,dev就是前端的不同环境的名称,可以动态切换。实际上就是在jenkins的工作目录下生成一个dist的文件夹。

8. 到这里我们已经实现把前台项目编译成文件夹运行咯。在实际部署过程中,可能存在jenkins和前台不是一台服务器的情况,所以我们还需要多操作一步:前台代码部署到另外一台服务器。

9. ssh server name是我们在项目ssh阶段已配置好的。Sources files实际上就是针对于jenkins的workspaces来说的,是相对路径dist/*的意思就是dist文件夹的内容,我都需要。Remove prefix不需要去掉前缀,因为是文件夹,所以不需要配置。Remote diretory上传路径,这里的/是相对于ssh配置的路径来说的(ssh我配置的是/root/download)。exec command就是需要执行的命令,后台打包有讲解,可以参考编写。到这里jenkins打包成vue就成功咯。

10. `echo hello cd /root/download ###删除之前的目录 rm -rf dist/ ###解压 tar -zxvf dist.tar.gz ###删除包 rm -rf dist.tar.gz cp -r /root/project/front/dist /root/project/front/dist-bak rm -rf /root/project/front/dist cp -r dist /root/project/front/dist`

请根据以下内容完成重构,并保持段落结构:

移动脚本参考:

1. 后台项目迁移:保留2天。

2. 输入git地址、账号和密码,选择分支。执行命令:`clean package -U -Dmaven.test.skip=true`。

3. 选择ssh,选择对应的ssh。例如:`**/iopace.jar`表示jenkins的名称。

4. 如果不输入target,则会在ssh配置的远程目录下创建一个target文件夹。新增target表示不需要创建。

5. 在当前目录下执行命令:`echo prod`,增加环境变量。

6. 备份文件:`source /etc/profile`,执行命令:`\cp -f /root/project/iopace/iopace.jar /root/project/iopace/iopace.jar.bak`。

7. 移动项目:`mv -f /root/download/iopace.jar /root/project/iopace/`。

8. 启动脚本:`sh /root/iopace.sh restart`。