https://www.huangdf.xyz/categories/study-notes
南风
南风
发布于 2024-09-26 / 9 阅读
1
0

docker部署jenkins控制前后端发版

前言

当前后端联调完成之后,需要将部署项目到服务器,小规模团队没有专门运维的情况下。后端可以通过idea的docker插件进行部署。前端没处理过暂时不知道,但印象中也有响应的容器部署技术。

这里主要介绍的是,推送代码到代码仓库,然后在jenkins中通过脚本去部署前后端项目。

另外,部署jenkins需要一些额外的东西:nodejs、jdk、maven环境,其他的像是docker环境就不提了,肯定都是有的了。

1、安装前置环境

1.1、安装nodejs

1.1.1、下载nodejs

下载nodejs:Node.js — Download Node.js® (nodejs.org)

1.1.2、上传并解压缩文件

#切换目录
cd xxx
#上传文件
rz node-v14.17.4-linux-x64.tar.xz
#解压缩文件
tar xf node-v14.17.4-linux-x64.tar.xz
#改名
mv node-v14.17.4/ nodejs

1.2、安装jdk

先通过java-version查看服务器有没有安装想要的jdk

java -version

java version "1.8.0_411"
Java(TM) SE Runtime Environment (build 1.8.0_411-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.411-b09, mixed mode)

如果是openjdk,就先删除旧的jdk再安装新的jdk

1.2.1、下载jdk

先下载好jdk文件,我是通过解压下载好的文件进行安装的。

下载地址:Java Downloads | Oracle

申请账号,下载对应版本的jdk即可

1.2.2、上传到服务器并解压文件

通过xftp或者安装rz指令

#切换文件夹路径到你期望的位置
cd xxx
#上传文件到服务器
rz 回车选择上传的文件
#解压文件
tar -zxvf jdk-8u411-linux-x64.tar.gz
#修改文件夹名称
mv jdk1.8.0_161/ jdk

1.3、安装maven

1.3.1、下载maven

下载地址:Maven – Download Apache Maven

1.3.2、上传并解压缩文件

#切换路径
cd xxx
#上传文件
rz 回车
#解压缩文件
tar -zxvf apache-maven-3.1.1-bin.tar.gz
#改名
mv apache-maven-3.1.1 maven

1.4、配置环境变量

#打开并编辑配置文件
vim /etc/profile
#在文件最后添加下面的内容,文件路径换成自己的路径
#java环境
JAVA_HOME=/usr/local/java/jdk8
JRE_HOME=/usr/local/java/jdk8/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

#maven环境
export MAVEN_HOME=/usr/local/maven/maven311
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

#nodejs环境
export NODEJS_HOME=/usr/local/nodejs/nodejs14
export PATH=$NODEJS_HOME/bin:$PATH

配置完成之后保存并刷新配置

source /etc/profile

至此,全部的基础配置都已经齐了

可以通过指令查看有没有安装成功

#查看java环境
java -version
#查看nodejs环境
npm -v
node -v
#查看maven环境
mvn -v

2、拉取并部署jenkins

2.1、拉取jenkins

#查询镜像
docker search jenkins
#下载镜像
docker pull jenkins/jenkins

然后是编写docker-compose.yml文件

2.2、编写compose文件并部署jenkins

version: '3'
services:
  jenkins:
    user: root
    image: jenkins/jenkins:latest
    ports:
      - "8080:8080"
      - "5000:5000"
    volumes:
      - "/jenkins/jenkins_home:/var/jenkins_home"
      - "/etc/localtime:/etc/localtime"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/usr/bin/docker:/usr/bin/docker"
      - "/etc/docker/daemon.json:/etc/docker/daemon.json"
      - "/usr/local/java/jdk1.8.0_411:/usr/local/java/jdk8"
      - "/usr/local/maven/apache-maven-3.6.3:/usr/local/maven/maven311"
      - "/usr/local/nodejs/nodejs:/usr/local/nodejs/nodejs14"
      - "/root/.ssh:/root/.ssh"
    restart: always
    container_name: jenkins

最好是新建个文件夹放不同的东西,我这里建了个jenkins的文件夹用来放文件

jenkins文件夹中再新建jenkins_home文件夹,并赋权777

chmod +777 jenkins

docker-compose.yml文件核jenkins_home放在同一个文件夹下面,方便管理

2.3、启动jenkins

指令

#启动jenkins -d后台启动
docker-compose up -d
#关闭jenkins
docker-compsoe down

3、jenkins配置

3.1、初始化jenkins

访问端口进入到jenkins

输入管理员密码管理员密码位于挂载的目录里面:/jenkins_home/secrets/inst...key

复制粘贴到页面上即可

接下来安装推荐的插件

进入到jenkins后先安装一些插件,publish over ssh、 maven integration、最好再装个汉化插件,页面换成汉字,重启服务,让插件生效

3.2、配置环境

3.2.1、配置jdk

点击系统管理->全局工具配置->找到jdk安装

填写jdk位置,也就是挂载的目录

3.2.2、配置nodejs

nodejs配置同理

3.2.3、配置maven

maven配置同理

maven多了个setting文件配置,进入界面第一个就是

3.2.4、配置服务器连接

在系统管理中找到publish over ssh这是之前安装的插件,配置好登陆的账号密码(如果是选择这个方式连接服务器,不能关闭账号密码登录服务器)

如果是通过密钥登陆的,把密钥粘进去就行了。(推荐关闭账号密码登录,采用米密钥登录,能安全些)

这里配置用户名和ip,以及一个文件路径,这个文件路径可配可不配,为了后续方便点,设置成你用来发版的文件夹就行,例如后端需要个jar包,通过脚本启动,这个目录就是后端文件的通用包,后续根据不同的文件夹区分不同项目,但是所有的项目都是在这个文件夹下面的。

配置完了点一下test connection,测试链接的,左下角显示success就成功了。

3.2.5、发版后端

3.2.5.1、新建任务

选择流水线

3.2.5.2、源码管理

输入仓库地址,以及给定一个权限足够的账号,有些账号权限不够会导致代码拉取失败。

点击添加,添加一个账户。

我这里是用的管理员账号

设定拉取的分支,可能有些项目主分支代码不是最新的,二而是最稳定的,类似的还有uat分支,当联调以及测试的时候就拉取uat分支进行发版,这里注意区分。

3.2.5.3、build steps

发版之前要做什么,这里我采取的策略是,先拉取代码,再将代码打包成jar包,通过java -jar的方式进行启动。这里有个小坑,后面会讲。

选择之前配置好的maven环境,设定好执行的目标 -P 是指按照那个配置文件打包。由于项目配置了多个环境,所以需要指定打包的环境,否则会按照默认的dev进行打包(这里分了dev\uat\prod),因为是发布到生产环境,所以选择了prod进行打包。

接下来是,把打包好的jiar包送到指定的文件夹下面。

linux是之前配置的服务器连接的别名。

然后配置一下需要执行的指令,我这里是执行了三个指令。

第一个指令是:拷贝,从jenkins的文件夹下面拷贝到我需要的文件夹下面。

第二个指令是:切换路径,切换到脚本执行的路径

第三个指令是:执行脚本,启动项目

3.2.6、发版前端

前端发版和后端发版是差不多的

这里我发版前端是采用将项目打包成一个dist文件,再将这个文件挂载到nginx上,以nginx作为前端服务器

3.2.6.1、新建任务

选择流水线模式

3.2.6.2、源码管理

同样的输入仓库地址,配置一个权限足够的账号

3.2.6.3、环境构建

选择之前配置的nodejs环境,其余的默认即可

3.2.6.4、build steps

增加构建步骤,选择执行shell

指令的内容是,一、强制install,二、以生产环境运行,三、将dist打包程tar包

再增加一个构建步骤:Send files or execute commands over SSH。把文件传到服务器指定地址

name一栏是之前定义的服务器配置

transfer set是配置传输,source files :源文件,要操作的文件

另外两个配置不用管,全部交给指令处理

指令一共五个,第一个mv ,把dist压缩包拷贝到指定目录,二、切换文件路径到压缩包对应路径,三、解压缩文件,四、删除压缩包,五、重启docker(可有可无)

3.2.6.5、构建后操作

点击添加构建后操作步骤,选择当完成构建后删除工作空间,解除文件占用服务器空间。

至此,前端发版完成


评论