使用Jenkins+docker打包部署后端服务的实现

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录安装Jenkins配置1、配置工具2、配置Publish over SSH3、编译构建4、推送jar包构建镜像

老板给了两台服务器,一台windows用来打包,一台linux用于构建镜像 + 部署,于是有了这篇笔记

安装Jenkins

下载地址:https://www.jenkins.io/download/

找到对应版本下载安装就行,装好之后在浏览器输入localhost:port(port是你安装时设置的端口),看到如下页面:

使用Jenkins+docker打包部署后端服务的实现插图

就说明装好了,然后用安装的时候设置好的账号密码登录

配置

1、配置工具

使用Jenkins+docker打包部署后端服务的实现插图1

使用Jenkins+docker打包部署后端服务的实现插图2

进入页面后首先是添加maven的配置文件:

maven配置文件

使用Jenkins+docker打包部署后端服务的实现插图3

然后配置工具:

jdk

使用Jenkins+docker打包部署后端服务的实现插图4

git

使用Jenkins+docker打包部署后端服务的实现插图5

maven

使用Jenkins+docker打包部署后端服务的实现插图6

配置好之后应用保存

2、配置Publish over SSH

这一步是为了把文件推送到远程服务器,不需要的可以跳过

首先去插件商店安装publish over ssh

使用Jenkins+docker打包部署后端服务的实现插图7

进入之后搜索publish over ssh,然后安装

安装完成后进入系统配置,拉到最下面,就可以看到publish over ssh的配置了

使用Jenkins+docker打包部署后端服务的实现插图8

使用Jenkins+docker打包部署后端服务的实现插图9

使用Jenkins+docker打包部署后端服务的实现插图10

配置完之后同样应用保存

创建流水线打包

使用Jenkins+docker打包部署后端服务的实现插图11

使用Jenkins+docker打包部署后端服务的实现插图12

配置自动触发的条件,不勾就是手动触发咯

使用Jenkins+docker打包部署后端服务的实现插图13

然后就是最重要的流水线语法了

使用Jenkins+docker打包部署后端服务的实现插图14

可以点击这里帮助生成

使用Jenkins+docker打包部署后端服务的实现插图15

使用Jenkins+docker打包部署后端服务的实现插图16

下拉框那里,如果是linux命令选择sh:xxx

window命令选择bat:xxx

git命令选择git:xxx

publishSSH选择SSH Publishers:XXX

以下是我流水线示例:

pipeline { agent any stages { stage(拉取代码) { steps { checkout([$class: GitSCM, branches: [[name: */master]], extensions: [], userRemoteConfigs: [[credentialsId: xxx, url: http://XXX.git]]]) echo 拉取代码成功 } } stage(编译构建) { steps { //输出当前jenkins的工作目录 echo “${env.WORKSPACE}” //仅打包file-service模块 bat mvn clean package -pl file-service -am echo 编译成功 } } stage(推送jar包) { steps { sshPublisher(publishers: [sshPublisherDesc( configName: ssh253, transfers: [sshTransfer( cleanRemote: false, excludes: , execCommand: cd local/file ./start.sh, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: [, ]+, remoteDirectory: file, remoteDirectorySDF: false, removePrefix: file-servicetarget, sourceFiles: file-servicetargetfile-service-1.0-SNAPSHOT.jar )], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false )]) } } } }

1、stage表示流水线每一步的名字,执行之后是这个样子:

使用Jenkins+docker打包部署后端服务的实现插图17

2、拉取代码

credentialsId:你配置的凭证id

配置凭证

使用Jenkins+docker打包部署后端服务的实现插图1

使用Jenkins+docker打包部署后端服务的实现插图18

使用Jenkins+docker打包部署后端服务的实现插图19

使用Jenkins+docker打包部署后端服务的实现插图20

使用Jenkins+docker打包部署后端服务的实现插图21

查看凭证

使用Jenkins+docker打包部署后端服务的实现插图22

url:你的git项目地址

3、编译构建

使用maven进行打包的命令而已

4、推送jar包

我是用流水线语法生成器生成的

使用Jenkins+docker打包部署后端服务的实现插图23

Source files:

要发送的源文件位置,表示当前工作空间下的file-servicetargetfile-service-1.0-SNAPSHOT.jar包,是windows上的路径写法,如果要发送整个文件,则使用/* *

Remove prefix:

去除的前缀,表示只要文件不要目录,如果不去除,那么文件复制到服务器上后会生成file-servicetarget目录

Remote directory:

远程机的路径,这个路径是以系统配置publish over ssh的Remote directory为当前文件夹的相对路径,开头不写/

Exec command文件推送完之后的命令

以上,流水线就做好了,点击“build Now”就可以打包并且推送到服务器对应位置上了

构建镜像

现在jar包已经有了,并且到了它该在的位置,需要来构建镜像并启动

安装docker

使用命令:curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun

或者:curl -sSL https://get.daocloud.io/docker | sh

编写dockerfiledocker需要使用dockerfile来构建镜像,先新建一个dockerfile文件

#jdk基础镜像 FROM anapsix/alpine-java:8_server-jre_unlimited #作者 MAINTAINER CarinaYang #执行命令,主要用来安装相关的软件 #RUN #添加文件 ADD admin-service-1.0-SNAPSHOT.jar /usr/local #使用外面的配置文件 ADD admin-service.yml /usr/local #挂载目录到容器 #VOLUME [“/data”] #开放端口 EXPOSE 9000 #启动时执行的命令 CMD [“/bin/bash”] ENV JAVA_OPTS=” -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M” #启动时执行的命令 ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar -Dspring.config.location=/usr/local/admin-service.yml /usr/local/admin-service-1.0-SNAPSHOT.jar

构建镜像这里我是直接使用脚本来写的,创建脚本start.sh

#!/bin/bash # 定义应用组名 group_name=springcloud # 定义应用名称 app_name=admin-service # 定义应用版本 app_version=1.0-SNAPSHOT echo —-停止消息服务 —- docker stop ${app_name} echo —-删除实例—- docker rm ${app_name} echo —-删除旧镜像—- docker rmi ${group_name}/${app_name}:${app_version} echo —-打包镜像—- # 打包编译docker镜像 docker build -t ${group_name}/${app_name}:${app_version} . echo —-启动镜像—- docker run -itd -p 9000:9000 –restart=always –name ${app_name} ${group_name}/${app_name}:${app_version} echo —-启动完成—-

docker run 里面的 –restart=always是为了开机自启动设置的,因为服务器每天晚上要关机,不需要可以不写

因为没有部署镜像仓库就直接启动镜像了,如果有的话要推到镜像仓库上去

启动脚本

./start.sh

当然,可以直接加到jenkins流水线“推送jar包”步骤的execCommand中,这样Jenkins推送jar包过来后就会自动启动脚本了

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容