使用 Jenkins 自动化部署你的 Spring Boot 项目

皮康龙发布

本文所有涉及项目名的地方均为 YOUR_PROJECT,请自行修改。

在项目的根目录创建 Dockerfile 文件。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ./target/YOUR_PROJECT.jar YOUR_PROJECT.jar
ENTRYPOINT ["java","-jar","/YOUR_PROJECT.jar","&"]

在项目的 pom.xml 文件中添加打包类型和 maven 插件。

    <groupId>com.pikanglong</groupId>
    <artifactId>YOUR_PROJECT</artifactId>
    <packaging>jar</packaging>
    <version>1.0.0</version>

    <build>
        <finalName>YOUR_PROJECT</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

在 Linux 服务器上安装 Java、Maven、Git 和 Docker。

http://mirrors.jenkins.io/war-stable/latest/jenkins.war 下载 Jenkins 的 war 包,并上传到 Linux 服务器中。

启动 war 包:nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &

启动后提示「忽略输入重定向错误到标准输出端」,再次点击回车。

使用 Linux 系统 ip:8080 访问 Jenkins 管理页面。

找到管理员密码进行输入,点击继续。

cat /root/.jenkins/secrets/initialAdminPassword

进入安装插件页面,为了提高下载速度,此时我们关掉浏览器,配置国内镜像。

cd  /root/.jenkins/updates
sed -i 's/http:\/\/updates.jenkins-ci.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

重启 Jenkins,运行管理界面,点击「安装推荐的插件」。

安装插件之后,创建管理员用户名和密码。实例配置通常保持默认。

进入主界面后,点击「Manage Jenkins」,选择「Global Tool Configuration」,配置自动化部署需要的 JDK、Maven、Git 环境。不选择 Install automatically。

点击「新建 item」,输入一个任务名称,选择「Freestyle project」,源码管理选择「Git」,填写 Repository URL,增加构建步骤选择「Execute shell」,输入下文内容,修改其中的第 6 至 8 行。

#!/bin/bash
#maven打包
mvn clean package
echo 'package ok!'
echo 'build start!'
cd ./YOUR_PROJECT
service_name="YOUR_PROJECT"
service_port=8088
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $SERVER_NAME image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $SERVER_NAME image"
    #构建
    docker build -t $service_name .
    echo "build $SERVER_NAME image"
else
    echo "no exist $SERVER_NAME image,build docker"
    #构建
    docker build -t $service_name .
    echo "build $SERVER_NAME image"
fi
#查看容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $SERVER_NAME container,CID=$CID"
    #停止
    docker stop $service_name
    #删除容器
    docker rm $service_name
else
    echo "no exist $SERVER_NAME container"
fi
#启动
docker run -d --name $service_name --net=host -p $service_port:$service_port $service_name
#查看启动日志
docker logs -f  $service_name

确保 docker 已经启动起来:service docker start

点击 Name 下拉栏中的「Build Now」执行作业(任务)。

在 Build History 中,点击时间右侧的下拉栏,点击「控制台输出」。看到「Finished: SUCCESS」即表示部署成功。

如果不希望使用源码自动化部署,还可以使用控制台或 IDEA 打包。

如果使用控制台,输入 mvn clean package,在项目的 target 目录中即可找到 jar 包。

如果使用 IDEA,点击「File – Project Structure…」,选择「Artifacts」,点击「+」,选择「JAR – From modules with dependencies…」,Module 选择「YOUR_PROJECT」,Main Class 输入「com.pikanglong.YOUR_PROJECT.YOUR_PROJECTApplication」。保存后点击「Build – Build Artifacts」,点击「YOUR_PROJECT – Build」。在右侧点击「Maven」,点击「YOUR_PROJECT – Lifecycle – package」,点击运行即可成功打包。

分类: 未分类

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注