Jenkins自动化部署SpringCloud+Vue+Nuxt
一、安装java
①下载JDK:官方下载地址
上传到服务器解压,配置下面内容
配置环境变量
说明:/etc/profile文件为(linux)系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户。
vim etc/profile
export JAVA_HOME=[jdk安装路径]
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source一下可以让文件立即生效
source /etc/profile
查看是否安装成功
java -version
二、安装maven
①下载maven:官方下载地址
上传到服务器解压,配置下面内容
配置settings.xml(路径:apache-maven-3.8.5/conf)
<localRepository>/home/maven/jarstore</localRepository>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
<name>aliyun maven</name>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
本地仓库和阿里镜像源
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
配置环境变量
vim etc/profile
export MAVEN_HOME=[maven安装路径]
export PATH=$MAVEN_HOME/bin:$PATH
/home/maven/apache-maven-3.8.5
记录一下我的路径
source /etc/profile
查看是否安装成功
mvn -version
三.安装Git
方法一:官网教程
方法二:下载Git:Git仓库,安装步骤:在Linux系统上安装Git
记录一下用到的命令
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
make prefix=/home/git/git-2.35.1 all
make prefix=/home/git/git-2.35.1 install
配置环境变量
vim etc/profile
export PATH=$PATH:/usr/local/git/bin
source /etc/profile
查看是否安装成功
git --version
四、安装Docker
五、安装Jenkins
下载jenkins:官方下载
上传war包,在war包路径下执行
java -jar jenkins.war --httpPort=8080 &
#如果要在后台运行,关闭控制台还能运行,则启动命令改为:
nohup java -jar jenkins.war --httpPort=8080 &
http访问jenkins端口
加载完查看密码,记得保存一下密码,等下可能还用。
cat /root/.jenkins/secrets/initialAdminPassword
更新源
cd /root/.jenkins/updates #进入更新配置位置
输入命令修改default.json,修改完后刷新。
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
根据需求选择安装,不懂就选第一个。
配置依赖
maven
jdk
git
node.js
基本都是安装路径
六、自动化部署项目
springcloud
在每一个项目(模块)中添加文件Dockerfile
#FROM java:8
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar", "app.jar", "-Xms32M -Xmx32M -XX:PermSize=32M -XX:MaxPermSize=64M"]
在项目pom文件添加打包类型(父项目pom、要运行的jar【根据情况】)和maven插件
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
<!--在有数据库的微服务pom里面加上这个,没有就删掉-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
添加git凭证(gitee/git的用户名密码)
添加一个流水线项目
如果没有定义,就是插件没安装
在总项目目录(git拉取的目录)下添加Jenkinsfile(同名)
//git凭证ID
def git_auth = "jenkins git凭证(看下面图片)"
//git的url地址
def git_url = "git仓库"
//git分支
def branch = "master"
//镜像的版本号
def tag = "latest"
node {
stage('拉取代码') {
checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
}
//下面的内容根据需求改
stage('编译,zqy-springCloud') {
sh "mvn -f zqy-springCloud clean install"
}
stage('编译,zqy-common') {
sh "mvn -f zqy-springCloud/zqy-common clean install"
}
stage('编译,zqy-advert') {
sh "mvn -f zqy-springCloud/zqy-advert clean package dockerfile:build"
}
stage('编译,zqy-dict') {
sh "mvn -f zqy-springCloud/zqy-dict clean package dockerfile:build"
}
stage('编译,zqy-elasticsearch') {
sh "mvn -f zqy-springCloud/zqy-elasticsearch clean package dockerfile:build"
}
stage('编译,zqy-gateway') {
sh "mvn -f zqy-springCloud/zqy-gateway clean package dockerfile:build"
}
stage('编译,zqy-member') {
sh "mvn -f zqy-springCloud/zqy-member clean package dockerfile:build"
}
stage('编译,zqy-oss') {
sh "mvn -f zqy-springCloud/zqy-oss clean package dockerfile:build"
}
stage('编译,zqy-works') {
sh "mvn -f zqy-springCloud/zqy-works clean package dockerfile:build"
}
}
再创建一个自由风格的任务
imageId=`docker ps -a| grep zqy-advert | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 300M --name zqy-advert -p 7004:7004 zqy-advert
imageId=`docker ps -a| grep zqy-dict | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 300M --name zqy-dict -p 7003:7003 zqy-dict
imageId=`docker ps -a| grep zqy-elasticsearch | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 400M --name zqy-elasticsearch -p 7006:7006 zqy-elasticsearch
imageId=`docker ps -a| grep zqy-gateway | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 200M --name zqy-gateway -p 7777:7777 zqy-gateway
imageId=`docker ps -a| grep zqy-member | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 400M --name zqy-member -p 7002:7002 zqy-member
imageId=`docker ps -a| grep zqy-oss | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 300M --name zqy-oss -p 7005:7005 zqy-oss
imageId=`docker ps -a| grep zqy-works | awk '{print $1}'`
if [ "$imageId" != "" ] ; then
#停掉容器
docker stop $imageId
#删除容器
docker rm $imageId
echo "成功删除容器"
fi
docker run -di -m 400M --name zqy-works -p 7001:7001 zqy-works
到这里了可以开始构建(执行流水线任务)了。
构建如果报错,只能逐个排查解决了。
查看运行状态
docker stats
七、部署前端
安装插件
vue
新增一个自由风格的项目
其实就是让Jenkins自动化执行一些Linux命令
npm install --prefix ./zqy-admin
rm -rf ./zqy-admin/dist/*
npm run build:prod --prefix ./zqy-admin
rm -rf /home/www/zqy-admin/*
cp -rf ./zqy-admin/dist/* /home/www/zqy-admin
开始构建,构建完后后面根据路径通过nginx反向代理
nuxt
新增一个自由风格的项目
安装pm2(常用命令)
npm install pm2 -g
通过pm2运行守护线程
npm install --prefix ./zqy-front
npm run build --prefix ./zqy-front
pm2 --name=zqy-front start ./zqy-front npm -- run start --prefix ./zqy-front
pm2 start npm --name 'zqy-front' -- run start
–prefix 指定目录
–name package.json的name
开始构建,构建完后后面根据路径通过nginx反向代理,查看pm2进程
pm2 list
参考链接(感谢大佬)
SpringCloud+Jenkins+Docker持续部署积木学堂[谷粒学院]
在服务器上部署nuxt项目